{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:05:47",
  "duplicates" : [ {
    "blockSize" : 269,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/commons/geometry/VisvalingamWhyattSimplificationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 433,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 419,
      "startLine" : 39,
      "endLine" : 308,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 289
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/VertexSamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 432,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 398,
      "startLine" : 158,
      "endLine" : 427,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 371
    } ]
  }, {
    "blockSize" : 74,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/interval/DoubleSpanTest.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 62,
      "endLine" : 148,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 113
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/interval/IntSpanTest.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 52,
      "endLine" : 138,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 105
    } ]
  }, {
    "blockSize" : 70,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/commons/geometry/VisvalingamWhyattSimplificationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 433,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 419,
      "startLine" : 346,
      "endLine" : 415,
      "cleanedStartLine" : 322,
      "cleanedEndLine" : 391
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/VertexSamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 432,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 398,
      "startLine" : 356,
      "endLine" : 425,
      "cleanedStartLine" : 300,
      "cleanedEndLine" : 369
    } ]
  }, {
    "blockSize" : 70,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/commons/geometry/VisvalingamWhyattSimplificationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 433,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 419,
      "startLine" : 237,
      "endLine" : 306,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 287
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/commons/geometry/VisvalingamWhyattSimplificationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 433,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 419,
      "startLine" : 346,
      "endLine" : 415,
      "cleanedStartLine" : 322,
      "cleanedEndLine" : 391
    } ]
  }, {
    "blockSize" : 51,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 263,
      "endLine" : 316,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 287
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 270,
      "endLine" : 323,
      "cleanedStartLine" : 242,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 51,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 487,
      "endLine" : 540,
      "cleanedStartLine" : 455,
      "cleanedEndLine" : 505
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 494,
      "endLine" : 547,
      "cleanedStartLine" : 460,
      "cleanedEndLine" : 510
    } ]
  }, {
    "blockSize" : 51,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 375,
      "endLine" : 428,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 396
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 382,
      "endLine" : 435,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 401
    } ]
  }, {
    "blockSize" : 51,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 151,
      "endLine" : 204,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 178
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 158,
      "endLine" : 211,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 47,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 17,
      "endLine" : 75,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dfStat.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 17,
      "endLine" : 75,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 46,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 415,
      "endLine" : 464,
      "cleanedStartLine" : 294,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 481,
      "endLine" : 531,
      "cleanedStartLine" : 350,
      "cleanedEndLine" : 395
    } ]
  }, {
    "blockSize" : 45,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 481,
      "endLine" : 527,
      "cleanedStartLine" : 350,
      "cleanedEndLine" : 394
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 548,
      "endLine" : 594,
      "cleanedStartLine" : 406,
      "cleanedEndLine" : 450
    } ]
  }, {
    "blockSize" : 45,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 415,
      "endLine" : 461,
      "cleanedStartLine" : 294,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 548,
      "endLine" : 594,
      "cleanedStartLine" : 406,
      "cleanedEndLine" : 450
    } ]
  }, {
    "blockSize" : 37,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/encoding/DataImageJvmTest.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 14,
      "endLine" : 55,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "commons/src/nativeTest/kotlin/org/jetbrains/letsPlot/commons/encoding/DataImageNativeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 14,
      "endLine" : 56,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 37,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/encoding/PngTest.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 14,
      "endLine" : 56,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "commons/src/nativeTest/kotlin/org/jetbrains/letsPlot/commons/encoding/DataImageNativeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 14,
      "endLine" : 56,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 37,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/encoding/PngTest.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 14,
      "endLine" : 56,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/encoding/DataImageJvmTest.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 14,
      "endLine" : 55,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 36,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/org/jetbraibs/letsPlot/visualtesting/MagickFontManager.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 27,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 26,
      "endLine" : 61,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 32,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 61,
      "endLine" : 117,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 56,
      "endLine" : 110,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 668,
      "endLine" : 697,
      "cleanedStartLine" : 561,
      "cleanedEndLine" : 590
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 717,
      "endLine" : 746,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 635
    } ]
  }, {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 267,
      "endLine" : 299,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 491,
      "endLine" : 523,
      "cleanedStartLine" : 457,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 267,
      "endLine" : 299,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 379,
      "endLine" : 411,
      "cleanedStartLine" : 348,
      "cleanedEndLine" : 377
    } ]
  }, {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 155,
      "endLine" : 187,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 491,
      "endLine" : 523,
      "cleanedStartLine" : 457,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 155,
      "endLine" : 187,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 379,
      "endLine" : 411,
      "cleanedStartLine" : 348,
      "cleanedEndLine" : 377
    } ]
  }, {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 155,
      "endLine" : 187,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 267,
      "endLine" : 299,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 379,
      "endLine" : 411,
      "cleanedStartLine" : 348,
      "cleanedEndLine" : 377
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 491,
      "endLine" : 523,
      "cleanedStartLine" : 457,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 29,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/platf/w3c/jsObject/JsDynamicToAnyTest.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 65,
      "endLine" : 95,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/platf/w3c/jsObject/JsObjectToMapTest.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 39,
      "endLine" : 69,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 263,
      "endLine" : 292,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 382,
      "endLine" : 411,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 377
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 151,
      "endLine" : 180,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 263,
      "endLine" : 292,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 263
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 263,
      "endLine" : 292,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 494,
      "endLine" : 523,
      "cleanedStartLine" : 460,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 263,
      "endLine" : 292,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 375,
      "endLine" : 404,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 372
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 263,
      "endLine" : 292,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 487,
      "endLine" : 516,
      "cleanedStartLine" : 455,
      "cleanedEndLine" : 481
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 375,
      "endLine" : 404,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 372
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 487,
      "endLine" : 516,
      "cleanedStartLine" : 455,
      "cleanedEndLine" : 481
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 487,
      "endLine" : 516,
      "cleanedStartLine" : 455,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 270,
      "endLine" : 299,
      "cleanedStartLine" : 242,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 487,
      "endLine" : 516,
      "cleanedStartLine" : 455,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 158,
      "endLine" : 187,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 375,
      "endLine" : 404,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 372
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 158,
      "endLine" : 187,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 375,
      "endLine" : 404,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 372
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 270,
      "endLine" : 299,
      "cleanedStartLine" : 242,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 487,
      "endLine" : 516,
      "cleanedStartLine" : 455,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 382,
      "endLine" : 411,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 377
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 375,
      "endLine" : 404,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 372
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 494,
      "endLine" : 523,
      "cleanedStartLine" : 460,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 263,
      "endLine" : 292,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 158,
      "endLine" : 187,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 151,
      "endLine" : 180,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 270,
      "endLine" : 299,
      "cleanedStartLine" : 242,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 151,
      "endLine" : 180,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 382,
      "endLine" : 411,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 377
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 151,
      "endLine" : 180,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 494,
      "endLine" : 523,
      "cleanedStartLine" : 460,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStat.kt",
        "extension" : "kt",
        "linesOfCode" : 148,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 118,
      "startLine" : 81,
      "endLine" : 124,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStatInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 76,
      "startLine" : 48,
      "endLine" : 90,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 151,
      "endLine" : 180,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 487,
      "endLine" : 516,
      "cleanedStartLine" : 455,
      "cleanedEndLine" : 481
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 151,
      "endLine" : 180,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 375,
      "endLine" : 404,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 372
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 443,
      "endLine" : 469,
      "cleanedStartLine" : 353,
      "cleanedEndLine" : 379
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 495,
      "endLine" : 521,
      "cleanedStartLine" : 399,
      "cleanedEndLine" : 425
    } ]
  }, {
    "blockSize" : 26,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 42,
      "endLine" : 68,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 50,
      "endLine" : 75,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 26,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 638,
      "endLine" : 666,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 559
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 686,
      "endLine" : 715,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 604
    } ]
  }, {
    "blockSize" : 25,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 60,
      "endLine" : 88,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 92,
      "endLine" : 121,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 164,
      "endLine" : 187,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 157,
      "endLine" : 180,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 493,
      "endLine" : 516,
      "cleanedStartLine" : 458,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/composite/CompositeFigureGridAlignmentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 18,
      "endLine" : 41,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/composite/CompositeFigureGridLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 13,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 500,
      "endLine" : 523,
      "cleanedStartLine" : 463,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 400,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 323,
      "startLine" : 305,
      "endLine" : 331,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/subPlots/CompositeFigureSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 153,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 101,
      "endLine" : 127,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 276,
      "endLine" : 299,
      "cleanedStartLine" : 245,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 388,
      "endLine" : 411,
      "cleanedStartLine" : 354,
      "cleanedEndLine" : 377
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgCircleElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 59,
      "endLine" : 104,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 69,
      "endLine" : 114,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 164,
      "endLine" : 187,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgEllipseElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 110,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 69,
      "endLine" : 114,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 276,
      "endLine" : 299,
      "cleanedStartLine" : 245,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgCircleElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 59,
      "endLine" : 104,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgEllipseElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 110,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 493,
      "endLine" : 516,
      "cleanedStartLine" : 458,
      "cleanedEndLine" : 481
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 381,
      "endLine" : 404,
      "cleanedStartLine" : 349,
      "cleanedEndLine" : 372
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 269,
      "endLine" : 292,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 263
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 388,
      "endLine" : 411,
      "cleanedStartLine" : 354,
      "cleanedEndLine" : 377
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 157,
      "endLine" : 180,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeUTCTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 18,
      "endLine" : 49,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalDateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 23,
      "endLine" : 54,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgCircleElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 59,
      "endLine" : 104,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgLineElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 110,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 500,
      "endLine" : 523,
      "cleanedStartLine" : 463,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgEllipseElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 110,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgLineElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 110,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 269,
      "endLine" : 292,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgLineElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 110,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 69,
      "endLine" : 114,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 381,
      "endLine" : 404,
      "cleanedStartLine" : 349,
      "cleanedEndLine" : 372
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 52,
      "endLine" : 75,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/component/DefaultSwingContextCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 11,
      "endLine" : 42,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/plot/component/DefaultSwingContextBatik.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 12,
      "endLine" : 43,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 47,
      "endLine" : 69,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 448,
      "endLine" : 470,
      "cleanedStartLine" : 369,
      "cleanedEndLine" : 391
    } ]
  }, {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 791,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 141
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9183,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1399
    } ]
  }, {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 141,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 101,
      "startLine" : 141,
      "endLine" : 172,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 61,
      "endLine" : 92,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 22,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 114,
      "endLine" : 135,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 114
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 151,
      "endLine" : 172,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 149
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 166,
      "endLine" : 186,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 502,
      "endLine" : 522,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 485
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 89,
      "endLine" : 109,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 119,
      "endLine" : 139,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 29,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 154,
      "endLine" : 177,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 148
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 8008,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1162
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8444,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1257
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 47,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 61,
      "endLine" : 82,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 188,
      "endLine" : 209,
      "cleanedStartLine" : 156,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStat.kt",
        "extension" : "kt",
        "linesOfCode" : 102,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 87,
      "startLine" : 12,
      "endLine" : 32,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 11,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 495,
      "endLine" : 515,
      "cleanedStartLine" : 460,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 54,
      "endLine" : 74,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 278,
      "endLine" : 298,
      "cleanedStartLine" : 247,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 200,
      "endLine" : 224,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 250,
      "endLine" : 274,
      "cleanedStartLine" : 184,
      "cleanedEndLine" : 204
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 390,
      "endLine" : 410,
      "cleanedStartLine" : 356,
      "cleanedEndLine" : 376
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 271,
      "endLine" : 291,
      "cleanedStartLine" : 242,
      "cleanedEndLine" : 262
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 93,
      "endLine" : 114,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 188,
      "endLine" : 209,
      "cleanedStartLine" : 156,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 383,
      "endLine" : 403,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 371
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 159,
      "endLine" : 179,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 153
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 651,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 602
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotAssemblerPlotContextTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 58,
      "endLine" : 77,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotAssemblerPlotContextTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 89,
      "endLine" : 108,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgEllipseElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 102,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 48,
      "endLine" : 85,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 33,
      "endLine" : 56,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 97,
      "endLine" : 121,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 33,
      "endLine" : 56,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 65,
      "endLine" : 88,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 439,
      "endLine" : 459,
      "cleanedStartLine" : 359,
      "cleanedEndLine" : 378
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 735,
      "endLine" : 755,
      "cleanedStartLine" : 624,
      "cleanedEndLine" : 643
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgLineElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 65,
      "endLine" : 102,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 48,
      "endLine" : 85,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 48,
      "endLine" : 85,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 69,
      "endLine" : 106,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 45,
      "endLine" : 68,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 83,
      "endLine" : 106,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgCircleElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 59,
      "endLine" : 96,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 48,
      "endLine" : 85,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 432,
      "endLine" : 450,
      "cleanedStartLine" : 352,
      "cleanedEndLine" : 370
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 631,
      "endLine" : 649,
      "cleanedStartLine" : 527,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/Properties.kt",
        "extension" : "kt",
        "linesOfCode" : 606,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 422,
      "startLine" : 171,
      "endLine" : 200,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/Properties.kt",
        "extension" : "kt",
        "linesOfCode" : 606,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 422,
      "startLine" : 236,
      "endLine" : 265,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 150
    } ]
  }, {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTSpanElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 65,
      "endLine" : 101,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextElement.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 92,
      "endLine" : 128,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 764,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 115
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9179,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1395
    } ]
  }, {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQ2LineStat.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 17,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQ2Stat.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 15,
      "endLine" : 40,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 764,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 115
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 787,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 709,
      "endLine" : 726,
      "cleanedStartLine" : 573,
      "cleanedEndLine" : 590
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 733,
      "endLine" : 750,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 16,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 18,
      "endLine" : 38,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 165,
      "endLine" : 182,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 155
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 181,
      "endLine" : 198,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 171
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 18,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 108,
      "endLine" : 125,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 141,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 101,
      "startLine" : 102,
      "endLine" : 125,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasTestBase.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 38,
      "endLine" : 61,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 99,
      "endLine" : 116,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 94
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 135,
      "endLine" : 152,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/markdown/EmphasisWithAsteriskTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 122,
      "startLine" : 58,
      "endLine" : 80,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/markdown/EmphasisWithUnderscoreTest.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 34,
      "endLine" : 56,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 190,
      "endLine" : 208,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 285,
      "endLine" : 303,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 262
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 67,
      "endLine" : 84,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 135,
      "endLine" : 152,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 33,
      "endLine" : 50,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 192,
      "endLine" : 209,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7742,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8212,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1202
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/values/ThemeOption.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 235,
      "startLine" : 250,
      "endLine" : 266,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 203
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/values/ThemeOption.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 235,
      "startLine" : 284,
      "endLine" : 300,
      "cleanedStartLine" : 219,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/component/PlotPanelFigureModel.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 34,
      "endLine" : 63,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/commonMain/kotlin/org/jetbrains/letsPlot/raster/view/PlotFigureModel.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 17,
      "endLine" : 46,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 89,
      "endLine" : 120,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 86,
      "endLine" : 117,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 89,
      "endLine" : 120,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 80,
      "endLine" : 110,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 35,
      "endLine" : 52,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 135,
      "endLine" : 152,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 69,
      "endLine" : 87,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHuePaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 29,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 54,
      "endLine" : 70,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 191,
      "endLine" : 207,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 69,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 431,
      "endLine" : 446,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 379
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 453,
      "endLine" : 468,
      "cleanedStartLine" : 385,
      "cleanedEndLine" : 400
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 45,
      "endLine" : 64,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 200,
      "endLine" : 219,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 45,
      "endLine" : 64,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 250,
      "endLine" : 269,
      "cleanedStartLine" : 184,
      "cleanedEndLine" : 199
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 87,
      "endLine" : 102,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 107,
      "endLine" : 122,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 83,
      "endLine" : 102,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 200,
      "endLine" : 219,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 135,
      "endLine" : 150,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 194,
      "endLine" : 209,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 83,
      "endLine" : 102,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 250,
      "endLine" : 269,
      "cleanedStartLine" : 184,
      "cleanedEndLine" : 199
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 572,
      "endLine" : 587,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9140,
      "endLine" : 9155,
      "cleanedStartLine" : 1360,
      "cleanedEndLine" : 1375
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 593,
      "endLine" : 608,
      "cleanedStartLine" : 486,
      "cleanedEndLine" : 501
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 671,
      "endLine" : 686,
      "cleanedStartLine" : 560,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 160,
      "endLine" : 177,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 138
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 214,
      "endLine" : 231,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 186
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 104,
      "endLine" : 118,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 134,
      "endLine" : 148,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 117
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 568,
      "endLine" : 582,
      "cleanedStartLine" : 463,
      "cleanedEndLine" : 477
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 619,
      "endLine" : 633,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 526
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 191,
      "endLine" : 211,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 162
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 226,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 186
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 34,
      "endLine" : 54,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 104,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 34,
      "endLine" : 53,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 647,
      "endLine" : 662,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 548
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 669,
      "endLine" : 684,
      "cleanedStartLine" : 552,
      "cleanedEndLine" : 566
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 31,
      "endLine" : 48,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalDateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 50,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 196,
      "endLine" : 211,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 377,
      "endLine" : 391,
      "cleanedStartLine" : 302,
      "cleanedEndLine" : 316
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 69,
      "endLine" : 83,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 146,
      "endLine" : 160,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 223,
      "endLine" : 239,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 202
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 319,
      "endLine" : 335,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 37,
      "endLine" : 55,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 127,
      "endLine" : 145,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 108
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 31,
      "endLine" : 48,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeUTCTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 45,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 219,
      "endLine" : 234,
      "cleanedStartLine" : 159,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 261,
      "endLine" : 276,
      "cleanedStartLine" : 195,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 65,
      "endLine" : 87,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 56,
      "endLine" : 78,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 11,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 10,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/facet/FixedScalesTilesLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 21,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/facet/FreeScalesTilesLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 20,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 52,
      "endLine" : 77,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTSpanElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 65,
      "endLine" : 90,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/front/tiles/PlotTilesConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 304,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 86,
      "endLine" : 100,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/front/tiles/PlotTilesConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 304,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 133,
      "endLine" : 147,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 74,
      "endLine" : 88,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 191,
      "endLine" : 204,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 156
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 74,
      "endLine" : 88,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 257,
      "endLine" : 271,
      "cleanedStartLine" : 193,
      "cleanedEndLine" : 206
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgEllipseElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 69,
      "endLine" : 94,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextElement.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 92,
      "endLine" : 117,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 145,
      "startLine" : 96,
      "endLine" : 111,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStat.kt",
        "extension" : "kt",
        "linesOfCode" : 300,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 100,
      "endLine" : 115,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 73
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 350,
      "endLine" : 419,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 504,
      "endLine" : 573,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 52,
      "endLine" : 77,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextElement.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 92,
      "endLine" : 117,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgCircleElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 63,
      "endLine" : 88,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTSpanElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 65,
      "endLine" : 90,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 377,
      "endLine" : 390,
      "cleanedStartLine" : 302,
      "cleanedEndLine" : 315
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 446,
      "endLine" : 460,
      "cleanedStartLine" : 366,
      "cleanedEndLine" : 379
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 182,
      "endLine" : 195,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 170
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 214,
      "endLine" : 227,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 201
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 73,
      "endLine" : 98,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextElement.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 92,
      "endLine" : 117,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 65,
      "endLine" : 87,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 61,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 73,
      "endLine" : 98,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTSpanElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 65,
      "endLine" : 90,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgLineElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 69,
      "endLine" : 94,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTSpanElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 65,
      "endLine" : 90,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 273,
      "endLine" : 342,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 581,
      "endLine" : 650,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 273,
      "endLine" : 342,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 427,
      "endLine" : 496,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 427,
      "endLine" : 496,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 581,
      "endLine" : 650,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 69,
      "endLine" : 82,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 214,
      "endLine" : 227,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 201
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 69,
      "endLine" : 82,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 182,
      "endLine" : 195,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 170
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 196,
      "endLine" : 210,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 446,
      "endLine" : 460,
      "cleanedStartLine" : 366,
      "cleanedEndLine" : 379
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 196,
      "endLine" : 265,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 350,
      "endLine" : 419,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/data/Count2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 112,
      "startLine" : 20,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/data/Count2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 112,
      "startLine" : 45,
      "endLine" : 59,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathHoverXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 61,
      "endLine" : 82,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathNearestXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 61,
      "endLine" : 82,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 732,
      "endLine" : 746,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 192
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 901,
      "endLine" : 915,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 236
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 40,
      "endLine" : 53,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 778,
      "endLine" : 791,
      "cleanedStartLine" : 700,
      "cleanedEndLine" : 713
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgCircleElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 63,
      "endLine" : 88,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextElement.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 92,
      "endLine" : 117,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 183,
      "endLine" : 198,
      "cleanedStartLine" : 144,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 233,
      "endLine" : 248,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 201
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 196,
      "endLine" : 265,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 504,
      "endLine" : 573,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 54,
      "endLine" : 67,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 74,
      "endLine" : 88,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 135,
      "endLine" : 151,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 648,
      "endLine" : 664,
      "cleanedStartLine" : 522,
      "cleanedEndLine" : 535
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgLineElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 69,
      "endLine" : 94,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextElement.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 92,
      "endLine" : 117,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 191,
      "endLine" : 204,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 257,
      "endLine" : 271,
      "cleanedStartLine" : 193,
      "cleanedEndLine" : 206
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 146,
      "endLine" : 159,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 136
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 182,
      "endLine" : 195,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 170
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 146,
      "endLine" : 159,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 136
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 214,
      "endLine" : 227,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 201
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 357,
      "endLine" : 370,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 327
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 394,
      "endLine" : 407,
      "cleanedStartLine" : 348,
      "cleanedEndLine" : 361
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 52,
      "endLine" : 72,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeUTCTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 49,
      "endLine" : 68,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1159,
      "endLine" : 1303,
      "cleanedStartLine" : 196,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4397,
      "endLine" : 4561,
      "cleanedStartLine" : 670,
      "cleanedEndLine" : 683
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgEllipseElement.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 69,
      "endLine" : 94,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTSpanElement.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 65,
      "endLine" : 90,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 54,
      "endLine" : 67,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ScaleBreaks.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 238,
      "startLine" : 257,
      "endLine" : 271,
      "cleanedStartLine" : 193,
      "cleanedEndLine" : 206
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1086,
      "endLine" : 1099,
      "cleanedStartLine" : 268,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1185,
      "endLine" : 1198,
      "cleanedStartLine" : 293,
      "cleanedEndLine" : 305
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/math3/Gamma.kt",
        "extension" : "kt",
        "linesOfCode" : 211,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 187,
      "startLine" : 127,
      "endLine" : 139,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/math3/Gamma.kt",
        "extension" : "kt",
        "linesOfCode" : 211,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 187,
      "startLine" : 197,
      "endLine" : 209,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 180,
      "endLine" : 192,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 142
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 15,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 99,
      "endLine" : 120,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-idea-plugin/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 198,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 250,
      "endLine" : 271,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 56,
      "endLine" : 77,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-idea-plugin/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 198,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 222,
      "endLine" : 244,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 104,
      "endLine" : 116,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 164,
      "endLine" : 176,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 178,
      "endLine" : 191,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 137
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 264,
      "endLine" : 277,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 210
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 8000,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1154
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8208,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1198
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BaseYDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 15,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityRidgesStat.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 15,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 65,
      "endLine" : 86,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-idea-plugin/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 198,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 222,
      "endLine" : 244,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7738,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8436,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1249
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 377,
      "endLine" : 389,
      "cleanedStartLine" : 302,
      "cleanedEndLine" : 314
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 742,
      "endLine" : 755,
      "cleanedStartLine" : 631,
      "cleanedEndLine" : 643
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7738,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 8000,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1154
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/OrderOptionsConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 274,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 231,
      "startLine" : 143,
      "endLine" : 159,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/OrderOptionsConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 274,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 231,
      "startLine" : 173,
      "endLine" : 189,
      "cleanedStartLine" : 108,
      "cleanedEndLine" : 120
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 96,
      "endLine" : 114,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 134,
      "endLine" : 152,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 96,
      "endLine" : 117,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-idea-plugin/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 198,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 250,
      "endLine" : 271,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 68,
      "endLine" : 80,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 678,
      "endLine" : 690,
      "cleanedStartLine" : 615,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 89,
      "endLine" : 110,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-idea-plugin/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 198,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 250,
      "endLine" : 271,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 61,
      "endLine" : 83,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-idea-plugin/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 198,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 222,
      "endLine" : 244,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 196,
      "endLine" : 209,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 162
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 742,
      "endLine" : 755,
      "cleanedStartLine" : 631,
      "cleanedEndLine" : 643
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/FillPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 13,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/StackPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 93,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 13,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3054,
      "endLine" : 3066,
      "cleanedStartLine" : 533,
      "cleanedEndLine" : 545
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3159,
      "endLine" : 3171,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8208,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1198
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8436,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1249
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 37,
      "endLine" : 51,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 76,
      "endLine" : 91,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 76,
      "endLine" : 91,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 127,
      "endLine" : 141,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 134,
      "endLine" : 146,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 115
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 164,
      "endLine" : 176,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/component/PlotPanelToolbar.kt",
        "extension" : "kt",
        "linesOfCode" : 199,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 160,
      "startLine" : 20,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/sandbox/SandboxToolbarAwt.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 65,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 24,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 54,
      "endLine" : 66,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 76,
      "endLine" : 89,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 159,
      "endLine" : 171,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 132
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 264,
      "endLine" : 276,
      "cleanedStartLine" : 211,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 302,
      "endLine" : 317,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 257
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2734,
      "endLine" : 2745,
      "cleanedStartLine" : 482,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2834,
      "endLine" : 2845,
      "cleanedStartLine" : 497,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 57,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 59,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 52,
      "endLine" : 63,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgDocUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 123,
      "endLine" : 134,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 72,
      "endLine" : 93,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 113,
      "endLine" : 134,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPathsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 32,
      "endLine" : 46,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPathsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 57,
      "endLine" : 71,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/sizing/SizingPolicyContainerIndependenceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 31,
      "endLine" : 44,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/sizing/SizingPolicyContainerIndependenceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 55,
      "endLine" : 68,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 178,
      "endLine" : 190,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 136
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 222,
      "endLine" : 234,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 183,
      "endLine" : 196,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 209,
      "endLine" : 222,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 393,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 290,
      "startLine" : 378,
      "endLine" : 393,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 239
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 61,
      "endLine" : 79,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 127,
      "endLine" : 139,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 159,
      "endLine" : 171,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 132
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 124,
      "endLine" : 135,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 114
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 197,
      "endLine" : 208,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 124,
      "endLine" : 135,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 114
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 229,
      "endLine" : 240,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 79,
      "endLine" : 93,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 57,
      "endLine" : 72,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 225,
      "endLine" : 240,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 141
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 251,
      "endLine" : 266,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 157
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 177,
      "endLine" : 189,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 149
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 318,
      "endLine" : 330,
      "cleanedStartLine" : 258,
      "cleanedEndLine" : 269
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStat.kt",
        "extension" : "kt",
        "linesOfCode" : 148,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 118,
      "startLine" : 196,
      "endLine" : 212,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 113
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStatInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 76,
      "startLine" : 111,
      "endLine" : 127,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1878,
      "endLine" : 1889,
      "cleanedStartLine" : 329,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1966,
      "endLine" : 1977,
      "cleanedStartLine" : 344,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 393,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 290,
      "startLine" : 378,
      "endLine" : 393,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 239
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 65,
      "endLine" : 83,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 173,
      "endLine" : 188,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 199,
      "endLine" : 214,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 173,
      "endLine" : 188,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 225,
      "endLine" : 240,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 173,
      "endLine" : 188,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 251,
      "endLine" : 266,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 157
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 161,
      "endLine" : 172,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 149
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 229,
      "endLine" : 240,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 772,
      "endLine" : 785,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 641
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 812,
      "endLine" : 825,
      "cleanedStartLine" : 666,
      "cleanedEndLine" : 677
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 27,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 765,
      "endLine" : 776,
      "cleanedStartLine" : 687,
      "cleanedEndLine" : 698
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/LinearBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 150,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 29,
      "endLine" : 42,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/LinearBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 150,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 45,
      "endLine" : 58,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/PieAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 229,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 188,
      "startLine" : 221,
      "endLine" : 232,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 160
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/StatAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 89,
      "endLine" : 101,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 161,
      "endLine" : 172,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 149
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 197,
      "endLine" : 208,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 638,
      "endLine" : 649,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 545
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 735,
      "endLine" : 746,
      "cleanedStartLine" : 624,
      "cleanedEndLine" : 635
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/PlotImageExport.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 20,
      "endLine" : 34,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/core/plot/export/PlotImageExport.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 17,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 199,
      "endLine" : 214,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 251,
      "endLine" : 266,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 157
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 199,
      "endLine" : 214,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 225,
      "endLine" : 240,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 282,
      "endLine" : 293,
      "cleanedStartLine" : 222,
      "cleanedEndLine" : 233
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 299,
      "endLine" : 310,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 250
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3237,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 483
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7036,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1034
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 38,
      "endLine" : 49,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 393,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 290,
      "startLine" : 378,
      "endLine" : 393,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 239
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-idea-plugin/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 198,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 222,
      "endLine" : 240,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 197,
      "endLine" : 208,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 183
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 229,
      "endLine" : 240,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1498,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 251
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1694,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 275
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 351,
      "endLine" : 363,
      "cleanedStartLine" : 271,
      "cleanedEndLine" : 282
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 391,
      "endLine" : 403,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 315
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 97,
      "endLine" : 108,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 181,
      "endLine" : 192,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3060,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 465
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7036,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1034
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 439,
      "endLine" : 450,
      "cleanedStartLine" : 359,
      "cleanedEndLine" : 370
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 686,
      "endLine" : 697,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 590
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 414,
      "endLine" : 425,
      "cleanedStartLine" : 320,
      "cleanedEndLine" : 331
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 438,
      "endLine" : 449,
      "cleanedStartLine" : 342,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 393,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 290,
      "startLine" : 378,
      "endLine" : 393,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 239
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 56,
      "endLine" : 74,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7747,
      "endLine" : 7758,
      "cleanedStartLine" : 1128,
      "cleanedEndLine" : 1139
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8225,
      "endLine" : 8236,
      "cleanedStartLine" : 1214,
      "cleanedEndLine" : 1225
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryBinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 21,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDotplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 21,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3060,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 465
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3237,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 483
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 37,
      "endLine" : 49,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 159,
      "endLine" : 171,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 132
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/CompositeFigureConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 213,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 152,
      "endLine" : 162,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 92
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/CompositeFigureConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 213,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 165,
      "endLine" : 175,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 105
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 764,
      "endLine" : 777,
      "cleanedStartLine" : 602,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 804,
      "endLine" : 816,
      "cleanedStartLine" : 631,
      "cleanedEndLine" : 641
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 82,
      "endLine" : 94,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 120,
      "endLine" : 132,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 381,
      "endLine" : 391,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 265
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 394,
      "endLine" : 404,
      "cleanedStartLine" : 268,
      "cleanedEndLine" : 278
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 844,
      "endLine" : 854,
      "cleanedStartLine" : 693,
      "cleanedEndLine" : 703
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 866,
      "endLine" : 876,
      "cleanedStartLine" : 713,
      "cleanedEndLine" : 723
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 62,
      "endLine" : 72,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 692,
      "endLine" : 705,
      "cleanedStartLine" : 571,
      "cleanedEndLine" : 581
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 708,
      "endLine" : 721,
      "cleanedStartLine" : 584,
      "cleanedEndLine" : 594
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 692,
      "endLine" : 705,
      "cleanedStartLine" : 571,
      "cleanedEndLine" : 581
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 747,
      "endLine" : 760,
      "cleanedStartLine" : 617,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 692,
      "endLine" : 705,
      "cleanedStartLine" : 571,
      "cleanedEndLine" : 581
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 763,
      "endLine" : 776,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 640
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 68,
      "endLine" : 78,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 135,
      "endLine" : 145,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 112
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 85,
      "endLine" : 95,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 177,
      "endLine" : 187,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1265,
      "endLine" : 1277,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 324
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1344,
      "endLine" : 1356,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 343
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 23,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 46,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 410,
      "endLine" : 424,
      "cleanedStartLine" : 306,
      "cleanedEndLine" : 316
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 431,
      "endLine" : 445,
      "cleanedStartLine" : 323,
      "cleanedEndLine" : 333
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 410,
      "endLine" : 424,
      "cleanedStartLine" : 306,
      "cleanedEndLine" : 316
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 457,
      "endLine" : 471,
      "cleanedStartLine" : 345,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 85,
      "endLine" : 95,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 198,
      "endLine" : 208,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1315,
      "endLine" : 1325,
      "cleanedStartLine" : 220,
      "cleanedEndLine" : 230
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4574,
      "endLine" : 4584,
      "cleanedStartLine" : 695,
      "cleanedEndLine" : 705
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 85,
      "endLine" : 95,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 125,
      "endLine" : 135,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 85,
      "endLine" : 95,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 162,
      "endLine" : 172,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 149
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_jupyter_notebook_ctx.py",
        "extension" : "py",
        "linesOfCode" : 48,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_static_html_page_ctx.py",
        "extension" : "py",
        "linesOfCode" : 42,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 24,
      "endLine" : 35,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotOutlierStat.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 19,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 67,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 85,
      "endLine" : 95,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 230,
      "endLine" : 240,
      "cleanedStartLine" : 204,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/chart/path/ArrowSpec.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 14,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/ArrowSpec.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotOutlierStat.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 17,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryStat.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 18,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 568,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2567,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 405
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4902,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 752
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6362,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 936
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 413,
      "endLine" : 423,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 357
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 449,
      "endLine" : 459,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 391
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2541,
      "endLine" : 2638,
      "cleanedStartLine" : 464,
      "cleanedEndLine" : 474
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2851,
      "endLine" : 2952,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 167,
      "endLine" : 177,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 182,
      "endLine" : 192,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStat.kt",
        "extension" : "kt",
        "linesOfCode" : 148,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 118,
      "startLine" : 128,
      "endLine" : 143,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStatInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 76,
      "startLine" : 94,
      "endLine" : 109,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 591,
      "endLine" : 603,
      "cleanedStartLine" : 474,
      "cleanedEndLine" : 484
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 612,
      "endLine" : 624,
      "cleanedStartLine" : 493,
      "cleanedEndLine" : 503
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/BatikTargetPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 104,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 104,
      "endLine" : 115,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 107,
      "endLine" : 119,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 14,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 15,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 219,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 165,
      "endLine" : 175,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 131
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 219,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 221,
      "endLine" : 231,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 175
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 167,
      "endLine" : 177,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 17,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 301,
      "endLine" : 311,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 247
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 327,
      "endLine" : 337,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 271
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 21,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 21,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 87,
      "endLine" : 98,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 117,
      "endLine" : 128,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6245,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 917
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6496,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 956
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/livemap/LayerConverter.kt",
        "extension" : "kt",
        "linesOfCode" : 249,
        "components" : [ "primary::plot-livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 163,
      "endLine" : 173,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "plot-livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/livemap/LayerConverter.kt",
        "extension" : "kt",
        "linesOfCode" : 249,
        "components" : [ "primary::plot-livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 179,
      "endLine" : 189,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 135
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1693,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 274
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2870,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 444
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 855,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 167
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 935,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jsMain/kotlin/org/jetbrains/letsPlot/commons/logging/PortableLogging.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 6,
      "endLine" : 25,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmMain/kotlin/org/jetbrains/letsPlot/commons/logging/PortableLogging.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 6,
      "endLine" : 25,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 137,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 60,
      "endLine" : 72,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 137,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 140,
      "endLine" : 152,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_isolated_webview_panel_ctx.py",
        "extension" : "py",
        "linesOfCode" : 53,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 24,
      "endLine" : 35,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_jupyter_notebook_ctx.py",
        "extension" : "py",
        "linesOfCode" : 48,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 101,
      "endLine" : 111,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 488,
      "endLine" : 498,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 392
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4902,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 752
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9008,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1339
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 708,
      "endLine" : 721,
      "cleanedStartLine" : 584,
      "cleanedEndLine" : 594
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 763,
      "endLine" : 776,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 640
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 708,
      "endLine" : 721,
      "cleanedStartLine" : 584,
      "cleanedEndLine" : 594
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 747,
      "endLine" : 760,
      "cleanedStartLine" : 617,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 145,
      "startLine" : 45,
      "endLine" : 63,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStat.kt",
        "extension" : "kt",
        "linesOfCode" : 300,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 30,
      "endLine" : 48,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 15,
      "endLine" : 28,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 15,
      "endLine" : 28,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1361,
      "endLine" : 1371,
      "cleanedStartLine" : 244,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1449,
      "endLine" : 1459,
      "cleanedStartLine" : 258,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1497,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 250
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2870,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 444
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 747,
      "endLine" : 760,
      "cleanedStartLine" : 617,
      "cleanedEndLine" : 627
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 763,
      "endLine" : 776,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 640
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_isolated_webview_panel_ctx.py",
        "extension" : "py",
        "linesOfCode" : 53,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 24,
      "endLine" : 35,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_static_html_page_ctx.py",
        "extension" : "py",
        "linesOfCode" : 42,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 24,
      "endLine" : 35,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 26,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 87,
      "endLine" : 97,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 43,
      "endLine" : 59,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 38,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1195,
      "endLine" : 1279,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1464,
      "endLine" : 1542,
      "cleanedStartLine" : 271,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6362,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 936
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9008,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1339
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2167,
      "endLine" : 2177,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 391
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2253,
      "endLine" : 2263,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 407
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/WandClippingPlayground.kt",
        "extension" : "kt",
        "linesOfCode" : 150,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 25,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/WandPlayground.kt",
        "extension" : "kt",
        "linesOfCode" : 158,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 133,
      "startLine" : 25,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFixedBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 81,
      "endLine" : 91,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 431,
      "endLine" : 445,
      "cleanedStartLine" : 323,
      "cleanedEndLine" : 333
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 457,
      "endLine" : 471,
      "cleanedStartLine" : 345,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 724,
      "endLine" : 735,
      "cleanedStartLine" : 588,
      "cleanedEndLine" : 597
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 812,
      "endLine" : 823,
      "cleanedStartLine" : 666,
      "cleanedEndLine" : 675
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 724,
      "endLine" : 735,
      "cleanedStartLine" : 588,
      "cleanedEndLine" : 597
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 792,
      "endLine" : 803,
      "cleanedStartLine" : 648,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1005,
      "endLine" : 1014,
      "cleanedStartLine" : 257,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1103,
      "endLine" : 1112,
      "cleanedStartLine" : 282,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 778,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5263,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 794
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 51,
      "endLine" : 61,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 81,
      "endLine" : 91,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6730,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 994
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8881,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1318
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 581,
      "endLine" : 590,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 489
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 669,
      "endLine" : 678,
      "cleanedStartLine" : 552,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 581,
      "endLine" : 590,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 489
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 647,
      "endLine" : 656,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 581,
      "endLine" : 590,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 489
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 625,
      "endLine" : 634,
      "cleanedStartLine" : 516,
      "cleanedEndLine" : 525
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordProviders.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 62,
      "endLine" : 71,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 50,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 216,
      "endLine" : 225,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8997,
      "endLine" : 9006,
      "cleanedStartLine" : 1328,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 556,
      "endLine" : 565,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 460
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 608,
      "endLine" : 617,
      "cleanedStartLine" : 501,
      "cleanedEndLine" : 510
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 134,
      "endLine" : 143,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 112
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 778,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6730,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 994
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 795,
      "endLine" : 805,
      "cleanedStartLine" : 655,
      "cleanedEndLine" : 664
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 815,
      "endLine" : 825,
      "cleanedStartLine" : 671,
      "cleanedEndLine" : 680
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/data/TestDataGen.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 16,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/data/TestDataGen.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 625,
      "endLine" : 634,
      "cleanedStartLine" : 516,
      "cleanedEndLine" : 525
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 647,
      "endLine" : 656,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 625,
      "endLine" : 634,
      "cleanedStartLine" : 516,
      "cleanedEndLine" : 525
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 669,
      "endLine" : 678,
      "cleanedStartLine" : 552,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1880,
      "endLine" : 1889,
      "cleanedStartLine" : 331,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2736,
      "endLine" : 2745,
      "cleanedStartLine" : 484,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 118,
      "endLine" : 187,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1286,
      "endLine" : 1350,
      "cleanedStartLine" : 330,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1880,
      "endLine" : 1889,
      "cleanedStartLine" : 331,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2836,
      "endLine" : 2845,
      "cleanedStartLine" : 499,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 42,
      "endLine" : 54,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 46,
      "endLine" : 57,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 64,
      "endLine" : 74,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 166,
      "endLine" : 176,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 28,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 96,
      "endLine" : 109,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6730,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 994
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9170,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1386
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3321,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 588
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3546,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 628
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3321,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 588
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3473,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 615
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1099,
      "endLine" : 1108,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1181,
      "endLine" : 1190,
      "cleanedStartLine" : 215,
      "cleanedEndLine" : 224
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5263,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 794
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6730,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 994
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 423,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 500,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 647,
      "endLine" : 656,
      "cleanedStartLine" : 521,
      "cleanedEndLine" : 530
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 685,
      "endLine" : 694,
      "cleanedStartLine" : 553,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 792,
      "endLine" : 803,
      "cleanedStartLine" : 648,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 812,
      "endLine" : 823,
      "cleanedStartLine" : 666,
      "cleanedEndLine" : 675
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 731,
      "endLine" : 740,
      "cleanedStartLine" : 178,
      "cleanedEndLine" : 187
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1264,
      "endLine" : 1273,
      "cleanedStartLine" : 313,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 64,
      "endLine" : 73,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 193,
      "endLine" : 202,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 74,
      "endLine" : 83,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 114,
      "endLine" : 123,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 233,
      "endLine" : 245,
      "cleanedStartLine" : 184,
      "cleanedEndLine" : 193
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 293,
      "endLine" : 305,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 900,
      "endLine" : 909,
      "cleanedStartLine" : 222,
      "cleanedEndLine" : 231
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1343,
      "endLine" : 1352,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1617,
      "endLine" : 1626,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1698,
      "endLine" : 1707,
      "cleanedStartLine" : 300,
      "cleanedEndLine" : 309
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1867,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2134,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 342
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 108,
      "endLine" : 117,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 148,
      "endLine" : 157,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 399,
      "endLine" : 408,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 343
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 428,
      "endLine" : 437,
      "cleanedStartLine" : 361,
      "cleanedEndLine" : 370
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 778,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4180,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 630
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 778,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4383,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 658
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 581,
      "endLine" : 590,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 489
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 603,
      "endLine" : 612,
      "cleanedStartLine" : 498,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4383,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 658
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5263,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 794
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 145,
      "endLine" : 156,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 166,
      "endLine" : 177,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 103,
      "endLine" : 114,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 124,
      "endLine" : 135,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 724,
      "endLine" : 735,
      "cleanedStartLine" : 588,
      "cleanedEndLine" : 597
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 772,
      "endLine" : 783,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 639
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8433,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1246
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4383,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 658
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6730,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 994
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8022,
      "endLine" : 8031,
      "cleanedStartLine" : 1175,
      "cleanedEndLine" : 1184
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8237,
      "endLine" : 8246,
      "cleanedStartLine" : 1226,
      "cleanedEndLine" : 1235
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 692,
      "endLine" : 701,
      "cleanedStartLine" : 629,
      "cleanedEndLine" : 638
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/composite/CompositeFigureGridLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/CompositeFigureConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 213,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 152,
      "endLine" : 161,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/composite/CompositeFigureGridLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/CompositeFigureConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 213,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 165,
      "endLine" : 174,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7034,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1032
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 25,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 25,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7997,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1151
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2425,
      "endLine" : 2434,
      "cleanedStartLine" : 427,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2507,
      "endLine" : 2516,
      "cleanedStartLine" : 440,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8205,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1195
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 11,
      "endLine" : 20,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/PolynomialRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 13,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7735,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1118
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 64,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDotplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 24,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 166,
      "endLine" : 176,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 191,
      "endLine" : 201,
      "cleanedStartLine" : 159,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 100,
      "endLine" : 109,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgDocUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 169,
      "endLine" : 178,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/math3/BlockRealMatrix.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 157,
      "endLine" : 166,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/math3/BlockRealMatrix.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 356,
      "endLine" : 365,
      "cleanedStartLine" : 145,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8205,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1195
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 755,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6730,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 994
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7735,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1118
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7997,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1151
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 956,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8713,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1292
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8213,
      "endLine" : 8222,
      "cleanedStartLine" : 1203,
      "cleanedEndLine" : 1212
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8445,
      "endLine" : 8454,
      "cleanedStartLine" : 1258,
      "cleanedEndLine" : 1267
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryBinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 24,
      "endLine" : 37,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryStat.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 20,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3235,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 481
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 226,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3058,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 463
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7034,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1032
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotOutlierStat.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 19,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDotplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 24,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1968,
      "endLine" : 1977,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2736,
      "endLine" : 2745,
      "cleanedStartLine" : 484,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1968,
      "endLine" : 1977,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2836,
      "endLine" : 2845,
      "cleanedStartLine" : 499,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/plot/PlotFigureLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 175,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 59,
      "endLine" : 68,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/plot/PlotFigureLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 175,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 139,
      "endLine" : 148,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 68,
      "endLine" : 77,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 90,
      "endLine" : 99,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 772,
      "endLine" : 783,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 639
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 792,
      "endLine" : 803,
      "cleanedStartLine" : 648,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 400,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 323,
      "startLine" : 389,
      "endLine" : 398,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 264
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/subPlots/CompositeFigureSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 153,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 129,
      "endLine" : 138,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8433,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1246
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 121,
      "endLine" : 132,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 200,
      "endLine" : 211,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 121,
      "endLine" : 132,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 250,
      "endLine" : 261,
      "cleanedStartLine" : 184,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4383,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 658
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9170,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1386
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 90,
      "endLine" : 99,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 135,
      "endLine" : 144,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4383,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 658
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8881,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1318
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 57,
      "endLine" : 66,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2340,
      "endLine" : 2349,
      "cleanedStartLine" : 412,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2629,
      "endLine" : 2638,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 474
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2340,
      "endLine" : 2349,
      "cleanedStartLine" : 412,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2943,
      "endLine" : 2952,
      "cleanedStartLine" : 513,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 57,
      "endLine" : 66,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 108,
      "endLine" : 117,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 89,
      "endLine" : 98,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 144,
      "endLine" : 153,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7034,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1032
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8433,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1246
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 755,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8881,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1318
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 119,
      "endLine" : 128,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 144,
      "endLine" : 153,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7034,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1032
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8205,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1195
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 755,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5263,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 794
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 707,
      "endLine" : 717,
      "cleanedStartLine" : 583,
      "cleanedEndLine" : 592
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 723,
      "endLine" : 733,
      "cleanedStartLine" : 596,
      "cleanedEndLine" : 605
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 64,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryStat.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 20,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 148,
      "endLine" : 157,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3058,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 463
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 182,
      "endLine" : 191,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 145
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 396,
      "endLine" : 405,
      "cleanedStartLine" : 319,
      "cleanedEndLine" : 328
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3247,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3321,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 588
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3247,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3473,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 615
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3247,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3546,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 628
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 755,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4180,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 630
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 414,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3235,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 481
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 42,
      "endLine" : 54,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 47,
      "endLine" : 59,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 755,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4383,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 658
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1786,
      "endLine" : 1795,
      "cleanedStartLine" : 313,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2340,
      "endLine" : 2349,
      "cleanedStartLine" : 412,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 104,
      "endLine" : 113,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 827,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 996,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 255
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgShape.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextContent.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 17,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 74,
      "endLine" : 83,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgDocUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 144,
      "endLine" : 153,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1786,
      "endLine" : 1795,
      "cleanedStartLine" : 313,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2943,
      "endLine" : 2952,
      "cleanedStartLine" : 513,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1786,
      "endLine" : 1795,
      "cleanedStartLine" : 313,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2629,
      "endLine" : 2638,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 474
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3235,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7997,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1151
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4180,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 630
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8881,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1318
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3235,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7735,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1118
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4180,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 630
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9170,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1386
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 34,
      "endLine" : 103,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1207,
      "endLine" : 1271,
      "cleanedStartLine" : 311,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3235,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8205,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1195
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3235,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8433,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1246
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/theme_.py",
        "extension" : "py",
        "linesOfCode" : 131,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 130,
      "startLine" : 588,
      "endLine" : 598,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 107
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/theme_.py",
        "extension" : "py",
        "linesOfCode" : 131,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 130,
      "startLine" : 663,
      "endLine" : 673,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5263,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 794
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9170,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1386
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3058,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 463
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7735,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1118
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5263,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 794
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8881,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1318
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 57,
      "endLine" : 66,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/WaterfallPlotSpecChangeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 148,
      "endLine" : 157,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3058,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 463
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7997,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1151
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3058,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 463
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8205,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1195
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7190,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1049
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7353,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1072
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 260,
      "endLine" : 271,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 232
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 292,
      "endLine" : 303,
      "cleanedStartLine" : 253,
      "cleanedEndLine" : 262
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/xml/XmlTest.kt",
        "extension" : "kt",
        "linesOfCode" : 279,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 253,
      "startLine" : 146,
      "endLine" : 157,
      "cleanedStartLine" : 108,
      "cleanedEndLine" : 117
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/xml/XmlTest.kt",
        "extension" : "kt",
        "linesOfCode" : 279,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 253,
      "startLine" : 161,
      "endLine" : 172,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4180,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 630
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6730,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 994
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3310,
      "endLine" : 3319,
      "cleanedStartLine" : 578,
      "cleanedEndLine" : 587
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3388,
      "endLine" : 3397,
      "cleanedStartLine" : 591,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/composite/CompositeFigureGridAlignmentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 29,
      "endLine" : 38,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/CompositeFigureConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 213,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 152,
      "endLine" : 161,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/composite/CompositeFigureGridAlignmentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 29,
      "endLine" : 38,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/CompositeFigureConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 213,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 165,
      "endLine" : 174,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotOutlierStat.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 19,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryBinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 24,
      "endLine" : 37,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 490,
      "endLine" : 500,
      "cleanedStartLine" : 408,
      "cleanedEndLine" : 417
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 523,
      "endLine" : 533,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 443
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 490,
      "endLine" : 500,
      "cleanedStartLine" : 408,
      "cleanedEndLine" : 417
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 507,
      "endLine" : 517,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 430
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 490,
      "endLine" : 500,
      "cleanedStartLine" : 408,
      "cleanedEndLine" : 417
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 541,
      "endLine" : 551,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 457
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 148,
      "endLine" : 159,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 133,
      "endLine" : 144,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 269,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 346,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 211,
      "endLine" : 220,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 291,
      "endLine" : 300,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3058,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 463
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8433,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1246
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 577,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 654,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 167
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7499,
      "endLine" : 7508,
      "cleanedStartLine" : 1097,
      "cleanedEndLine" : 1106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8012,
      "endLine" : 8021,
      "cleanedStartLine" : 1165,
      "cleanedEndLine" : 1174
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 778,
      "endLine" : 788,
      "cleanedStartLine" : 642,
      "cleanedEndLine" : 651
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 795,
      "endLine" : 805,
      "cleanedStartLine" : 655,
      "cleanedEndLine" : 664
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssemblerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 124,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 22,
      "endLine" : 35,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssemblerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 124,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 46,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 778,
      "endLine" : 788,
      "cleanedStartLine" : 642,
      "cleanedEndLine" : 651
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 815,
      "endLine" : 825,
      "cleanedStartLine" : 671,
      "cleanedEndLine" : 680
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 15,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 15,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/AssertjUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 15,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 12,
      "endLine" : 21,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/AssertjUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 16,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 13,
      "endLine" : 22,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3473,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 615
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3546,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 628
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryStat.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 20,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDotplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 24,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 778,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8881,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1318
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 603,
      "endLine" : 612,
      "cleanedStartLine" : 498,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 625,
      "endLine" : 634,
      "cleanedStartLine" : 516,
      "cleanedEndLine" : 525
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 603,
      "endLine" : 612,
      "cleanedStartLine" : 498,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 647,
      "endLine" : 656,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7034,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1032
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7997,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1151
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 45,
      "endLine" : 56,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 121,
      "endLine" : 132,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7034,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1032
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7735,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1118
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2292,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 366
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8713,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1292
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 166,
      "endLine" : 176,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/DataFrameDistinctValuesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 280,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 237,
      "startLine" : 167,
      "endLine" : 179,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/DataFrameDistinctValuesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 280,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 237,
      "startLine" : 196,
      "endLine" : 208,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 15,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 15,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 603,
      "endLine" : 612,
      "cleanedStartLine" : 498,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 669,
      "endLine" : 678,
      "cleanedStartLine" : 552,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 956,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2292,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 366
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 164,
      "endLine" : 173,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 138
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8881,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1318
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9170,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1386
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4180,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 630
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4383,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 658
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 247,
      "endLine" : 257,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 410,
      "endLine" : 420,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 334
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 64,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryBinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 24,
      "endLine" : 37,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 523,
      "endLine" : 533,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 443
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 541,
      "endLine" : 551,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 457
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1014,
      "endLine" : 1023,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1533,
      "endLine" : 1542,
      "cleanedStartLine" : 272,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1014,
      "endLine" : 1023,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1270,
      "endLine" : 1279,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4180,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 630
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5263,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 794
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 197,
      "endLine" : 208,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 260,
      "endLine" : 271,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 232
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 507,
      "endLine" : 517,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 430
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 541,
      "endLine" : 551,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 457
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 68,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 89,
      "endLine" : 102,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 507,
      "endLine" : 517,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 430
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 523,
      "endLine" : 533,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 443
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 61,
      "endLine" : 71,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 58,
      "endLine" : 68,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 136,
      "endLine" : 144,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourFillHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 230,
      "endLine" : 238,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 161
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourFillHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 241,
      "endLine" : 249,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 559,
      "endLine" : 569,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 459
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 582,
      "endLine" : 592,
      "cleanedStartLine" : 470,
      "cleanedEndLine" : 478
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/typedGeometry/algorithms/ResamplerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 129,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 113,
      "startLine" : 109,
      "endLine" : 118,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/typedGeometry/algorithms/ResamplerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 129,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 113,
      "startLine" : 130,
      "endLine" : 138,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 55,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 15,
      "endLine" : 26,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "livemap/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 13,
      "endLine" : 24,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotHtmlExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotHtmlExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotHtmlExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotHtmlExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 52,
      "endLine" : 60,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 786,
      "endLine" : 794,
      "cleanedStartLine" : 642,
      "cleanedEndLine" : 650
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 830,
      "endLine" : 838,
      "cleanedStartLine" : 682,
      "cleanedEndLine" : 690
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 654,
      "endLine" : 662,
      "cleanedStartLine" : 593,
      "cleanedEndLine" : 601
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 654,
      "endLine" : 662,
      "cleanedStartLine" : 593,
      "cleanedEndLine" : 601
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 783,
      "endLine" : 791,
      "cleanedStartLine" : 705,
      "cleanedEndLine" : 713
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgImageElement.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 162,
      "endLine" : 170,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 190,
      "endLine" : 198,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 151
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 52,
      "endLine" : 62,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 67,
      "endLine" : 77,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 263,
      "endLine" : 272,
      "cleanedStartLine" : 197,
      "cleanedEndLine" : 205
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 309,
      "endLine" : 318,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 692,
      "endLine" : 701,
      "cleanedStartLine" : 571,
      "cleanedEndLine" : 579
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 724,
      "endLine" : 733,
      "cleanedStartLine" : 597,
      "cleanedEndLine" : 605
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/chart/fragments/RegionEmitSystemTest.kt",
        "extension" : "kt",
        "linesOfCode" : 137,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 117,
      "startLine" : 94,
      "endLine" : 102,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/chart/fragments/RegionEmitSystemTest.kt",
        "extension" : "kt",
        "linesOfCode" : 137,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 117,
      "startLine" : 125,
      "endLine" : 133,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalDateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 75,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 80,
      "endLine" : 91,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_jupyter_notebook_ctx.py",
        "extension" : "py",
        "linesOfCode" : 48,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 45,
      "endLine" : 73,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_static_html_page_ctx.py",
        "extension" : "py",
        "linesOfCode" : 42,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 40,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 61,
      "endLine" : 72,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalDateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 75,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 193,
      "endLine" : 202,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 247,
      "endLine" : 256,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourFillHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 219,
      "endLine" : 227,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 150
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourFillHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 252,
      "endLine" : 260,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 44,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalDateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 35,
      "endLine" : 46,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 42,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 44,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Context2d.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/canvas/DomContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 180,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 88,
      "endLine" : 96,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 81,
      "endLine" : 90,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 96,
      "endLine" : 105,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonTest/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgUtilTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 16,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonTest/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgUtilTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 37,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/BarTooltipHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 57,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 34,
      "endLine" : 44,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/RectangleTooltipHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 44,
      "endLine" : 55,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 327,
      "endLine" : 335,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 269
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 301,
      "endLine" : 309,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 34,
      "endLine" : 48,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "plot-livemap/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 61,
        "components" : [ "primary::plot-livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 48,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 142,
      "endLine" : 153,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 180,
      "endLine" : 193,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 207,
      "endLine" : 217,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 249,
      "endLine" : 259,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeUTCTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 57,
      "endLine" : 68,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalDateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 75,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/canvas/AwtContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 343,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 78,
      "endLine" : 86,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/canvas/DomContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 180,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 89,
      "endLine" : 97,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 31,
      "endLine" : 39,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 95,
      "endLine" : 103,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 572,
      "endLine" : 580,
      "cleanedStartLine" : 515,
      "cleanedEndLine" : 523
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 678,
      "endLine" : 686,
      "cleanedStartLine" : 615,
      "cleanedEndLine" : 623
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 61,
      "endLine" : 72,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 80,
      "endLine" : 91,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 66,
      "endLine" : 74,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotOutlierStat.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 37,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryBinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 49,
      "endLine" : 60,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 115,
      "endLine" : 126,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 146,
      "endLine" : 157,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/resources/playground.html",
        "extension" : "html",
        "linesOfCode" : 49,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeColorOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 307,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 289,
      "startLine" : 196,
      "endLine" : 204,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeColorOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 307,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 289,
      "startLine" : 206,
      "endLine" : 214,
      "cleanedStartLine" : 167,
      "cleanedEndLine" : 175
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 599,
      "endLine" : 611,
      "cleanedStartLine" : 564,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 606,
      "endLine" : 619,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 577
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 20,
      "endLine" : 28,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 134,
      "endLine" : 142,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 44,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 42,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordLimitsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 112,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 23,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordLimitsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 112,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 39,
      "endLine" : 49,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 167,
      "endLine" : 176,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 72,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "python-extension/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 79,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 48,
      "endLine" : 56,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 340,
      "endLine" : 348,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 639,
      "endLine" : 647,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 340,
      "endLine" : 348,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 565,
      "endLine" : 573,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/tiles/FacetedPlotGeomTiles.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 17,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/tiles/SimplePlotGeomTiles.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 20,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 901,
      "endLine" : 909,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 231
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1265,
      "endLine" : 1273,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1190,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 232,
      "endLine" : 242,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 184
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 272,
      "endLine" : 282,
      "cleanedStartLine" : 208,
      "cleanedEndLine" : 216
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgImageElement.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgSvgElement.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 20,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathHoverXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 48,
      "endLine" : 59,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathNearestXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 48,
      "endLine" : 59,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgRectElement.kt",
        "extension" : "kt",
        "linesOfCode" : 85,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgSvgElement.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 20,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 58,
      "endLine" : 68,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 134,
      "endLine" : 144,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotHtmlExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotHtmlExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 52,
      "endLine" : 60,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 35,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 141,
      "endLine" : 151,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 134,
      "endLine" : 143,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 108
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 157,
      "endLine" : 166,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 225,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 573,
      "endLine" : 582,
      "cleanedStartLine" : 474,
      "cleanedEndLine" : 482
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 609,
      "endLine" : 618,
      "cleanedStartLine" : 504,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/MonolithicJs.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 87,
      "endLine" : 96,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/MonolithicJs.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 157,
      "endLine" : 166,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 591,
      "endLine" : 600,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 497
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 627,
      "endLine" : 636,
      "cleanedStartLine" : 519,
      "cleanedEndLine" : 527
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalMultilineLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalSimpleLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 572,
      "endLine" : 580,
      "cleanedStartLine" : 515,
      "cleanedEndLine" : 523
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/Properties.kt",
        "extension" : "kt",
        "linesOfCode" : 606,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 422,
      "startLine" : 155,
      "endLine" : 166,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/Properties.kt",
        "extension" : "kt",
        "linesOfCode" : 606,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 422,
      "startLine" : 220,
      "endLine" : 231,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1542,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 364,
      "endLine" : 376,
      "cleanedStartLine" : 283,
      "cleanedEndLine" : 291
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 407,
      "endLine" : 419,
      "cleanedStartLine" : 319,
      "cleanedEndLine" : 327
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 194,
      "endLine" : 205,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 236,
      "endLine" : 247,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dfStat.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 327,
      "endLine" : 335,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 269
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2638,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 474
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1795,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1279,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 237
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dfStat.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 301,
      "endLine" : 309,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 43,
      "endLine" : 53,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 58,
      "endLine" : 68,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2952,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 522
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 565,
      "endLine" : 573,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 639,
      "endLine" : 647,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 933,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 660,
      "endLine" : 668,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 558
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 691,
      "endLine" : 699,
      "cleanedStartLine" : 580,
      "cleanedEndLine" : 588
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 414,
      "endLine" : 422,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 489,
      "endLine" : 497,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStat.kt",
        "extension" : "kt",
        "linesOfCode" : 148,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 118,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStatInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 76,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 221,
      "endLine" : 230,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 309,
      "endLine" : 318,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 903,
      "endLine" : 911,
      "cleanedStartLine" : 225,
      "cleanedEndLine" : 233
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1188,
      "endLine" : 1196,
      "cleanedStartLine" : 296,
      "cleanedEndLine" : 304
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 903,
      "endLine" : 911,
      "cleanedStartLine" : 225,
      "cleanedEndLine" : 233
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1089,
      "endLine" : 1097,
      "cleanedStartLine" : 271,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 853,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1023,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 196
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 17,
      "endLine" : 27,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 19,
      "endLine" : 29,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordProviders.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 63,
      "endLine" : 71,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 66,
      "endLine" : 74,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 69,
      "endLine" : 77,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 414,
      "endLine" : 422,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 565,
      "endLine" : 573,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 414,
      "endLine" : 422,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 639,
      "endLine" : 647,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 91,
      "endLine" : 99,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 724,
      "endLine" : 733,
      "cleanedStartLine" : 597,
      "cleanedEndLine" : 605
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 747,
      "endLine" : 756,
      "cleanedStartLine" : 617,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 734,
      "endLine" : 742,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 189
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1188,
      "endLine" : 1196,
      "cleanedStartLine" : 296,
      "cleanedEndLine" : 304
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 724,
      "endLine" : 733,
      "cleanedStartLine" : 597,
      "cleanedEndLine" : 605
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 763,
      "endLine" : 772,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 638
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 734,
      "endLine" : 742,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 189
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1089,
      "endLine" : 1097,
      "cleanedStartLine" : 271,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 566,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 76
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathHoverXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 23,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathNearestXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 23,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest2.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 44,
      "endLine" : 53,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/commons/data/SeriesUtilResolutionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 82,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 413,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 265,
      "endLine" : 273,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 565,
      "endLine" : 573,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 754,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 265,
      "endLine" : 273,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 639,
      "endLine" : 647,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 340,
      "endLine" : 348,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 489,
      "endLine" : 497,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 340,
      "endLine" : 348,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 414,
      "endLine" : 422,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 229,
      "endLine" : 237,
      "cleanedStartLine" : 166,
      "cleanedEndLine" : 174
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 279,
      "endLine" : 287,
      "cleanedStartLine" : 207,
      "cleanedEndLine" : 215
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 63,
      "endLine" : 71,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 249,
      "endLine" : 257,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1306,
      "endLine" : 1314,
      "cleanedStartLine" : 211,
      "cleanedEndLine" : 219
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4564,
      "endLine" : 4572,
      "cleanedStartLine" : 685,
      "cleanedEndLine" : 693
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 193,
      "endLine" : 202,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 410,
      "endLine" : 419,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 333
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 135,
      "endLine" : 144,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 94
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 686,
      "endLine" : 694,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathHoverXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorPathNearestXTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3245,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3319,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/commonMain/kotlin/org/jetbrains/letsPlot/raster/mapping/svg/SvgGElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 23,
      "endLine" : 31,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/commonMain/kotlin/org/jetbrains/letsPlot/raster/mapping/svg/SvgSvgElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 489,
      "endLine" : 497,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 639,
      "endLine" : 647,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 489,
      "endLine" : 497,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 565,
      "endLine" : 573,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 32,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1371,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 254
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3397,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 600
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 732,
      "endLine" : 740,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 187
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1344,
      "endLine" : 1352,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/PaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/PaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 38,
      "endLine" : 46,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeDSTTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 49,
      "endLine" : 61,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeDSTTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 102,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeUTCTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 42,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/FacetedPlotLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 197,
      "startLine" : 107,
      "endLine" : 115,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/FacetedPlotLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 197,
      "startLine" : 118,
      "endLine" : 126,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 777,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 300,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5262,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 220,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5498,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 818
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1866,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5729,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 842
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1691,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 272
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/DefaultLegendTheme.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 123,
      "endLine" : 139,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/DefaultPlotTheme.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 41,
      "endLine" : 57,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 402,
      "endLine" : 410,
      "cleanedStartLine" : 337,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 417,
      "endLine" : 425,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 359
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6099,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1108,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 211
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgDocUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 76,
      "endLine" : 85,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 114,
      "endLine" : 122,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 219,
      "endLine" : 227,
      "cleanedStartLine" : 193,
      "cleanedEndLine" : 201
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 175,
      "endLine" : 183,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 196,
      "endLine" : 204,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4382,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 657
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 44,
      "endLine" : 58,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 67,
      "endLine" : 81,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 114,
      "endLine" : 122,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 187,
      "endLine" : 195,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 170
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3171,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9169,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3066,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 545
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6243,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 915
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeUTCTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 57,
      "endLine" : 68,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalTimeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 80,
      "endLine" : 91,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2565,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3471,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 614
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6494,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 954
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2349,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3544,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2845,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6600,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 975
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1977,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 355
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1889,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1495,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6729,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 993
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8880,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1317
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9006,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1707,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 309
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2718,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourStat.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 44,
      "endLine" : 58,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourfStat.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 15,
      "endLine" : 29,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 265,
      "endLine" : 273,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 414,
      "endLine" : 422,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3234,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7033,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1031
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 265,
      "endLine" : 273,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 340,
      "endLine" : 348,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2516,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 449
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6360,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3057,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 462
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6856,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1012
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 243,
      "endLine" : 251,
      "cleanedStartLine" : 206,
      "cleanedEndLine" : 214
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 275,
      "endLine" : 283,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2434,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5953,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2291,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 265,
      "endLine" : 273,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 489,
      "endLine" : 497,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3588,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 534
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8204,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4900,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 750
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2745,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 493
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7996,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5035,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 955,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3713,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 553
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2133,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7352,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1071
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8432,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 68,
      "endLine" : 77,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 119,
      "endLine" : 128,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1459,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1626,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 296
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7189,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7734,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4179,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4763,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 722
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2868,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8712,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 138,
      "endLine" : 147,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 174,
      "endLine" : 183,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 250,
      "endLine" : 257,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 183
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 272,
      "endLine" : 279,
      "cleanedStartLine" : 196,
      "cleanedEndLine" : 203
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3587,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 533
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3712,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 552
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalTiltedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalVerticalLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Context2d.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/canvas/AwtContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 343,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6728,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 992
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2867,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 441
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetector.kt",
        "extension" : "kt",
        "linesOfCode" : 142,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 39,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetector.kt",
        "extension" : "kt",
        "linesOfCode" : 142,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 90,
      "endLine" : 101,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 168
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 248,
      "endLine" : 255,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4178,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 628
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4381,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 656
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 145,
      "endLine" : 152,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 169,
      "endLine" : 176,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 254,
      "endLine" : 261,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1880,
      "endLine" : 1887,
      "cleanedStartLine" : 331,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2167,
      "endLine" : 2174,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1880,
      "endLine" : 1887,
      "cleanedStartLine" : 331,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2253,
      "endLine" : 2260,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2132,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 206,
      "endLine" : 213,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 286,
      "endLine" : 293,
      "cleanedStartLine" : 207,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/PlotImageExport.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 57,
      "endLine" : 64,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/core/plot/export/PlotImageExport.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 58,
      "endLine" : 65,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 206,
      "endLine" : 213,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 220,
      "endLine" : 227,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 156
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 206,
      "endLine" : 213,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 565,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 206,
      "endLine" : 213,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 248,
      "endLine" : 255,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/GlyphPair.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 15,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/SingletonGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 49,
      "endLine" : 58,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 77,
      "endLine" : 87,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 31,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7351,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1070
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 28,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 136,
      "endLine" : 147,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 273,
      "endLine" : 280,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 178
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 299,
      "endLine" : 306,
      "cleanedStartLine" : 192,
      "cleanedEndLine" : 199
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 459,
      "endLine" : 466,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 483,
      "endLine" : 490,
      "cleanedStartLine" : 367,
      "cleanedEndLine" : 374
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 28,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 60,
      "endLine" : 71,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 236,
      "endLine" : 245,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 280,
      "endLine" : 289,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 219
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5728,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 841
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 236,
      "endLine" : 245,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 328,
      "endLine" : 337,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 259
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/commonMain/kotlin/org/jetbrains/letsPlot/raster/mapping/svg/SvgGElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/SvgTest.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 42,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/svg/SvgTestBase.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 15,
      "endLine" : 25,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6098,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 893
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 220,
      "endLine" : 227,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 286,
      "endLine" : 293,
      "cleanedStartLine" : 207,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 776,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 126
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 216,
      "endLine" : 223,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 324,
      "endLine" : 331,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 225
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 264,
      "endLine" : 272,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 205
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/front/tiles/PlotTilesConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 304,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/front/tiles/PlotTilesConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 304,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 189,
      "endLine" : 196,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 126
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/plot/PlotFigureLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 175,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 178,
      "endLine" : 186,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 132
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 310,
      "endLine" : 318,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 32,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalSimpleLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/plot/PlotFigureLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 175,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalVerticalLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFixedBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 16,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1865,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 293
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 159,
      "endLine" : 168,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 212,
      "endLine" : 221,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/datetime/tz/TimeZonesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 37,
      "endLine" : 46,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/datetime/tz/TimeZonesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 50,
      "endLine" : 59,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 85,
      "endLine" : 92,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9168,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1384
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 776,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 126
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 563,
      "endLine" : 570,
      "cleanedStartLine" : 506,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 669,
      "endLine" : 676,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 326,
      "endLine" : 333,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 220
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 362,
      "endLine" : 369,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 247
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1865,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 293
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 159,
      "endLine" : 168,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 186,
      "endLine" : 195,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/GlyphPair.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 15,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/TwoShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 97,
      "endLine" : 107,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 123,
      "endLine" : 133,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 144,
      "endLine" : 151,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 120
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 181,
      "endLine" : 188,
      "cleanedStartLine" : 145,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 344,
      "endLine" : 351,
      "cleanedStartLine" : 272,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 368,
      "endLine" : 375,
      "cleanedStartLine" : 293,
      "cleanedEndLine" : 300
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dfStat.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 129,
      "endLine" : 136,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 254,
      "endLine" : 261,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 147,
      "endLine" : 156,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1494,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 247
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7351,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1070
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 85,
      "endLine" : 92,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6855,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1011
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 299,
      "endLine" : 306,
      "cleanedStartLine" : 192,
      "cleanedEndLine" : 199
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 362,
      "endLine" : 369,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 247
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7188,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1047
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7032,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1030
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 299,
      "endLine" : 306,
      "cleanedStartLine" : 192,
      "cleanedEndLine" : 199
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 326,
      "endLine" : 333,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 220
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/Properties.kt",
        "extension" : "kt",
        "linesOfCode" : 606,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 422,
      "startLine" : 751,
      "endLine" : 760,
      "cleanedStartLine" : 392,
      "cleanedEndLine" : 399
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/Properties.kt",
        "extension" : "kt",
        "linesOfCode" : 606,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 422,
      "startLine" : 777,
      "endLine" : 786,
      "cleanedStartLine" : 408,
      "cleanedEndLine" : 415
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7995,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1149
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/LookupStrategyOnMultilayerPlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 85,
      "endLine" : 92,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/LookupStrategyOnMultilayerPlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 253,
      "endLine" : 260,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 172
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 291,
      "endLine" : 298,
      "cleanedStartLine" : 197,
      "cleanedEndLine" : 204
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 107,
      "endLine" : 117,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 803,
      "endLine" : 810,
      "cleanedStartLine" : 657,
      "cleanedEndLine" : 664
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 827,
      "endLine" : 834,
      "cleanedStartLine" : 679,
      "cleanedEndLine" : 686
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 320,
      "endLine" : 328,
      "cleanedStartLine" : 247,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 465,
      "endLine" : 473,
      "cleanedStartLine" : 372,
      "cleanedEndLine" : 379
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8203,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1193
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 173,
      "endLine" : 182,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 190,
      "endLine" : 199,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 114,
      "endLine" : 121,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 133,
      "endLine" : 140,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7733,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1116
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 423,
      "endLine" : 430,
      "cleanedStartLine" : 374,
      "cleanedEndLine" : 381
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 768,
      "endLine" : 775,
      "cleanedStartLine" : 690,
      "cleanedEndLine" : 697
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7995,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1149
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 128,
      "endLine" : 138,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 156,
      "endLine" : 166,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 415,
      "endLine" : 423,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 451,
      "endLine" : 459,
      "cleanedStartLine" : 371,
      "cleanedEndLine" : 378
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8431,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1244
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8711,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1290
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/PropertiesSynchronizationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/PropertiesSynchronizationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 76,
      "endLine" : 85,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6728,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 992
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 195,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2261,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 405
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9005,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1336
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5034,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 765
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8879,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1316
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 195,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2175,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 389
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6242,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 914
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6359,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 933
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 432,
      "endLine" : 439,
      "cleanedStartLine" : 352,
      "cleanedEndLine" : 359
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 668,
      "endLine" : 675,
      "cleanedStartLine" : 561,
      "cleanedEndLine" : 568
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6493,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 953
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 224,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6599,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 974
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 333,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 278,
      "startLine" : 36,
      "endLine" : 43,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStat.kt",
        "extension" : "kt",
        "linesOfCode" : 102,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 87,
      "startLine" : 13,
      "endLine" : 20,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9168,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1384
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 415,
      "endLine" : 423,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 747,
      "endLine" : 755,
      "cleanedStartLine" : 636,
      "cleanedEndLine" : 643
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1022,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 433,
      "endLine" : 440,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 332
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 483,
      "endLine" : 490,
      "cleanedStartLine" : 367,
      "cleanedEndLine" : 374
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 432,
      "endLine" : 439,
      "cleanedStartLine" : 352,
      "cleanedEndLine" : 359
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 717,
      "endLine" : 724,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalSimpleLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 18,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 89,
      "endLine" : 96,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 123,
      "endLine" : 130,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 565,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 746,
      "endLine" : 753,
      "cleanedStartLine" : 635,
      "cleanedEndLine" : 642
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 166,
      "endLine" : 173,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 138
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 222,
      "endLine" : 230,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6242,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 914
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 333,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 278,
      "startLine" : 36,
      "endLine" : 43,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 12,
      "endLine" : 19,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 402,
      "endLine" : 409,
      "cleanedStartLine" : 310,
      "cleanedEndLine" : 317
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 450,
      "endLine" : 457,
      "cleanedStartLine" : 354,
      "cleanedEndLine" : 361
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2290,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 364
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 201,
      "endLine" : 209,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 162
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 415,
      "endLine" : 423,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 345
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 67,
      "endLine" : 76,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 71,
      "endLine" : 80,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3712,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 552
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 565,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 222,
      "endLine" : 230,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 178,
      "endLine" : 186,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 132
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 187,
      "endLine" : 194,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1270,
      "endLine" : 1277,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 264,
      "endLine" : 272,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 205
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 252,
      "endLine" : 261,
      "cleanedStartLine" : 178,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 56,
      "endLine" : 66,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 51,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 187,
      "endLine" : 194,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1533,
      "endLine" : 1540,
      "cleanedStartLine" : 272,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 450,
      "endLine" : 457,
      "cleanedStartLine" : 370,
      "cleanedEndLine" : 377
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 565,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3459,
      "endLine" : 3466,
      "cleanedStartLine" : 511,
      "cleanedEndLine" : 518
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/stat.py",
        "extension" : "py",
        "linesOfCode" : 92,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 224,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/LookupStrategyOnMultilayerPlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 85,
      "endLine" : 92,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 921,
      "endLine" : 928,
      "cleanedStartLine" : 759,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4762,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 721
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 96,
      "endLine" : 103,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 731,
      "endLine" : 738,
      "cleanedStartLine" : 178,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/interval/DoubleSpanTest.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 45,
      "endLine" : 54,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/interval/IntSpanTest.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 35,
      "endLine" : 44,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 155,
      "endLine" : 162,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 130
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 187,
      "endLine" : 194,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1014,
      "endLine" : 1021,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 707,
      "endLine" : 714,
      "cleanedStartLine" : 642,
      "cleanedEndLine" : 649
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 725,
      "endLine" : 732,
      "cleanedStartLine" : 656,
      "cleanedEndLine" : 663
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 43,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 59,
      "endLine" : 68,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 178,
      "endLine" : 187,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 412,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 224,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 145,
      "startLine" : 208,
      "endLine" : 216,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 135
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStat.kt",
        "extension" : "kt",
        "linesOfCode" : 300,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 347,
      "endLine" : 355,
      "cleanedStartLine" : 251,
      "cleanedEndLine" : 258
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 106,
      "endLine" : 113,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 310,
      "endLine" : 318,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 244
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 248,
      "endLine" : 255,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 286,
      "endLine" : 293,
      "cleanedStartLine" : 207,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 224,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 107,
      "endLine" : 114,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/canvas/DomContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 180,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 114,
      "endLine" : 121,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 76
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1968,
      "endLine" : 1975,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2167,
      "endLine" : 2174,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1968,
      "endLine" : 1975,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2253,
      "endLine" : 2260,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 154,
      "endLine" : 161,
      "cleanedStartLine" : 127,
      "cleanedEndLine" : 134
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 206,
      "endLine" : 213,
      "cleanedStartLine" : 177,
      "cleanedEndLine" : 184
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 644,
      "endLine" : 651,
      "cleanedStartLine" : 540,
      "cleanedEndLine" : 547
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 674,
      "endLine" : 681,
      "cleanedStartLine" : 567,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 195,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 310,
      "endLine" : 318,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 244
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 753,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2867,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 441
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/RectanglesHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/RectanglesHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5261,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 792
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5034,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 765
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4899,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 749
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8879,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1316
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 412,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4762,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 721
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9005,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1336
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 161,
      "endLine" : 170,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 280,
      "endLine" : 289,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 219
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9005,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1336
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4381,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 656
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 161,
      "endLine" : 170,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 328,
      "endLine" : 337,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 259
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8431,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1244
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3233,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 479
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8711,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1290
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 384
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5497,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 817
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LinesHelperResamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 133,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 44,
      "endLine" : 53,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 224,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 179,
      "startLine" : 19,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 644,
      "endLine" : 651,
      "cleanedStartLine" : 540,
      "cleanedEndLine" : 547
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 723,
      "endLine" : 730,
      "cleanedStartLine" : 612,
      "cleanedEndLine" : 619
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6098,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 893
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 435,
      "endLine" : 444,
      "cleanedStartLine" : 341,
      "cleanedEndLine" : 348
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DiscreteScaleForContinuousVarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 21,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5952,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 869
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2261,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 405
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2175,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 389
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/BarTooltipHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 57,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 46,
      "endLine" : 57,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/RectangleTooltipHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 57,
      "endLine" : 68,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5728,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 841
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 81,
      "endLine" : 88,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9168,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1384
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 164,
      "endLine" : 173,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 190,
      "endLine" : 199,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalTiltedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalVerticalLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 38,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 514,
      "endLine" : 521,
      "cleanedStartLine" : 424,
      "cleanedEndLine" : 431
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 597,
      "endLine" : 604,
      "cleanedStartLine" : 497,
      "cleanedEndLine" : 504
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 674,
      "endLine" : 681,
      "cleanedStartLine" : 567,
      "cleanedEndLine" : 574
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 692,
      "endLine" : 699,
      "cleanedStartLine" : 585,
      "cleanedEndLine" : 592
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1189,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 223
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/CorrPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 395,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 334,
      "startLine" : 242,
      "endLine" : 249,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/CorrPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 395,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 334,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 194,
      "endLine" : 203,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 280,
      "endLine" : 289,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 219
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/SingletonGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/TwoShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 194,
      "endLine" : 203,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 328,
      "endLine" : 337,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 259
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3712,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 552
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2290,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 364
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 954,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 384
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 96,
      "endLine" : 107,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 136,
      "endLine" : 147,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3587,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 533
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/CorrPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 395,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 334,
      "startLine" : 242,
      "endLine" : 249,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/CorrPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 395,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 334,
      "startLine" : 290,
      "endLine" : 297,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 181
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2564,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 402
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 423,
      "endLine" : 430,
      "cleanedStartLine" : 374,
      "cleanedEndLine" : 381
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6855,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1011
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2717,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7032,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1030
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2867,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 441
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3233,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 479
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 753,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7188,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1047
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3056,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 461
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3056,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 461
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7351,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1070
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 194,
      "endLine" : 205,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 236,
      "endLine" : 247,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 171
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5497,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 817
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1690,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 271
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 852,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1494,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 247
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4381,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 656
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4178,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 628
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7032,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1030
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1690,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 271
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7733,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1116
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 932,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1865,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 293
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7733,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1116
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2717,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7995,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1149
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 412,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2132,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8203,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1193
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 44,
      "endLine" : 53,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalVerticalLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build_release.py",
        "extension" : "py",
        "linesOfCode" : 102,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 172,
      "endLine" : 179,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "build_release.py",
        "extension" : "py",
        "linesOfCode" : 102,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 213,
      "endLine" : 220,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 282,
      "endLine" : 291,
      "cleanedStartLine" : 210,
      "cleanedEndLine" : 217
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 307,
      "endLine" : 315,
      "cleanedStartLine" : 230,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 141,
      "endLine" : 149,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 163,
      "endLine" : 171,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 135
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 135,
      "endLine" : 142,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 169,
      "endLine" : 176,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/canvas/AwtCanvasControl.kt",
        "extension" : "kt",
        "linesOfCode" : 93,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 100,
      "endLine" : 108,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/canvas/AwtCanvasPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 47,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2564,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 402
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 761,
      "endLine" : 768,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2078,
      "endLine" : 2085,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 370
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4178,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 628
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4381,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 656
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 48,
      "endLine" : 57,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 48,
      "endLine" : 58,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1690,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 271
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 412,
      "endLine" : 419,
      "cleanedStartLine" : 308,
      "cleanedEndLine" : 315
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 483,
      "endLine" : 490,
      "cleanedStartLine" : 367,
      "cleanedEndLine" : 374
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1865,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 293
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CartesianCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 17,
      "endLine" : 25,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/FixedRatioCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2717,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 421
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3233,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 479
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2867,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 441
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3233,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 479
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1370,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2564,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 402
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 384
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3587,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 533
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2290,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 364
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3712,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 552
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2132,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 340
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/CorrPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 395,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 334,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 160
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/CorrPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 395,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 334,
      "startLine" : 290,
      "endLine" : 297,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 181
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 631,
      "endLine" : 638,
      "cleanedStartLine" : 527,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 668,
      "endLine" : 675,
      "cleanedStartLine" : 561,
      "cleanedEndLine" : 568
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 384
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4899,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 749
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 280,
      "endLine" : 289,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 219
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 328,
      "endLine" : 337,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 259
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 412,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5952,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 869
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6098,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 893
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 573,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalTiltedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFixedBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 16,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5497,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 817
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 753,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4178,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 628
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5728,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 841
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 137,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 84,
      "endLine" : 91,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 137,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 164,
      "endLine" : 171,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 136,
      "endLine" : 143,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 112
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalSimpleLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 18,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFixedBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 16,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6855,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1011
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 178,
      "endLine" : 186,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 132
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgPathParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 100,
      "endLine" : 108,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgPathParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 121,
      "endLine" : 129,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 753,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 165,
      "endLine" : 172,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 101
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1690,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 271
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 631,
      "endLine" : 638,
      "cleanedStartLine" : 527,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 717,
      "endLine" : 724,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2564,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 402
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5034,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 765
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4899,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 749
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalSimpleLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 18,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalTiltedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5261,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 792
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 129,
      "endLine" : 136,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 647,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1976,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 354
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4762,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 721
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 134,
      "endLine" : 144,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 170,
      "endLine" : 180,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeDSTTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 30,
      "endLine" : 46,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeDSTTest.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 71,
      "endLine" : 87,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDefsElement.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 17,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgGElement.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 17,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 101,
      "endLine" : 108,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 44,
      "endLine" : 53,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 178,
      "endLine" : 187,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5261,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 792
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2433,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalTiltedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1494,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 247
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2744,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 492
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/plot/PlotFigureLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 175,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/LookupStrategyOnMultilayerPlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 921,
      "endLine" : 928,
      "cleanedStartLine" : 759,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 275,
      "endLine" : 282,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 243
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 307,
      "endLine" : 314,
      "cleanedStartLine" : 266,
      "cleanedEndLine" : 273
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalSimpleLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 18,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalVerticalLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeColorOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 307,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 289,
      "startLine" : 176,
      "endLine" : 184,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeColorOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 307,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 289,
      "startLine" : 186,
      "endLine" : 194,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2844,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 507
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 348,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 273,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 90,
      "endLine" : 97,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 147,
      "endLine" : 156,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3065,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/datetime/tz/TimeZonesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/datetime/tz/TimeZonesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 76,
      "endLine" : 85,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/PlotLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/figure/plot/PlotFigureLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 175,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1494,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 247
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/stat.py",
        "extension" : "py",
        "linesOfCode" : 92,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 149,
      "endLine" : 156,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/stat.py",
        "extension" : "py",
        "linesOfCode" : 92,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 312,
      "endLine" : 319,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2132,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 340
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6493,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 953
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2717,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 421
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3056,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 318,
      "endLine" : 325,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 259
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1706,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 308
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 776,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 126
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8711,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1290
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1278,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 236
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9168,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1384
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 201,
      "endLine" : 208,
      "cleanedStartLine" : 145,
      "cleanedEndLine" : 152
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 221,
      "endLine" : 228,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 32,
      "endLine" : 42,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3587,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 533
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 692,
      "endLine" : 699,
      "cleanedStartLine" : 585,
      "cleanedEndLine" : 592
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 723,
      "endLine" : 730,
      "cleanedStartLine" : 612,
      "cleanedEndLine" : 619
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8879,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1316
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9005,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1336
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFixedBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 16,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 147,
      "endLine" : 154,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 343,
      "endLine" : 350,
      "cleanedStartLine" : 300,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8203,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1193
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 107,
      "endLine" : 117,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 94
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 167,
      "endLine" : 177,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 148
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/tools/DefaultToolbarJs.kt",
        "extension" : "kt",
        "linesOfCode" : 155,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 77,
      "endLine" : 87,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/tools/SandboxToolbarJs.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 50,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/kotlin-bridge/lets_plot_kotlin_bridge.c",
        "extension" : "c",
        "linesOfCode" : 165,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 142,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "python-package/kotlin-bridge/lets_plot_kotlin_bridge.c",
        "extension" : "c",
        "linesOfCode" : 165,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 142,
      "startLine" : 84,
      "endLine" : 92,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/data/DataProcessing.kt",
        "extension" : "kt",
        "linesOfCode" : 403,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 327,
      "startLine" : 70,
      "endLine" : 77,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/data/DataProcessing.kt",
        "extension" : "kt",
        "linesOfCode" : 403,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 327,
      "startLine" : 86,
      "endLine" : 93,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 497,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 653,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 220,
      "endLine" : 227,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 220,
      "endLine" : 227,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 248,
      "endLine" : 255,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 180
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgImageElement.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 67,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgSvgElement.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 58,
      "endLine" : 71,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6599,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 974
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6728,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 992
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 954,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 19,
      "endLine" : 28,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReferenceProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 96,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReferenceProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5952,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 869
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 273,
      "endLine" : 280,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 178
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 326,
      "endLine" : 333,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 220
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2167,
      "endLine" : 2174,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2836,
      "endLine" : 2843,
      "cleanedStartLine" : 499,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8711,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1290
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6359,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 933
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2290,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 364
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2167,
      "endLine" : 2174,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2736,
      "endLine" : 2743,
      "cleanedStartLine" : 484,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 273,
      "endLine" : 280,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 178
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 362,
      "endLine" : 369,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 247
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/values/ThemeValuesRBW.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/values/ThemeValuesRGrey.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2515,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 377,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 164,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6242,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 914
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6359,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 933
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8431,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1244
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6493,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 953
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/core.py",
        "extension" : "py",
        "linesOfCode" : 369,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 350,
      "startLine" : 499,
      "endLine" : 613,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/subplots.py",
        "extension" : "py",
        "linesOfCode" : 71,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 104,
      "endLine" : 210,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2253,
      "endLine" : 2260,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2836,
      "endLine" : 2843,
      "cleanedStartLine" : 499,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/MarginalLayerCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/ProjectionCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8431,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1244
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2253,
      "endLine" : 2260,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2736,
      "endLine" : 2743,
      "cleanedStartLine" : 484,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 422,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 517,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 447,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 585,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 776,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 126
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3056,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7995,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1149
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3543,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3470,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 613
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8203,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1193
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 87,
      "endLine" : 94,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 106,
      "endLine" : 113,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3170,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 561
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7733,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1116
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 164,
      "endLine" : 173,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 87,
      "endLine" : 94,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStat.kt",
        "extension" : "kt",
        "linesOfCode" : 148,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 118,
      "startLine" : 69,
      "endLine" : 78,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SmoothStatInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 76,
      "startLine" : 37,
      "endLine" : 46,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 190,
      "endLine" : 199,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 87,
      "endLine" : 94,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 166,
      "endLine" : 173,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 138
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 954,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 87,
      "endLine" : 94,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 136,
      "endLine" : 143,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 112
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7188,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1047
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 381,
      "endLine" : 388,
      "cleanedStartLine" : 306,
      "cleanedEndLine" : 313
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1107,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1888,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7032,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1030
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4762,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 721
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6493,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 953
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4899,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 749
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6855,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1011
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6359,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 933
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7351,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1070
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5034,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 765
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 299,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6242,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 914
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5261,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 792
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7188,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1047
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 57,
      "endLine" : 67,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 103,
      "endLine" : 113,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 180,
      "endLine" : 187,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 900,
      "endLine" : 907,
      "cleanedStartLine" : 222,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 32,
      "endLine" : 41,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3244,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 573
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 382,
      "endLine" : 389,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 314
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 415,
      "endLine" : 423,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 345
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6599,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 974
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6728,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 992
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2951,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1963,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 311
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6599,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 974
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8879,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1316
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9133,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1354
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1794,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 321
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3396,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 599
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3318,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 60,
      "endLine" : 71,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 96,
      "endLine" : 107,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5728,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 841
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5952,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 869
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 60,
      "endLine" : 71,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeFixedBreaksGenTest.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 136,
      "endLine" : 147,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 200,
      "endLine" : 207,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 161
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 224,
      "endLine" : 231,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6098,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 893
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2348,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 420
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 243,
      "endLine" : 250,
      "cleanedStartLine" : 206,
      "cleanedEndLine" : 213
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 307,
      "endLine" : 314,
      "cleanedStartLine" : 266,
      "cleanedEndLine" : 273
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 954,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3350,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 498
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5497,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 817
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 161,
      "endLine" : 170,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 194,
      "endLine" : 203,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 143,
      "endLine" : 152,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 161,
      "endLine" : 170,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 236,
      "endLine" : 245,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1625,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2637,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 168
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksHelperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 263,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 286,
      "endLine" : 293,
      "cleanedStartLine" : 207,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1458,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 267
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1541,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 446,
      "endLine" : 453,
      "cleanedStartLine" : 350,
      "cleanedEndLine" : 357
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DiscreteScaleForContinuousVarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1089,
      "endLine" : 1095,
      "cleanedStartLine" : 271,
      "cleanedEndLine" : 277
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1267,
      "endLine" : 1273,
      "cleanedStartLine" : 316,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1089,
      "endLine" : 1095,
      "cleanedStartLine" : 271,
      "cleanedEndLine" : 277
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1346,
      "endLine" : 1352,
      "cleanedStartLine" : 335,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 279,
      "endLine" : 289,
      "cleanedStartLine" : 189,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 308,
      "endLine" : 318,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 219
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/PolarBreaksTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 103,
      "startLine" : 44,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/PolarBreaksTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 103,
      "startLine" : 64,
      "endLine" : 73,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/geometry/AffineTransformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 74,
      "endLine" : 82,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/geometry/AffineTransformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 155,
      "endLine" : 163,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotInteractor.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 71,
      "endLine" : 77,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipRenderer.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 234,
      "startLine" : 253,
      "endLine" : 259,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BaseYDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDotplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 329,
      "endLine" : 337,
      "cleanedStartLine" : 253,
      "cleanedEndLine" : 259
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 451,
      "endLine" : 460,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 361
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 62,
      "endLine" : 70,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 80,
      "endLine" : 88,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgShape.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 14,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgTextContent.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 43,
      "endLine" : 55,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 335,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 259,
      "startLine" : 40,
      "endLine" : 47,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 335,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 259,
      "startLine" : 205,
      "endLine" : 212,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BaseYDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 56,
      "endLine" : 64,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3349,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 497
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 117
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 154,
      "endLine" : 160,
      "cleanedStartLine" : 127,
      "cleanedEndLine" : 133
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 381,
      "endLine" : 387,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 261
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 416,
      "endLine" : 422,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 117
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 206,
      "endLine" : 212,
      "cleanedStartLine" : 177,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataMetaStoreFactorLevelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 294,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 257,
      "startLine" : 175,
      "endLine" : 181,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataMetaStoreFactorLevelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 294,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 257,
      "startLine" : 181,
      "endLine" : 187,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 153
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 150,
      "endLine" : 156,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeMain/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotReprGenerator.kt",
        "extension" : "kt",
        "linesOfCode" : 303,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 264,
      "startLine" : 187,
      "endLine" : 193,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 504,
      "endLine" : 510,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 137
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 750,
      "endLine" : 756,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/StringFormatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 137,
      "endLine" : 147,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/FormatterUtilTest.kt",
        "extension" : "kt",
        "linesOfCode" : 161,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 180,
      "endLine" : 190,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 195,
      "endLine" : 205,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 216,
      "endLine" : 226,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 761,
      "endLine" : 767,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 732,
      "endLine" : 738,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotAssemblerPlotContextTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotAssemblerPlotContextTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 38,
      "endLine" : 50,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 54,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/FillPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/StackPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 93,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 220,
      "endLine" : 226,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 177
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 378,
      "endLine" : 384,
      "cleanedStartLine" : 303,
      "cleanedEndLine" : 309
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 504,
      "endLine" : 510,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 137
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 919,
      "endLine" : 925,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 67,
      "endLine" : 77,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 90,
      "endLine" : 100,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 220,
      "endLine" : 226,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 177
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 447,
      "endLine" : 453,
      "cleanedStartLine" : 367,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 171,
      "endLine" : 177,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 204,
      "endLine" : 211,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CartesianCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/MarginalLayerCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 635,
      "endLine" : 644,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 518
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 770,
      "endLine" : 778,
      "cleanedStartLine" : 628,
      "cleanedEndLine" : 634
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 761,
      "endLine" : 767,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 901,
      "endLine" : 907,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2866,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 440
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 400,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 323,
      "startLine" : 294,
      "endLine" : 302,
      "cleanedStartLine" : 178,
      "cleanedEndLine" : 184
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/subPlots/CompositeFigureSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 153,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 90,
      "endLine" : 98,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 216,
      "endLine" : 226,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 155
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 237,
      "endLine" : 247,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 171
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 86,
      "endLine" : 92,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_isolated_webview_panel_ctx.py",
        "extension" : "py",
        "linesOfCode" : 53,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 69,
      "endLine" : 75,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_jupyter_notebook_ctx.py",
        "extension" : "py",
        "linesOfCode" : 48,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 76,
      "endLine" : 82,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 702,
      "endLine" : 709,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 601
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 748,
      "endLine" : 755,
      "cleanedStartLine" : 637,
      "cleanedEndLine" : 643
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3586,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 532
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 164,
      "endLine" : 170,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 135
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 163,
      "endLine" : 170,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 131
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 172,
      "endLine" : 179,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 761,
      "endLine" : 767,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1265,
      "endLine" : 1271,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 761,
      "endLine" : 767,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1344,
      "endLine" : 1350,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-livemap/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 61,
        "components" : [ "primary::plot-livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 333,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 278,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 199,
      "cleanedEndLine" : 205
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 333,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 278,
      "startLine" : 283,
      "endLine" : 289,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 218
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 77,
      "endLine" : 86,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 86,
      "endLine" : 94,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1864,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 292
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 237,
      "endLine" : 245,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 451,
      "endLine" : 460,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 361
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 134,
      "endLine" : 140,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 146,
      "endLine" : 152,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 101
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 344
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 225,
      "endLine" : 231,
      "cleanedStartLine" : 166,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 208,
      "endLine" : 215,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 282,
      "endLine" : 289,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 196
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 106,
      "endLine" : 115,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 158,
      "endLine" : 167,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 134,
      "endLine" : 140,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2131,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 339
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 164,
      "endLine" : 170,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 135
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 504,
      "endLine" : 510,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 137
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 581,
      "endLine" : 587,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 156
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 43,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 48,
      "endLine" : 56,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 489,
      "endLine" : 497,
      "cleanedStartLine" : 403,
      "cleanedEndLine" : 409
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 504,
      "endLine" : 512,
      "cleanedStartLine" : 416,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 38,
      "endLine" : 46,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 123,
      "endLine" : 131,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgRootDocumentMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 52,
      "endLine" : 63,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgRootDocumentMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 50,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 98,
      "endLine" : 106,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 338,
      "endLine" : 346,
      "cleanedStartLine" : 275,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 96,
      "startLine" : 57,
      "endLine" : 64,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 96,
      "startLine" : 127,
      "endLine" : 135,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 775,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/FixedRatioCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 192,
      "endLine" : 198,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 149
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 209,
      "endLine" : 215,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 164
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 49,
      "endLine" : 57,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 86,
      "endLine" : 94,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecTestHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 130,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecTestHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 130,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 130,
      "endLine" : 136,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 62,
      "endLine" : 72,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 312,
      "endLine" : 319,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 261
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 353,
      "endLine" : 359,
      "cleanedStartLine" : 292,
      "cleanedEndLine" : 298
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 104,
      "endLine" : 110,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_jupyter_notebook_ctx.py",
        "extension" : "py",
        "linesOfCode" : 48,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/frontend_context/_static_html_page_ctx.py",
        "extension" : "py",
        "linesOfCode" : 42,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 93,
      "endLine" : 102,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 145,
      "endLine" : 154,
      "cleanedStartLine" : 108,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsTransformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 110,
      "startLine" : 28,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/GGBunchTest.kt",
        "extension" : "kt",
        "linesOfCode" : 52,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 17,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 394,
      "endLine" : 400,
      "cleanedStartLine" : 268,
      "cleanedEndLine" : 274
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 416,
      "endLine" : 422,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 288,
      "endLine" : 297,
      "cleanedStartLine" : 204,
      "cleanedEndLine" : 210
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/VerticalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 256,
      "startLine" : 113,
      "endLine" : 122,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 68,
      "endLine" : 74,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 43,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 54,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1001,
      "endLine" : 1007,
      "cleanedStartLine" : 824,
      "cleanedEndLine" : 830
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1031,
      "endLine" : 1037,
      "cleanedStartLine" : 847,
      "cleanedEndLine" : 853
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1001,
      "endLine" : 1007,
      "cleanedStartLine" : 824,
      "cleanedEndLine" : 830
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1062,
      "endLine" : 1068,
      "cleanedStartLine" : 871,
      "cleanedEndLine" : 877
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 81,
      "endLine" : 87,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 86,
      "endLine" : 92,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 198,
      "endLine" : 204,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 318,
      "endLine" : 324,
      "cleanedStartLine" : 258,
      "cleanedEndLine" : 264
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 406,
      "endLine" : 414,
      "cleanedStartLine" : 318,
      "cleanedEndLine" : 324
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 551,
      "endLine" : 559,
      "cleanedStartLine" : 439,
      "cleanedEndLine" : 445
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 281,
      "endLine" : 289,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 219
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 451,
      "endLine" : 460,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 361
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 331,
      "endLine" : 339,
      "cleanedStartLine" : 247,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeomInteractionBuilderCreationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 428,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 354,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeomInteractionBuilderCreationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 428,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 354,
      "startLine" : 153,
      "endLine" : 159,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 80,
      "endLine" : 88,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 59,
      "endLine" : 67,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 18,
      "endLine" : 24,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 919,
      "endLine" : 925,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 181,
      "endLine" : 187,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 603,
      "endLine" : 609,
      "cleanedStartLine" : 544,
      "cleanedEndLine" : 550
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 761,
      "endLine" : 767,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 761,
      "endLine" : 767,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 181,
      "endLine" : 187,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 55,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 750,
      "endLine" : 756,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 65,
      "endLine" : 71,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 307,
      "endLine" : 313,
      "cleanedStartLine" : 266,
      "cleanedEndLine" : 272
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 427,
      "endLine" : 433,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 118
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 581,
      "endLine" : 587,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 156
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 65,
      "endLine" : 71,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 206,
      "cleanedEndLine" : 212
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/MultiShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/TwoShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 65,
      "endLine" : 71,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 275,
      "endLine" : 281,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 242
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/AxisLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 83,
      "endLine" : 89,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalFixedBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 83,
      "endLine" : 89,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 86,
      "endLine" : 92,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/FillPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/StackPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 93,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DiscreteScaleForContinuousVarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 88,
      "endLine" : 98,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DiscreteScaleForContinuousVarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 123,
      "endLine" : 133,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 133,
      "endLine" : 139,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 107
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 155,
      "endLine" : 161,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 126
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecAxisTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecAxisTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/TooltipSpecFactoryTest.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 155,
      "endLine" : 162,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 173,
      "endLine" : 180,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BaseYDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryBinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/StringFormatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 105,
      "endLine" : 114,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/FormatterUtilTest.kt",
        "extension" : "kt",
        "linesOfCode" : 161,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 136,
      "endLine" : 145,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 89,
      "endLine" : 98,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 452,
      "endLine" : 459,
      "cleanedStartLine" : 372,
      "cleanedEndLine" : 378
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 702,
      "endLine" : 709,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 601
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 452,
      "endLine" : 459,
      "cleanedStartLine" : 372,
      "cleanedEndLine" : 378
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 654,
      "endLine" : 661,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 556
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/color/ColorPalette.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 64,
      "endLine" : 79,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/color/ColorPalette.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 95,
      "endLine" : 110,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgBatikPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 89,
      "endLine" : 100,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/commonMain/kotlin/org/jetbrains/letsPlot/raster/mapping/svg/SvgCanvasPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 61,
      "endLine" : 71,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 55,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-stem/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 104,
      "endLine" : 110,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/BarAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 271,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 165,
      "endLine" : 171,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/CrossBarAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 76,
      "endLine" : 82,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/BaseDerivedProperty.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 52,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/ValueProperty.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 41,
      "endLine" : 51,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2078,
      "endLine" : 2084,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/facet/FixedScalesTilesLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 64,
      "endLine" : 73,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/facet/FreeScalesTilesLayouter.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 66,
      "endLine" : 75,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2078,
      "endLine" : 2084,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 181,
      "endLine" : 187,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 123,
      "endLine" : 129,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8430,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1243
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8710,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1289
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotSvgExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 87,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/PlotSvgExportTest.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 87,
      "startLine" : 48,
      "endLine" : 56,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 89,
      "endLine" : 96,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 347,
      "endLine" : 353,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 310
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 572,
      "endLine" : 578,
      "cleanedStartLine" : 515,
      "cleanedEndLine" : 521
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 223,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2289,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 363
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 67,
      "endLine" : 74,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 67,
      "endLine" : 74,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 123,
      "endLine" : 129,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9004,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1335
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8878,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1315
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9167,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1383
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9132,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 273,
      "endLine" : 279,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 919,
      "endLine" : 925,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 347,
      "endLine" : 353,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 310
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 678,
      "endLine" : 684,
      "cleanedStartLine" : 615,
      "cleanedEndLine" : 621
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/AxisUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 192,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/AxisUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 192,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 427,
      "endLine" : 433,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 919,
      "endLine" : 925,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 383,
      "endLine" : 389,
      "cleanedStartLine" : 308,
      "cleanedEndLine" : 314
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 702,
      "endLine" : 709,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 601
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 196
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 641,
      "endLine" : 647,
      "cleanedStartLine" : 580,
      "cleanedEndLine" : 586
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 185,
      "endLine" : 192,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6854,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1010
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReferenceGridTest.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 195,
      "startLine" : 232,
      "endLine" : 238,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 161
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReferenceGridTest.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 195,
      "startLine" : 250,
      "endLine" : 256,
      "cleanedStartLine" : 170,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 273,
      "endLine" : 279,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 504,
      "endLine" : 510,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7187,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1046
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 59,
      "endLine" : 65,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 209,
      "endLine" : 215,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 167
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7347,
      "endLine" : 7353,
      "cleanedStartLine" : 1066,
      "cleanedEndLine" : 1072
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7492,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1092
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 332,
      "endLine" : 338,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 204
    }, {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 207,
      "cleanedEndLine" : 213
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7031,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1029
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7350,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1069
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 21,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 159,
      "endLine" : 167,
      "cleanedStartLine" : 127,
      "cleanedEndLine" : 133
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 383,
      "endLine" : 389,
      "cleanedStartLine" : 308,
      "cleanedEndLine" : 314
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 654,
      "endLine" : 661,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 556
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 427,
      "endLine" : 433,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 750,
      "endLine" : 756,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 273,
      "endLine" : 279,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 750,
      "endLine" : 756,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 427,
      "endLine" : 433,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 504,
      "endLine" : 510,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 141,
      "endLine" : 147,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 159,
      "endLine" : 165,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 120
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7732,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1115
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 72,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "python-extension/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 79,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 220,
      "endLine" : 226,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 177
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 743,
      "endLine" : 749,
      "cleanedStartLine" : 632,
      "cleanedEndLine" : 638
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7994,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1148
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 564,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8202,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1192
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 49,
      "endLine" : 65,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 125,
      "endLine" : 139,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/MultiShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/SingletonGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 134,
      "endLine" : 140,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 312,
      "endLine" : 319,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 261
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 353,
      "endLine" : 359,
      "cleanedStartLine" : 292,
      "cleanedEndLine" : 298
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 273,
      "endLine" : 279,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/ProjectionCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/OrderOptionsConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 274,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 231,
      "startLine" : 253,
      "endLine" : 260,
      "cleanedStartLine" : 169,
      "cleanedEndLine" : 175
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1344,
      "endLine" : 1350,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/FixedRatioCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/MarginalLayerCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BaseYDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryStat.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/FillPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/StackPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 93,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/BarAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 271,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 94,
      "endLine" : 101,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/CrossBarAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 752,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 901,
      "endLine" : 907,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/LinePath.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 129,
      "endLine" : 135,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/LinePath.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 174,
      "endLine" : 180,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 87,
      "endLine" : 94,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalFlexBreaksLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 81,
      "endLine" : 87,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/api/PathWrappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 90,
      "endLine" : 100,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/api/PathWrappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 140,
      "endLine" : 150,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 595,
      "endLine" : 601,
      "cleanedStartLine" : 488,
      "cleanedEndLine" : 494
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 208,
      "endLine" : 215,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 411,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/MarginalLayerCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2716,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 420
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 139,
      "endLine" : 145,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 105,
      "endLine" : 111,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 77
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/_kbridge.py",
        "extension" : "py",
        "linesOfCode" : 90,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 73,
      "endLine" : 79,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/_kbridge.py",
        "extension" : "py",
        "linesOfCode" : 90,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 119,
      "endLine" : 192,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 164,
      "endLine" : 170,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 135
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 282,
      "endLine" : 289,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 196
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 134,
      "endLine" : 140,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 195,
      "endLine" : 203,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 451,
      "endLine" : 460,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 361
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/BogusContext.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/GeomContextBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 160,
      "endLine" : 166,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 495,
      "endLine" : 501,
      "cleanedStartLine" : 460,
      "cleanedEndLine" : 466
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 104,
      "endLine" : 110,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/ContextStateDelegate.kt",
        "extension" : "kt",
        "linesOfCode" : 261,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 215,
      "startLine" : 129,
      "endLine" : 135,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 93,
      "endLine" : 99,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 76,
      "endLine" : 83,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 141,
      "endLine" : 148,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 76,
      "endLine" : 83,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 114,
      "endLine" : 122,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1962,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 310
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 48,
      "endLine" : 56,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/ggbunch_.py",
        "extension" : "py",
        "linesOfCode" : 30,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 85,
      "endLine" : 96,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/gggrid_.py",
        "extension" : "py",
        "linesOfCode" : 50,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 128,
      "endLine" : 139,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 39,
      "endLine" : 48,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 68,
      "endLine" : 77,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 38,
      "endLine" : 50,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 750,
      "endLine" : 756,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 919,
      "endLine" : 925,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 298,
      "endLine" : 304,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 204
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 318,
      "endLine" : 324,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 218
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 31,
      "endLine" : 39,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 197,
      "endLine" : 203,
      "cleanedStartLine" : 151,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 220,
      "endLine" : 226,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1689,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 270
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 293,
      "endLine" : 300,
      "cleanedStartLine" : 219,
      "cleanedEndLine" : 225
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 317,
      "endLine" : 324,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 245
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/FixedRatioCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/ProjectionCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 119,
      "endLine" : 128,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 171,
      "endLine" : 180,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 134
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1142,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 178,
      "endLine" : 184,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 142
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 209,
      "endLine" : 215,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 167
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/plotson/InlineOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 64,
      "endLine" : 75,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/plotson/InlineOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 105,
      "endLine" : 116,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotAssemblerPlotContextTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1036,
      "endLine" : 1042,
      "cleanedStartLine" : 852,
      "cleanedEndLine" : 858
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2563,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 401
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 93,
      "endLine" : 99,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3711,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 551
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 159,
      "endLine" : 165,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 919,
      "endLine" : 925,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/interact/feedback/DrawRectFeedback.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 93,
      "endLine" : 99,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/interact/feedback/DrawRectFeedback.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 101,
      "endLine" : 107,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 673,
      "endLine" : 679,
      "cleanedStartLine" : 562,
      "cleanedEndLine" : 568
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/FillPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 87,
      "endLine" : 95,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/pos/StackPosTest.kt",
        "extension" : "kt",
        "linesOfCode" : 93,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dfStat.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 93,
      "endLine" : 99,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 254,
      "endLine" : 260,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 80,
      "endLine" : 92,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 107,
      "endLine" : 119,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 484,
      "endLine" : 490,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 514,
      "endLine" : 520,
      "cleanedStartLine" : 424,
      "cleanedEndLine" : 430
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 427,
      "endLine" : 433,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 118
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 68,
      "endLine" : 74,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 640,
      "endLine" : 646,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 136,
      "endLine" : 145,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 155,
      "endLine" : 164,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 119,
      "endLine" : 125,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 301,
      "endLine" : 308,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 581,
      "endLine" : 587,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 156
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 484,
      "endLine" : 490,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 597,
      "endLine" : 603,
      "cleanedStartLine" : 497,
      "cleanedEndLine" : 503
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/setup.py",
        "extension" : "py",
        "linesOfCode" : 150,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 87,
      "endLine" : 93,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "python-package/setup.py",
        "extension" : "py",
        "linesOfCode" : 150,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 750,
      "endLine" : 756,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 68,
      "endLine" : 74,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 347,
      "endLine" : 353,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 310
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/coord/CoordinatesMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 83,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/coord/CoordinatesMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 121,
      "endLine" : 127,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ObservableHashSetTest.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 209,
      "endLine" : 215,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 167
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6492,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 952
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6727,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 991
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6598,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 973
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1182,
      "endLine" : 1188,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 502,
      "endLine" : 508,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 471
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 181,
      "endLine" : 187,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1265,
      "endLine" : 1271,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 415,
      "endLine" : 421,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1363,
      "endLine" : 1369,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 166,
      "endLine" : 172,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1031,
      "endLine" : 1037,
      "cleanedStartLine" : 847,
      "cleanedEndLine" : 853
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1062,
      "endLine" : 1068,
      "cleanedStartLine" : 871,
      "cleanedEndLine" : 877
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 94,
      "endLine" : 101,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/commonMain/kotlin/org/jetbrains/letsPlot/raster/mapping/svg/SvgGElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 327,
      "endLine" : 333,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 267
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 301,
      "endLine" : 307,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 243
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5727,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 840
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorBrewerMapperProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 97,
      "endLine" : 104,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 65,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5951,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 868
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1699,
      "endLine" : 1705,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1881,
      "endLine" : 1887,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 338
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6097,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 892
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 277,
      "endLine" : 283,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 229
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 288,
      "endLine" : 294,
      "cleanedStartLine" : 234,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 273,
      "endLine" : 279,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 99
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 152,
      "endLine" : 158,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 185,
      "endLine" : 191,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 147
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 181,
      "endLine" : 187,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 732,
      "endLine" : 738,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/PropertiesSynchronizationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 15,
      "endLine" : 22,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/PropertiesSynchronizationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 76,
      "endLine" : 83,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 241,
      "endLine" : 247,
      "cleanedStartLine" : 167,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 263,
      "endLine" : 269,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1271,
      "endLine" : 1277,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 235
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 223,
      "endLine" : 229,
      "cleanedStartLine" : 192,
      "cleanedEndLine" : 198
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 218
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 654,
      "endLine" : 661,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 556
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 748,
      "endLine" : 755,
      "cleanedStartLine" : 637,
      "cleanedEndLine" : 643
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/PropertiesSynchronizationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 15,
      "endLine" : 22,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/PropertiesSynchronizationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6241,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 913
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 145,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStat.kt",
        "extension" : "kt",
        "linesOfCode" : 300,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6358,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 932
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4761,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 720
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3232,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 478
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4898,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 748
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5033,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 764
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5260,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 791
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Density2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 376,
      "endLine" : 385,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 284
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 485,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 408,
      "startLine" : 390,
      "endLine" : 399,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 295
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7184,
      "endLine" : 7190,
      "cleanedStartLine" : 1043,
      "cleanedEndLine" : 1049
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7492,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1092
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/FlippedTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BaseYDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotOutlierStat.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2341,
      "endLine" : 2347,
      "cleanedStartLine" : 413,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1493,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 246
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 417,
      "endLine" : 423,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 357
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 370
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5496,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 816
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4177,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 627
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 581,
      "endLine" : 587,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 750,
      "endLine" : 756,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4380,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 655
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 271,
      "endLine" : 277,
      "cleanedStartLine" : 242,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CartesianCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/ProjectionCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 162,
      "endLine" : 170,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 451,
      "endLine" : 460,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 361
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 416,
      "endLine" : 423,
      "cleanedStartLine" : 339,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 702,
      "endLine" : 709,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 601
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 416,
      "endLine" : 423,
      "cleanedStartLine" : 339,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 654,
      "endLine" : 661,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 556
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 581,
      "endLine" : 587,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 919,
      "endLine" : 925,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 292,
      "endLine" : 298,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 340,
      "endLine" : 346,
      "cleanedStartLine" : 267,
      "cleanedEndLine" : 273
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 364,
      "endLine" : 370,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 293
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1787,
      "endLine" : 1793,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 634,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 611,
      "startLine" : 383,
      "endLine" : 389,
      "cleanedStartLine" : 351,
      "cleanedEndLine" : 357
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 188,
      "endLine" : 194,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_colormap_mpl.py",
        "extension" : "py",
        "linesOfCode" : 72,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/BatikTargetPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 104,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 94,
      "endLine" : 102,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/DomTargetPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/setup.py",
        "extension" : "py",
        "linesOfCode" : 150,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 68,
      "endLine" : 74,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "python-package/setup.py",
        "extension" : "py",
        "linesOfCode" : 150,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3463,
      "endLine" : 3469,
      "cleanedStartLine" : 606,
      "cleanedEndLine" : 612
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 81,
      "endLine" : 88,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 90,
      "endLine" : 97,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/GlyphPair.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/MultiShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3536,
      "endLine" : 3542,
      "cleanedStartLine" : 619,
      "cleanedEndLine" : 625
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1188,
      "endLine" : 1194,
      "cleanedStartLine" : 296,
      "cleanedEndLine" : 302
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1346,
      "endLine" : 1352,
      "cleanedStartLine" : 335,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1188,
      "endLine" : 1194,
      "cleanedStartLine" : 296,
      "cleanedEndLine" : 302
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1267,
      "endLine" : 1273,
      "cleanedStartLine" : 316,
      "cleanedEndLine" : 322
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3389,
      "endLine" : 3395,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 598
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3237,
      "endLine" : 3243,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1618,
      "endLine" : 1624,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3311,
      "endLine" : 3317,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 134,
      "endLine" : 140,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 55,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 69,
      "endLine" : 75,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 125,
      "endLine" : 131,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 114,
      "endLine" : 122,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 141,
      "endLine" : 148,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 17,
      "endLine" : 25,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2078,
      "endLine" : 2084,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 732,
      "endLine" : 738,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2837,
      "endLine" : 2843,
      "cleanedStartLine" : 500,
      "cleanedEndLine" : 506
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2944,
      "endLine" : 2950,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 520
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1100,
      "endLine" : 1106,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 209
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3163,
      "endLine" : 3169,
      "cleanedStartLine" : 554,
      "cleanedEndLine" : 560
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 3058,
      "endLine" : 3064,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2630,
      "endLine" : 2636,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 472
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2508,
      "endLine" : 2514,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 390,
      "endLine" : 396,
      "cleanedStartLine" : 356,
      "cleanedEndLine" : 362
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 278,
      "endLine" : 284,
      "cleanedStartLine" : 247,
      "cleanedEndLine" : 253
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 490,
      "endLine" : 496,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 51,
      "endLine" : 60,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-builder/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 56,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 54,
      "endLine" : 62,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 141,
      "endLine" : 147,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 159,
      "endLine" : 165,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 115
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3055,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 460
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/transform/CreateApplicableDomainTest.kt",
        "extension" : "kt",
        "linesOfCode" : 194,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 175,
      "startLine" : 34,
      "endLine" : 44,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/transform/EnsureApplicableDomainTest.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 34,
      "endLine" : 44,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 402,
      "endLine" : 408,
      "cleanedStartLine" : 337,
      "cleanedEndLine" : 343
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 453,
      "endLine" : 459,
      "cleanedStartLine" : 385,
      "cleanedEndLine" : 391
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 80,
      "endLine" : 89,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 132,
      "endLine" : 141,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/markdown/EmphasisWithAsteriskTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 122,
      "startLine" : 13,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/markdown/EmphasisWithUnderscoreTest.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 13,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CartesianCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/PolarCoordProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 64,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 51,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 17,
      "endLine" : 25,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 81,
      "endLine" : 89,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 142,
      "endLine" : 150,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 149,
      "endLine" : 155,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 112
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 167,
      "endLine" : 173,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 631,
      "endLine" : 637,
      "cleanedStartLine" : 582,
      "cleanedEndLine" : 588
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 235,
      "endLine" : 241,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/VerticalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 256,
      "startLine" : 106,
      "endLine" : 116,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/VerticalTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 256,
      "startLine" : 144,
      "endLine" : 153,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 101
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 641,
      "endLine" : 649,
      "cleanedStartLine" : 517,
      "cleanedEndLine" : 523
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 704,
      "endLine" : 711,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2737,
      "endLine" : 2743,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 370,
      "endLine" : 376,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 440,
      "endLine" : 446,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 578,
      "endLine" : 584,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 510,
      "endLine" : 516,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 157,
      "endLine" : 163,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/BreakLabelsLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/BreakLabelsLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 226,
      "endLine" : 232,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 221,
      "endLine" : 227,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 178
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 255,
      "endLine" : 261,
      "cleanedStartLine" : 201,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1534,
      "endLine" : 1540,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 279
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 296,
      "endLine" : 302,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 641,
      "endLine" : 647,
      "cleanedStartLine" : 580,
      "cleanedEndLine" : 586
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 770,
      "endLine" : 776,
      "cleanedStartLine" : 692,
      "cleanedEndLine" : 698
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2168,
      "endLine" : 2174,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2078,
      "endLine" : 2084,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1265,
      "endLine" : 1271,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1451,
      "endLine" : 1457,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 266
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2254,
      "endLine" : 2260,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2078,
      "endLine" : 2084,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1344,
      "endLine" : 1350,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1969,
      "endLine" : 1975,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2432,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 383
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/_kbridge.py",
        "extension" : "py",
        "linesOfCode" : 90,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 37,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/_kbridge.py",
        "extension" : "py",
        "linesOfCode" : 90,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 51,
      "endLine" : 60,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetCollectorWithLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/YOrientationTargetCollector.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 925,
      "endLine" : 931,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 266,
      "endLine" : 272,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1015,
      "endLine" : 1021,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 194
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 83,
      "endLine" : 89,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 216,
      "endLine" : 223,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 156
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/kotlin-bridge/lets_plot_kotlin_bridge.c",
        "extension" : "c",
        "linesOfCode" : 165,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 142,
      "startLine" : 151,
      "endLine" : 157,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "python-package/kotlin-bridge/lets_plot_kotlin_bridge.c",
        "extension" : "c",
        "linesOfCode" : 165,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 142,
      "startLine" : 185,
      "endLine" : 191,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 108
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 106,
      "endLine" : 115,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 99
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 953,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3924,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 575
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2078,
      "endLine" : 2084,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 901,
      "endLine" : 907,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 202,
      "endLine" : 209,
      "cleanedStartLine" : 156,
      "cleanedEndLine" : 162
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 702,
      "endLine" : 709,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 601
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/api/PathLayerBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 190,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 135,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/api/PolygonLayerBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 65,
      "endLine" : 71,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssembler.kt",
        "extension" : "kt",
        "linesOfCode" : 244,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 205,
      "startLine" : 196,
      "endLine" : 203,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssembler.kt",
        "extension" : "kt",
        "linesOfCode" : 244,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 205,
      "startLine" : 223,
      "endLine" : 229,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 164
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/AxisUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 192,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 110,
      "endLine" : 116,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PolarAxisUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 132,
      "startLine" : 136,
      "endLine" : 142,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 115,
      "endLine" : 121,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 170,
      "endLine" : 176,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 202,
      "endLine" : 209,
      "cleanedStartLine" : 156,
      "cleanedEndLine" : 162
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 654,
      "endLine" : 661,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 556
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/facet/FacetGrid.kt",
        "extension" : "kt",
        "linesOfCode" : 164,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 134,
      "endLine" : 141,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/facet/FacetGrid.kt",
        "extension" : "kt",
        "linesOfCode" : 164,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 151,
      "endLine" : 158,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3343,
      "endLine" : 3348,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 496
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1270,
      "endLine" : 1275,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 233
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/transform/CreateApplicableDomainTest.kt",
        "extension" : "kt",
        "linesOfCode" : 194,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 175,
      "startLine" : 210,
      "endLine" : 217,
      "cleanedStartLine" : 170,
      "cleanedEndLine" : 175
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/transform/EnsureApplicableDomainTest.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 188,
      "endLine" : 195,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1490,
      "endLine" : 1495,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5724,
      "endLine" : 5729,
      "cleanedStartLine" : 837,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 593,
      "endLine" : 598,
      "cleanedStartLine" : 486,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1533,
      "endLine" : 1538,
      "cleanedStartLine" : 272,
      "cleanedEndLine" : 277
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4374,
      "endLine" : 4379,
      "cleanedStartLine" : 649,
      "cleanedEndLine" : 654
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4171,
      "endLine" : 4176,
      "cleanedStartLine" : 621,
      "cleanedEndLine" : 626
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9001,
      "endLine" : 9006,
      "cleanedStartLine" : 1332,
      "cleanedEndLine" : 1337
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4377,
      "endLine" : 4382,
      "cleanedStartLine" : 652,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgBatikPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 61,
      "endLine" : 71,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgDomPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 29,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 57,
      "endLine" : 63,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 351,
      "endLine" : 356,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 79,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "visual-testing/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 38,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 57,
      "endLine" : 63,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 126,
      "endLine" : 132,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4755,
      "endLine" : 4760,
      "cleanedStartLine" : 714,
      "cleanedEndLine" : 719
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 403,
      "endLine" : 408,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 704,
      "endLine" : 709,
      "cleanedStartLine" : 591,
      "cleanedEndLine" : 596
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 351,
      "endLine" : 356,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointLegendKeyElementFactory.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/legend/LollipopLegendKeyElementFactory.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDotplotStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 149,
      "endLine" : 156,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 111,
      "endLine" : 118,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoBoundingBoxCalculatorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 264,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 218,
      "startLine" : 75,
      "endLine" : 82,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoBoundingBoxCalculatorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 264,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 218,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 772,
      "endLine" : 777,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 81,
      "endLine" : 86,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 88,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DotplotStat.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BaseYDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 64,
      "endLine" : 69,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 278,
      "endLine" : 283,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 221
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 233,
      "endLine" : 239,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 193
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 324,
      "endLine" : 330,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 269
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 89,
      "endLine" : 94,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6724,
      "endLine" : 6729,
      "cleanedStartLine" : 988,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 352,
      "endLine" : 358,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 538,
      "endLine" : 544,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 402
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/OptionsConfiguratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 108,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 81,
      "endLine" : 86,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/OptionsConfiguratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 108,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/chart/polygon/PolygonLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/chart/polygon/PolygonLocator.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5027,
      "endLine" : 5032,
      "cleanedStartLine" : 758,
      "cleanedEndLine" : 763
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 144,
      "endLine" : 151,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 214,
      "endLine" : 221,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4892,
      "endLine" : 4897,
      "cleanedStartLine" : 742,
      "cleanedEndLine" : 747
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgClipPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgGElement.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5254,
      "endLine" : 5259,
      "cleanedStartLine" : 785,
      "cleanedEndLine" : 790
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/_type_utils.py",
        "extension" : "py",
        "linesOfCode" : 88,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/bistro/corr.py",
        "extension" : "py",
        "linesOfCode" : 171,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 164,
      "startLine" : 10,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/xml/XmlTest.kt",
        "extension" : "kt",
        "linesOfCode" : 279,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 253,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/xml/XmlTest.kt",
        "extension" : "kt",
        "linesOfCode" : 279,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 253,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5490,
      "endLine" : 5495,
      "cleanedStartLine" : 810,
      "cleanedEndLine" : 815
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5721,
      "endLine" : 5726,
      "cleanedStartLine" : 834,
      "cleanedEndLine" : 839
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 437,
      "endLine" : 442,
      "cleanedStartLine" : 347,
      "cleanedEndLine" : 352
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 705,
      "endLine" : 710,
      "cleanedStartLine" : 592,
      "cleanedEndLine" : 597
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 145,
      "startLine" : 185,
      "endLine" : 191,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStat.kt",
        "extension" : "kt",
        "linesOfCode" : 300,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 323,
      "endLine" : 329,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 202,
      "endLine" : 207,
      "cleanedStartLine" : 156,
      "cleanedEndLine" : 161
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 352,
      "endLine" : 358,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 405,
      "endLine" : 411,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 290
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 315,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 266,
      "startLine" : 201,
      "endLine" : 207,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 315,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 266,
      "startLine" : 257,
      "endLine" : 263,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7347,
      "endLine" : 7352,
      "cleanedStartLine" : 1066,
      "cleanedEndLine" : 1071
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStat.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 145,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStat.kt",
        "extension" : "kt",
        "linesOfCode" : 300,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7025,
      "endLine" : 7030,
      "cleanedStartLine" : 1023,
      "cleanedEndLine" : 1028
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 970,
      "endLine" : 978,
      "cleanedStartLine" : 802,
      "cleanedEndLine" : 807
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 988,
      "endLine" : 996,
      "cleanedStartLine" : 817,
      "cleanedEndLine" : 822
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6848,
      "endLine" : 6853,
      "cleanedStartLine" : 1004,
      "cleanedEndLine" : 1009
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 546,
      "endLine" : 551,
      "cleanedStartLine" : 452,
      "cleanedEndLine" : 457
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 580,
      "endLine" : 585,
      "cleanedStartLine" : 482,
      "cleanedEndLine" : 487
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/GroupRandomSamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/GroupSystematicSamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 400,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 323,
      "startLine" : 284,
      "endLine" : 291,
      "cleanedStartLine" : 170,
      "cleanedEndLine" : 175
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/subPlots/CompositeFigureSvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 153,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7344,
      "endLine" : 7349,
      "cleanedStartLine" : 1063,
      "cleanedEndLine" : 1068
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7181,
      "endLine" : 7186,
      "cleanedStartLine" : 1040,
      "cleanedEndLine" : 1045
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 352,
      "endLine" : 358,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 471,
      "endLine" : 477,
      "cleanedStartLine" : 341,
      "cleanedEndLine" : 346
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/interact/mouse/MouseDoubleClickInteraction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/interact/mouse/MouseWheelInteraction.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 781,
      "endLine" : 786,
      "cleanedStartLine" : 666,
      "cleanedEndLine" : 671
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 264,
      "endLine" : 269,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourFillHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 105,
      "endLine" : 113,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 442,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 357,
      "startLine" : 227,
      "endLine" : 235,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 151
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2429,
      "endLine" : 2434,
      "cleanedStartLine" : 380,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/tools/DefaultToolbarJs.kt",
        "extension" : "kt",
        "linesOfCode" : 155,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 61,
      "endLine" : 66,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/tools/SandboxToolbarJs.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 72,
      "endLine" : 77,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/dom/EventTargetEx.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/domExtensions/EventTarget.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 117,
      "endLine" : 122,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 535,
      "endLine" : 540,
      "cleanedStartLine" : 443,
      "cleanedEndLine" : 448
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 620,
      "endLine" : 625,
      "cleanedStartLine" : 518,
      "cleanedEndLine" : 523
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2860,
      "endLine" : 2865,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 439
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7729,
      "endLine" : 7734,
      "cleanedStartLine" : 1112,
      "cleanedEndLine" : 1117
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3580,
      "endLine" : 3585,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 531
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 553,
      "endLine" : 558,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 453
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 148,
      "endLine" : 153,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 130
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3918,
      "endLine" : 3923,
      "cleanedStartLine" : 569,
      "cleanedEndLine" : 574
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 63,
      "endLine" : 68,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3705,
      "endLine" : 3710,
      "cleanedStartLine" : 545,
      "cleanedEndLine" : 550
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHuePaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8876,
      "endLine" : 8881,
      "cleanedStartLine" : 1313,
      "cleanedEndLine" : 1318
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 94,
      "endLine" : 99,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 76
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 553,
      "endLine" : 558,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 453
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 216,
      "endLine" : 221,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 553,
      "endLine" : 558,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 453
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 184,
      "endLine" : 189,
      "cleanedStartLine" : 159,
      "cleanedEndLine" : 164
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 593,
      "endLine" : 598,
      "cleanedStartLine" : 486,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 106,
      "endLine" : 111,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 332,
      "endLine" : 337,
      "cleanedStartLine" : 258,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 477,
      "endLine" : 482,
      "cleanedStartLine" : 383,
      "cleanedEndLine" : 388
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 267,
      "endLine" : 273,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 244
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 603,
      "endLine" : 609,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 571
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9165,
      "endLine" : 9170,
      "cleanedStartLine" : 1381,
      "cleanedEndLine" : 1386
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1202,
      "endLine" : 1208,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1281,
      "endLine" : 1287,
      "cleanedStartLine" : 326,
      "cleanedEndLine" : 331
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 117,
      "endLine" : 182,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1110,
      "endLine" : 1186,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HistogramGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 89,
      "endLine" : 94,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoBoundingBoxCalculatorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 264,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 218,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoBoundingBoxCalculatorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 264,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 218,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/Curve.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/Curve.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/facet/FacetGrid.kt",
        "extension" : "kt",
        "linesOfCode" : 164,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 184,
      "endLine" : 189,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/facet/FacetWrap.kt",
        "extension" : "kt",
        "linesOfCode" : 147,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 115,
      "startLine" : 134,
      "endLine" : 139,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1858,
      "endLine" : 1863,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 150,
      "endLine" : 155,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityRidgesStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 185,
      "endLine" : 190,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 146,
      "endLine" : 154,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 172,
      "endLine" : 180,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 134
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityRidgesStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SinaStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 170,
      "endLine" : 175,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 596,
      "endLine" : 602,
      "cleanedStartLine" : 482,
      "cleanedEndLine" : 487
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 617,
      "endLine" : 623,
      "cleanedStartLine" : 499,
      "cleanedEndLine" : 504
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 73,
      "endLine" : 79,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 154,
      "endLine" : 161,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 469,
      "endLine" : 474,
      "cleanedStartLine" : 385,
      "cleanedEndLine" : 390
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 597,
      "endLine" : 602,
      "cleanedStartLine" : 497,
      "cleanedEndLine" : 502
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/_kbridge.py",
        "extension" : "py",
        "linesOfCode" : 90,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/_kbridge.py",
        "extension" : "py",
        "linesOfCode" : 90,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 195,
      "endLine" : 200,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 469,
      "endLine" : 474,
      "cleanedStartLine" : 385,
      "cleanedEndLine" : 390
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 514,
      "endLine" : 519,
      "cleanedStartLine" : 424,
      "cleanedEndLine" : 429
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6724,
      "endLine" : 6729,
      "cleanedStartLine" : 988,
      "cleanedEndLine" : 993
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5257,
      "endLine" : 5262,
      "cleanedStartLine" : 788,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 362,
      "endLine" : 367,
      "cleanedStartLine" : 300,
      "cleanedEndLine" : 305
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 377,
      "endLine" : 382,
      "cleanedStartLine" : 314,
      "cleanedEndLine" : 319
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 84,
      "endLine" : 93,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/aes/AesInitValue.kt",
        "extension" : "kt",
        "linesOfCode" : 146,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 151,
      "endLine" : 160,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/DefaultNaValue.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 148,
      "endLine" : 157,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 240,
      "endLine" : 245,
      "cleanedStartLine" : 209,
      "cleanedEndLine" : 214
    }, {
      "file" : {
        "relativePath" : "commons/src/jvmTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/WordWrapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 262,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 251,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 229,
      "cleanedEndLine" : 234
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 734,
      "endLine" : 739,
      "cleanedStartLine" : 623,
      "cleanedEndLine" : 628
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 108,
      "endLine" : 113,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 702,
      "endLine" : 707,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 600
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6094,
      "endLine" : 6099,
      "cleanedStartLine" : 889,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 125,
      "endLine" : 134,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/BarAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 271,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 158,
      "endLine" : 163,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/annotation/CrossBarAnnotation.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 471,
      "endLine" : 477,
      "cleanedStartLine" : 341,
      "cleanedEndLine" : 346
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 538,
      "endLine" : 544,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 402
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 154,
      "endLine" : 161,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 152,
      "endLine" : 159,
      "cleanedStartLine" : 117,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 264,
      "endLine" : 269,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 435,
      "endLine" : 440,
      "cleanedStartLine" : 359,
      "cleanedEndLine" : 364
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 749,
      "endLine" : 754,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2125,
      "endLine" : 2130,
      "cleanedStartLine" : 333,
      "cleanedEndLine" : 338
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HistogramGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 150,
      "endLine" : 155,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/formatting/number/NumberFormatTypeGTest.kt",
        "extension" : "kt",
        "linesOfCode" : 296,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 267,
      "startLine" : 303,
      "endLine" : 308,
      "cleanedStartLine" : 200,
      "cleanedEndLine" : 205
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/formatting/number/NumberFormatTypeGTest.kt",
        "extension" : "kt",
        "linesOfCode" : 296,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 267,
      "startLine" : 329,
      "endLine" : 334,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 227,
      "endLine" : 233,
      "cleanedStartLine" : 183,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssembler.kt",
        "extension" : "kt",
        "linesOfCode" : 244,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 205,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssembler.kt",
        "extension" : "kt",
        "linesOfCode" : 244,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 205,
      "startLine" : 213,
      "endLine" : 218,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 489,
      "endLine" : 494,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 648,
      "endLine" : 653,
      "cleanedStartLine" : 538,
      "cleanedEndLine" : 543
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5272,
      "endLine" : 5277,
      "cleanedStartLine" : 801,
      "cleanedEndLine" : 806
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5507,
      "endLine" : 5512,
      "cleanedStartLine" : 825,
      "cleanedEndLine" : 830
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 141,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 101,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasTestBase.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 96,
      "endLine" : 101,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7184,
      "endLine" : 7189,
      "cleanedStartLine" : 1043,
      "cleanedEndLine" : 1048
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 116,
      "endLine" : 122,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 749,
      "endLine" : 754,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DataVectorsInAesMappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 769,
      "endLine" : 774,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/LookupStrategyOnMultilayerPlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 361,
      "endLine" : 366,
      "cleanedStartLine" : 293,
      "cleanedEndLine" : 298
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2429,
      "endLine" : 2434,
      "cleanedStartLine" : 380,
      "cleanedEndLine" : 385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3708,
      "endLine" : 3713,
      "cleanedStartLine" : 548,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHuePaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 135,
      "endLine" : 140,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 107
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 227,
      "endLine" : 233,
      "cleanedStartLine" : 183,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 94,
      "endLine" : 102,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 172,
      "endLine" : 180,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 134
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 264,
      "endLine" : 271,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 232
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/dom/DomMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 182,
      "endLine" : 189,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/dom/DomMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 237,
      "endLine" : 244,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 135
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 14,
      "endLine" : 19,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 289,
      "endLine" : 294,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 97,
      "endLine" : 102,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 93,
      "endLine" : 98,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 89,
      "endLine" : 94,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6094,
      "endLine" : 6099,
      "cleanedStartLine" : 889,
      "cleanedEndLine" : 894
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 169,
      "endLine" : 174,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 81,
      "endLine" : 86,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/WandClippingPlayground.kt",
        "extension" : "kt",
        "linesOfCode" : 150,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 154,
      "endLine" : 160,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/WandClippingPlayground.kt",
        "extension" : "kt",
        "linesOfCode" : 150,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 182,
      "endLine" : 188,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 654,
      "endLine" : 659,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 555
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/LegendBoxesLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/LegendBoxesLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 400,
      "endLine" : 405,
      "cleanedStartLine" : 323,
      "cleanedEndLine" : 328
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HistogramGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 353,
      "endLine" : 359,
      "cleanedStartLine" : 281,
      "cleanedEndLine" : 286
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 385,
      "endLine" : 390,
      "cleanedStartLine" : 310,
      "cleanedEndLine" : 315
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/color/ColorPalette.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 95,
      "endLine" : 103,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/color/ColorPalette.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 125,
      "endLine" : 133,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/core/multitasking/MicroTaskUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 87,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/core/multitasking/MicroTaskUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 87,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/SvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 180,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/SvgComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 180,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 119,
      "endLine" : 124,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 353,
      "endLine" : 359,
      "cleanedStartLine" : 281,
      "cleanedEndLine" : 286
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 454,
      "endLine" : 460,
      "cleanedStartLine" : 374,
      "cleanedEndLine" : 379
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 274,
      "endLine" : 279,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 163,
      "endLine" : 169,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/spatial/GeoJsonTest.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 197,
      "endLine" : 203,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 428,
      "endLine" : 433,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 428,
      "endLine" : 433,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 274,
      "endLine" : 279,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 554,
      "endLine" : 561,
      "cleanedStartLine" : 499,
      "cleanedEndLine" : 504
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 590,
      "endLine" : 597,
      "cleanedStartLine" : 533,
      "cleanedEndLine" : 538
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 505,
      "endLine" : 510,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 137
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 760,
      "endLine" : 765,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1533,
      "endLine" : 1538,
      "cleanedStartLine" : 272,
      "cleanedEndLine" : 277
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 505,
      "endLine" : 510,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 137
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 416,
      "endLine" : 421,
      "cleanedStartLine" : 339,
      "cleanedEndLine" : 344
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/OptionsConfiguratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 108,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 91,
      "endLine" : 96,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/OptionsConfiguratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 108,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 606,
      "endLine" : 611,
      "cleanedStartLine" : 547,
      "cleanedEndLine" : 552
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 678,
      "endLine" : 683,
      "cleanedStartLine" : 615,
      "cleanedEndLine" : 620
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 760,
      "endLine" : 765,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1270,
      "endLine" : 1275,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 233
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 100,
      "endLine" : 105,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 436,
      "endLine" : 442,
      "cleanedStartLine" : 360,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 478,
      "endLine" : 484,
      "cleanedStartLine" : 399,
      "cleanedEndLine" : 404
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/UpdatableShape.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 13,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/GlyphPair.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 123,
      "endLine" : 128,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 158,
      "endLine" : 163,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 134
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPointsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPointsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 107,
      "endLine" : 113,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 73,
      "endLine" : 79,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2286,
      "endLine" : 2291,
      "cleanedStartLine" : 360,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 196,
      "endLine" : 201,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 204,
      "endLine" : 209,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 572,
      "endLine" : 577,
      "cleanedStartLine" : 515,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 606,
      "endLine" : 611,
      "cleanedStartLine" : 547,
      "cleanedEndLine" : 552
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 314,
      "endLine" : 319,
      "cleanedStartLine" : 256,
      "cleanedEndLine" : 261
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 950,
      "endLine" : 955,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 196,
      "endLine" : 201,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 171,
      "endLine" : 176,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 250,
      "endLine" : 257,
      "cleanedStartLine" : 184,
      "cleanedEndLine" : 189
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 332,
      "endLine" : 339,
      "cleanedStartLine" : 248,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordProviders.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordProviders.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6595,
      "endLine" : 6600,
      "cleanedStartLine" : 970,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2128,
      "endLine" : 2133,
      "cleanedStartLine" : 336,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 108,
      "endLine" : 115,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/YOrientationBackendDataProcTest.kt",
        "extension" : "kt",
        "linesOfCode" : 273,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 225,
      "startLine" : 125,
      "endLine" : 132,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 145,
      "endLine" : 150,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 204,
      "endLine" : 209,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPointsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPointsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 6,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 6,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 354,
      "endLine" : 359,
      "cleanedStartLine" : 293,
      "cleanedEndLine" : 298
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 517,
      "endLine" : 524,
      "cleanedStartLine" : 464,
      "cleanedEndLine" : 469
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 554,
      "endLine" : 561,
      "cleanedStartLine" : 499,
      "cleanedEndLine" : 504
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 63,
      "endLine" : 68,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/color/ColorPalette.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/commons/color/ColorPalette.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 125,
      "endLine" : 133,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4758,
      "endLine" : 4763,
      "cleanedStartLine" : 717,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3583,
      "endLine" : 3588,
      "cleanedStartLine" : 529,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigDiscreteScaleTest.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 108,
      "endLine" : 113,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigDiscreteScaleTest.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 119,
      "endLine" : 124,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 94,
      "endLine" : 99,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 110,
      "endLine" : 115,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 106,
      "endLine" : 111,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 214,
      "endLine" : 219,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3921,
      "endLine" : 3926,
      "cleanedStartLine" : 572,
      "cleanedEndLine" : 577
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom_function_.py",
        "extension" : "py",
        "linesOfCode" : 73,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 212,
      "endLine" : 217,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 106,
      "endLine" : 111,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 162
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 327,
      "endLine" : 333,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 199
    }, {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 397,
      "endLine" : 403,
      "cleanedStartLine" : 248,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 84,
      "endLine" : 93,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 113,
      "endLine" : 122,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 96,
      "endLine" : 103,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ListListenersTest.kt",
        "extension" : "kt",
        "linesOfCode" : 123,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 87,
      "startLine" : 131,
      "endLine" : 140,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/SetListenersTest.kt",
        "extension" : "kt",
        "linesOfCode" : 57,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 66,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgClipPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgImageElement.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 106,
      "endLine" : 111,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 146,
      "endLine" : 151,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorBrewerPaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorBrewerPaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 59,
      "endLine" : 65,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 184,
      "endLine" : 190,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8199,
      "endLine" : 8204,
      "cleanedStartLine" : 1189,
      "cleanedEndLine" : 1194
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/HorizontalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 63,
      "endLine" : 68,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/VerticalRotatedLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 196,
      "endLine" : 201,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/formatting/string/StringFormatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/FormatterUtilTest.kt",
        "extension" : "kt",
        "linesOfCode" : 161,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 85,
      "endLine" : 92,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/json/JsonFormatter.kt",
        "extension" : "kt",
        "linesOfCode" : 153,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 140,
      "endLine" : 146,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/json/JsonFormatter.kt",
        "extension" : "kt",
        "linesOfCode" : 153,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 158,
      "endLine" : 164,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 101
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 171,
      "endLine" : 176,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 219,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 172,
      "endLine" : 177,
      "cleanedStartLine" : 128,
      "cleanedEndLine" : 133
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 219,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 188,
      "endLine" : 193,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 145
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 141,
      "endLine" : 146,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7729,
      "endLine" : 7734,
      "cleanedStartLine" : 1112,
      "cleanedEndLine" : 1117
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7991,
      "endLine" : 7996,
      "cleanedStartLine" : 1145,
      "cleanedEndLine" : 1150
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "canvas/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/canvas/Path2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 163,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 148,
      "startLine" : 156,
      "endLine" : 161,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 126
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3052,
      "endLine" : 3057,
      "cleanedStartLine" : 457,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 554,
      "endLine" : 561,
      "cleanedStartLine" : 460,
      "cleanedEndLine" : 465
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 571,
      "endLine" : 578,
      "cleanedStartLine" : 475,
      "cleanedEndLine" : 480
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 150,
      "endLine" : 155,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 81,
      "endLine" : 86,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HistogramGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8875,
      "endLine" : 8880,
      "cleanedStartLine" : 1312,
      "cleanedEndLine" : 1317
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 155,
      "endLine" : 161,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 164,
      "endLine" : 170,
      "cleanedStartLine" : 126,
      "cleanedEndLine" : 131
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5257,
      "endLine" : 5262,
      "cleanedStartLine" : 788,
      "cleanedEndLine" : 793
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 760,
      "endLine" : 765,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1014,
      "endLine" : 1019,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 192
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 654,
      "endLine" : 659,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 555
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 226,
      "endLine" : 231,
      "cleanedStartLine" : 167,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8707,
      "endLine" : 8712,
      "cleanedStartLine" : 1286,
      "cleanedEndLine" : 1291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/TargetPrototype.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 72,
      "endLine" : 77,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 304,
      "endLine" : 310,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 321,
      "endLine" : 326,
      "cleanedStartLine" : 257,
      "cleanedEndLine" : 262
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HistogramGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 126,
      "endLine" : 132,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 220,
      "endLine" : 226,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 274,
      "endLine" : 280,
      "cleanedStartLine" : 209,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/BogusFrameOfReferenceProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/FrameOfReferenceProviderBase.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 96,
      "endLine" : 101,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/canvas/AwtContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 343,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 258,
      "startLine" : 272,
      "endLine" : 281,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeMain/kotlin/org/jetbrains/letsPlot/imagick/canvas/MagickContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 421,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 312,
      "startLine" : 331,
      "endLine" : 340,
      "cleanedStartLine" : 183,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 177,
      "endLine" : 182,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 246,
      "endLine" : 251,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 203
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 226,
      "endLine" : 231,
      "cleanedStartLine" : 167,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 96,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 96,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3708,
      "endLine" : 3713,
      "cleanedStartLine" : 548,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 208,
      "endLine" : 217,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 141
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 340,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 277,
      "startLine" : 224,
      "endLine" : 233,
      "cleanedStartLine" : 159,
      "cleanedEndLine" : 164
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8427,
      "endLine" : 8432,
      "cleanedStartLine" : 1240,
      "cleanedEndLine" : 1245
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 156,
      "endLine" : 161,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 230,
      "endLine" : 235,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 190
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/platf/w3c/jsObject/JsDynamicToAnyTest.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 87,
      "endLine" : 92,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/platf/w3c/jsObject/JsObjectFromMapTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReferenceProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 96,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/SquareFrameOfReferenceProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 106,
      "endLine" : 113,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1490,
      "endLine" : 1495,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/mapping/svg/SvgTextNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 16,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 8,
      "startLine" : 16,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgTextNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 16,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 16,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8424,
      "endLine" : 8429,
      "cleanedStartLine" : 1237,
      "cleanedEndLine" : 1242
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 920,
      "endLine" : 925,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 244
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1049,
      "endLine" : 1057,
      "cleanedStartLine" : 864,
      "cleanedEndLine" : 869
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1079,
      "endLine" : 1087,
      "cleanedStartLine" : 887,
      "cleanedEndLine" : 892
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 920,
      "endLine" : 925,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 244
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 72,
      "endLine" : 77,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/frame/PolarFrameOfReference.kt",
        "extension" : "kt",
        "linesOfCode" : 187,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 97,
      "endLine" : 102,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 772,
      "endLine" : 777,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 217,
      "endLine" : 222,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8427,
      "endLine" : 8432,
      "cleanedStartLine" : 1240,
      "cleanedEndLine" : 1245
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 149,
      "endLine" : 154,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksGen.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/LinearBreaksGen.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LabelRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8704,
      "endLine" : 8709,
      "cleanedStartLine" : 1283,
      "cleanedEndLine" : 1288
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 347,
      "endLine" : 352,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 606,
      "endLine" : 611,
      "cleanedStartLine" : 547,
      "cleanedEndLine" : 552
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 156,
      "endLine" : 161,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 261,
      "endLine" : 266,
      "cleanedStartLine" : 211,
      "cleanedEndLine" : 216
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/dom/DomMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 190,
      "endLine" : 197,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/dom/DomMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 217,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 253,
      "endLine" : 260,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 542
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 671,
      "endLine" : 676,
      "cleanedStartLine" : 560,
      "cleanedEndLine" : 565
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 166,
      "endLine" : 174,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/EdgeCasesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 312,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 270,
      "startLine" : 206,
      "endLine" : 214,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-batik/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 6,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 6,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHuePaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 89,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2286,
      "endLine" : 2291,
      "cleanedStartLine" : 360,
      "cleanedEndLine" : 365
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 232,
      "endLine" : 240,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 253,
      "endLine" : 261,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 166
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 671,
      "endLine" : 676,
      "cleanedStartLine" : 560,
      "cleanedEndLine" : 565
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 162
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2283,
      "endLine" : 2288,
      "cleanedStartLine" : 357,
      "cleanedEndLine" : 362
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 84,
      "endLine" : 91,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 117,
      "endLine" : 124,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 671,
      "endLine" : 676,
      "cleanedStartLine" : 560,
      "cleanedEndLine" : 565
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 146,
      "endLine" : 151,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7988,
      "endLine" : 7993,
      "cleanedStartLine" : 1142,
      "cleanedEndLine" : 1147
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 122,
      "endLine" : 127,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 274,
      "endLine" : 279,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 203
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7726,
      "endLine" : 7731,
      "cleanedStartLine" : 1109,
      "cleanedEndLine" : 1114
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 235,
      "endLine" : 240,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 186
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 277,
      "endLine" : 282,
      "cleanedStartLine" : 217,
      "cleanedEndLine" : 222
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 253,
      "endLine" : 260,
      "cleanedStartLine" : 193,
      "cleanedEndLine" : 198
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 275,
      "endLine" : 282,
      "cleanedStartLine" : 211,
      "cleanedEndLine" : 216
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/stat.py",
        "extension" : "py",
        "linesOfCode" : 92,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 312,
      "endLine" : 317,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/stat.py",
        "extension" : "py",
        "linesOfCode" : 92,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 459,
      "endLine" : 464,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8196,
      "endLine" : 8201,
      "cleanedStartLine" : 1186,
      "cleanedEndLine" : 1191
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 586,
      "endLine" : 591,
      "cleanedStartLine" : 488,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 603,
      "endLine" : 608,
      "cleanedStartLine" : 503,
      "cleanedEndLine" : 508
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 354,
      "endLine" : 359,
      "cleanedStartLine" : 293,
      "cleanedEndLine" : 298
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6595,
      "endLine" : 6600,
      "cleanedStartLine" : 970,
      "cleanedEndLine" : 975
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 425,
      "endLine" : 430,
      "cleanedStartLine" : 337,
      "cleanedEndLine" : 342
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 728,
      "endLine" : 733,
      "cleanedStartLine" : 615,
      "cleanedEndLine" : 620
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 257,
      "cleanedEndLine" : 262
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatLocalDateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 63,
      "endLine" : 68,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/conf/GeomTooltipSetup.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 314,
      "endLine" : 319,
      "cleanedStartLine" : 256,
      "cleanedEndLine" : 261
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 379,
      "endLine" : 385,
      "cleanedStartLine" : 348,
      "cleanedEndLine" : 353
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 603,
      "endLine" : 609,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 571
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 671,
      "endLine" : 676,
      "cleanedStartLine" : 560,
      "cleanedEndLine" : 565
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 214,
      "endLine" : 219,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 236,
      "endLine" : 241,
      "cleanedStartLine" : 210,
      "cleanedEndLine" : 215
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6091,
      "endLine" : 6096,
      "cleanedStartLine" : 886,
      "cleanedEndLine" : 891
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonTest/kotlin/org/jetbrains/letsPlot/datamodel/mapping/framework/composite/SimpleComposite.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonTest/kotlin/org/jetbrains/letsPlot/datamodel/mapping/framework/composite/SimpleComposite.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPointsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorTwoPointsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 101,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 107,
      "endLine" : 113,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 184
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 253,
      "endLine" : 260,
      "cleanedStartLine" : 193,
      "cleanedEndLine" : 198
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 425,
      "endLine" : 430,
      "cleanedStartLine" : 337,
      "cleanedEndLine" : 342
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 515,
      "endLine" : 520,
      "cleanedStartLine" : 419,
      "cleanedEndLine" : 424
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5945,
      "endLine" : 5950,
      "cleanedStartLine" : 862,
      "cleanedEndLine" : 867
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/DiscreteScaleTest.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 119,
      "endLine" : 125,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/DiscreteScaleTest.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 149,
      "startLine" : 135,
      "endLine" : 141,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 99
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 187,
      "endLine" : 192,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 760,
      "endLine" : 765,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6352,
      "endLine" : 6357,
      "cleanedStartLine" : 926,
      "cleanedEndLine" : 931
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8875,
      "endLine" : 8880,
      "cleanedStartLine" : 1312,
      "cleanedEndLine" : 1317
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6235,
      "endLine" : 6240,
      "cleanedStartLine" : 907,
      "cleanedEndLine" : 912
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/commonMain/kotlin/org/jetbrains/letsPlot/raster/mapping/svg/SvgNodeMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6592,
      "endLine" : 6597,
      "cleanedStartLine" : 967,
      "cleanedEndLine" : 972
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6486,
      "endLine" : 6491,
      "cleanedStartLine" : 946,
      "cleanedEndLine" : 951
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 145,
      "endLine" : 150,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 196,
      "endLine" : 201,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 55,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 57,
      "endLine" : 67,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "livemap/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 58,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 61,
      "endLine" : 74,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgClipPathElement.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDefsElement.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 136,
      "endLine" : 141,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 101
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/UpdatableShape.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 13,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/MultiShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 15,
      "endLine" : 20,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1686,
      "endLine" : 1691,
      "cleanedStartLine" : 267,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "canvas/src/commonMain/kotlin/org/jetbrains/letsPlot/core/canvas/Path2d.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::canvas" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 286,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 232,
      "endLine" : 239,
      "cleanedStartLine" : 197,
      "cleanedEndLine" : 202
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 257,
      "cleanedEndLine" : 262
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8872,
      "endLine" : 8877,
      "cleanedStartLine" : 1309,
      "cleanedEndLine" : 1314
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 285,
      "endLine" : 291,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 232
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 321,
      "endLine" : 326,
      "cleanedStartLine" : 257,
      "cleanedEndLine" : 262
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 425,
      "endLine" : 430,
      "cleanedStartLine" : 337,
      "cleanedEndLine" : 342
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 463,
      "endLine" : 468,
      "cleanedStartLine" : 373,
      "cleanedEndLine" : 378
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/transform/PlotSpecTransformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 209,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 146,
      "endLine" : 154,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/transform/PlotSpecTransformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 209,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 206,
      "endLine" : 214,
      "cleanedStartLine" : 144,
      "cleanedEndLine" : 149
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonTest/kotlin/org/jetbrains/letsPlot/datamodel/svg/util/SvgToStringTest.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 18,
      "endLine" : 24,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonTest/kotlin/org/jetbrains/letsPlot/datamodel/svg/util/SvgToStringTest.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 145,
      "endLine" : 150,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 171,
      "endLine" : 176,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9161,
      "endLine" : 9166,
      "cleanedStartLine" : 1377,
      "cleanedEndLine" : 1382
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorThreePathsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 77,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LayerTargetLocatorThreePathsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 77,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6721,
      "endLine" : 6726,
      "cleanedStartLine" : 985,
      "cleanedEndLine" : 990
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 232,
      "endLine" : 239,
      "cleanedStartLine" : 197,
      "cleanedEndLine" : 202
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 264,
      "endLine" : 271,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 232
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 196,
      "endLine" : 201,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9126,
      "endLine" : 9131,
      "cleanedStartLine" : 1347,
      "cleanedEndLine" : 1352
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/theme_.py",
        "extension" : "py",
        "linesOfCode" : 131,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 130,
      "startLine" : 487,
      "endLine" : 534,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/theme_.py",
        "extension" : "py",
        "linesOfCode" : 131,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 130,
      "startLine" : 538,
      "endLine" : 584,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 171,
      "endLine" : 176,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8998,
      "endLine" : 9003,
      "cleanedStartLine" : 1329,
      "cleanedEndLine" : 1334
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 553,
      "endLine" : 558,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 453
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 49,
      "endLine" : 58,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 84,
      "endLine" : 93,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 184,
      "endLine" : 190,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 159,
      "endLine" : 164,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 685,
      "endLine" : 690,
      "cleanedStartLine" : 578,
      "cleanedEndLine" : 583
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipSkippedAesTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 108,
      "endLine" : 113,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 383,
      "endLine" : 388,
      "cleanedStartLine" : 308,
      "cleanedEndLine" : 313
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 49,
      "endLine" : 58,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 113,
      "endLine" : 122,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 760,
      "endLine" : 765,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 558,
      "endLine" : 563,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 491,
      "endLine" : 497,
      "cleanedStartLine" : 457,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 603,
      "endLine" : 609,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 571
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 285,
      "endLine" : 291,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 232
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDsl.kt",
        "extension" : "kt",
        "linesOfCode" : 287,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 262,
      "startLine" : 304,
      "endLine" : 310,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SinaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 97,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 92,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 6,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "jvm-package/jvm-publish-gis/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 90,
        "components" : [ "primary::jvm-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 6,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/FigureToHtml.kt",
        "extension" : "kt",
        "linesOfCode" : 209,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 56,
      "endLine" : 68,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/FigureToAwt.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 37,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 188,
      "endLine" : 193,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 232,
      "endLine" : 237,
      "cleanedStartLine" : 183,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 94,
      "endLine" : 102,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 120,
      "endLine" : 128,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 97
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/YDotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 136,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 59,
      "endLine" : 65,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 73,
      "endLine" : 79,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 500,
      "endLine" : 505,
      "cleanedStartLine" : 394,
      "cleanedEndLine" : 399
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 45,
      "endLine" : 51,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 90,
      "endLine" : 96,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1861,
      "endLine" : 1866,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 95,
      "endLine" : 102,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 299,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 243,
      "startLine" : 106,
      "endLine" : 113,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/svg/ReferenceSvgModel.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 199,
      "startLine" : 179,
      "endLine" : 184,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/svg/ReferenceSvgModel.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 199,
      "startLine" : 194,
      "endLine" : 199,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeUtilFlavorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 81,
      "endLine" : 86,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeUtilFlavorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 105,
      "endLine" : 110,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 773,
      "endLine" : 778,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 405,
      "endLine" : 411,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 290
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 538,
      "endLine" : 544,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 402
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 746,
      "endLine" : 751,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 227,
      "endLine" : 233,
      "cleanedStartLine" : 183,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 405,
      "endLine" : 411,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 290
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 471,
      "endLine" : 477,
      "cleanedStartLine" : 341,
      "cleanedEndLine" : 346
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/legend/HLineLegendKeyElementFactory.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/legend/VLineLegendKeyElementFactory.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 101,
      "endLine" : 109,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 175,
      "endLine" : 180,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 135
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 203,
      "endLine" : 208,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasTestBase.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasTestBase.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityRidgesStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DotplotStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4174,
      "endLine" : 4179,
      "cleanedStartLine" : 624,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 108,
      "endLine" : 114,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 382,
      "endLine" : 388,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 306
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 166,
      "endLine" : 172,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 103,
      "endLine" : 108,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/LegendComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6725,
      "endLine" : 6730,
      "cleanedStartLine" : 989,
      "cleanedEndLine" : 994
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 59,
      "endLine" : 65,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 172,
      "startLine" : 154,
      "endLine" : 161,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssemblerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 124,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 100,
      "endLine" : 109,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 77
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/LegendAssemblerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 124,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 124,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipWithConstantTest.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 169,
      "endLine" : 174,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeElemBlankTest.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeElemSizeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 52,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/util/GeomHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 362,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 290,
      "startLine" : 360,
      "endLine" : 366,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 159,
      "endLine" : 164,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 178,
      "endLine" : 185,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 207,
      "endLine" : 214,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/component/DefaultPlotPanelCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::platf-awt" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 7,
      "endLine" : 12,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "platf-batik/src/main/kotlin/org/jetbrains/letsPlot/batik/plot/component/DefaultPlotPanelBatik.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::platf-batik" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 13,
      "endLine" : 18,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 606,
      "endLine" : 611,
      "cleanedStartLine" : 547,
      "cleanedEndLine" : 552
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 168,
      "endLine" : 173,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 353,
      "endLine" : 359,
      "cleanedStartLine" : 281,
      "cleanedEndLine" : 286
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotAssemblerPlotContextTest.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 1006,
      "endLine" : 1011,
      "cleanedStartLine" : 829,
      "cleanedEndLine" : 834
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7028,
      "endLine" : 7033,
      "cleanedStartLine" : 1026,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgDocUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 188,
      "endLine" : 193,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 136
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgDocUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 216,
      "endLine" : 221,
      "cleanedStartLine" : 156,
      "cleanedEndLine" : 161
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 101,
      "endLine" : 109,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5493,
      "endLine" : 5498,
      "cleanedStartLine" : 813,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1686,
      "endLine" : 1691,
      "cleanedStartLine" : 267,
      "cleanedEndLine" : 272
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1956,
      "endLine" : 1961,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 309
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 405,
      "endLine" : 410,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HistogramGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 315,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 266,
      "startLine" : 233,
      "endLine" : 241,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 315,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 266,
      "startLine" : 290,
      "endLine" : 297,
      "cleanedStartLine" : 200,
      "cleanedEndLine" : 205
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LocalPolynomialRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/PolynomialRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 151
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 443,
      "endLine" : 450,
      "cleanedStartLine" : 394,
      "cleanedEndLine" : 399
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 141,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 101,
      "startLine" : 117,
      "endLine" : 122,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasTestBase.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LinearRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 11,
      "endLine" : 16,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LocalPolynomialRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 12,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 96,
      "startLine" : 107,
      "endLine" : 114,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/PlotFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 96,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Stats.kt",
        "extension" : "kt",
        "linesOfCode" : 339,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 300,
      "startLine" : 165,
      "endLine" : 170,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 107,
      "endLine" : 115,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 133,
      "endLine" : 141,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 490,
      "endLine" : 495,
      "cleanedStartLine" : 394,
      "cleanedEndLine" : 399
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 206,
      "endLine" : 211,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 561,
      "endLine" : 566,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 674,
      "endLine" : 679,
      "cleanedStartLine" : 567,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 741,
      "endLine" : 746,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 635
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LocalPolynomialRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 12,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/PolynomialRegression.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 13,
      "endLine" : 18,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 126,
      "endLine" : 132,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 166,
      "endLine" : 172,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 168,
      "endLine" : 173,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/chart/donut/Sector.kt",
        "extension" : "kt",
        "linesOfCode" : 111,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 141,
      "endLine" : 146,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2710,
      "endLine" : 2715,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5258,
      "endLine" : 5263,
      "cleanedStartLine" : 789,
      "cleanedEndLine" : 794
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/LookupStrategyOnMultilayerPlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 87,
      "endLine" : 92,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 361,
      "endLine" : 366,
      "cleanedStartLine" : 293,
      "cleanedEndLine" : 298
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 364,
      "endLine" : 371,
      "cleanedStartLine" : 283,
      "cleanedEndLine" : 288
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/DropUnusedDataTest.kt",
        "extension" : "kt",
        "linesOfCode" : 711,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 552,
      "endLine" : 559,
      "cleanedStartLine" : 440,
      "cleanedEndLine" : 445
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 133,
      "endLine" : 140,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 133,
      "endLine" : 140,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 154,
      "endLine" : 161,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataMetaFactorLevelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 164,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 141,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataMetaFactorLevelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 164,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 141,
      "startLine" : 126,
      "endLine" : 132,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4895,
      "endLine" : 4900,
      "cleanedStartLine" : 745,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 122,
      "endLine" : 127,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 244,
      "endLine" : 250,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 203
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatUtilTest.kt",
        "extension" : "kt",
        "linesOfCode" : 319,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 232,
      "endLine" : 237,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinStatUtilTest.kt",
        "extension" : "kt",
        "linesOfCode" : 319,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 245,
      "endLine" : 250,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4175,
      "endLine" : 4180,
      "cleanedStartLine" : 625,
      "cleanedEndLine" : 630
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/formatting/number/FormatNotationUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/formatting/number/FormatNotationUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 80,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 261,
      "endLine" : 266,
      "cleanedStartLine" : 211,
      "cleanedEndLine" : 216
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 230,
      "endLine" : 235,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 190
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 261,
      "endLine" : 266,
      "cleanedStartLine" : 211,
      "cleanedEndLine" : 216
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorBrewerPaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColormapPaletteGeneratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/DensityRidgesStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/YDensityStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 133,
      "endLine" : 141,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 159,
      "endLine" : 167,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/legend/HLineLegendKeyElementFactory.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/legend/TextRepelSegmentLegendKeyElementFactory.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2077,
      "endLine" : 2082,
      "cleanedStartLine" : 362,
      "cleanedEndLine" : 367
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2629,
      "endLine" : 2634,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 470
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 781,
      "endLine" : 786,
      "cleanedStartLine" : 666,
      "cleanedEndLine" : 671
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 435,
      "endLine" : 440,
      "cleanedStartLine" : 359,
      "cleanedEndLine" : 364
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2077,
      "endLine" : 2082,
      "cleanedStartLine" : 362,
      "cleanedEndLine" : 367
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2340,
      "endLine" : 2345,
      "cleanedStartLine" : 412,
      "cleanedEndLine" : 417
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/LinearBreaksGen.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/NonlinearBreaksGen.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1786,
      "endLine" : 1791,
      "cleanedStartLine" : 313,
      "cleanedEndLine" : 318
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2077,
      "endLine" : 2082,
      "cleanedStartLine" : 362,
      "cleanedEndLine" : 367
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/commons/data/RegularMeshDetectorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 81,
      "endLine" : 87,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 950,
      "endLine" : 955,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 158
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/sizing/SizingPolicyCreateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 170,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/util/sizing/SizingPolicyCreateTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 170,
      "startLine" : 103,
      "endLine" : 111,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 77
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 219,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 150,
      "endLine" : 155,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 219,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 206,
      "endLine" : 211,
      "cleanedStartLine" : 153,
      "cleanedEndLine" : 158
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 89,
      "endLine" : 94,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9001,
      "endLine" : 9006,
      "cleanedStartLine" : 1332,
      "cleanedEndLine" : 1337
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9164,
      "endLine" : 9169,
      "cleanedStartLine" : 1380,
      "cleanedEndLine" : 1385
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/bistro/residual.py",
        "extension" : "py",
        "linesOfCode" : 139,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 127,
      "startLine" : 10,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom_function_.py",
        "extension" : "py",
        "linesOfCode" : 73,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 3,
      "endLine" : 11,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponentHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 193,
      "startLine" : 175,
      "endLine" : 180,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponentHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 193,
      "startLine" : 197,
      "endLine" : 202,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponentHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 193,
      "startLine" : 175,
      "endLine" : 180,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponentHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 193,
      "startLine" : 219,
      "endLine" : 224,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 582,
      "endLine" : 587,
      "cleanedStartLine" : 151,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 181,
      "endLine" : 186,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "visual-testing/src/commonMain/kotlin/org/jetbrains/letsPlot/visualtesting/canvas/CanvasPathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 272,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 207,
      "endLine" : 212,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponentHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 193,
      "startLine" : 197,
      "endLine" : 202,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/PlotSvgComponentHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 193,
      "startLine" : 219,
      "endLine" : 224,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 113,
      "endLine" : 122,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/core/platf/dom/DomMouseEventMapperTest.kt",
        "extension" : "kt",
        "linesOfCode" : 266,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 125,
      "endLine" : 134,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 582,
      "endLine" : 587,
      "cleanedStartLine" : 151,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 141,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 101,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 141,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 101,
      "startLine" : 117,
      "endLine" : 122,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2128,
      "endLine" : 2133,
      "cleanedStartLine" : 336,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 106,
      "endLine" : 111,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 120,
      "endLine" : 128,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 94
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 146,
      "endLine" : 154,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 445,
      "endLine" : 450,
      "cleanedStartLine" : 365,
      "cleanedEndLine" : 370
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 723,
      "endLine" : 728,
      "cleanedStartLine" : 612,
      "cleanedEndLine" : 617
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LinesHelperResamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 133,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 200,
      "endLine" : 207,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 332,
      "endLine" : 339,
      "cleanedStartLine" : 248,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1683,
      "endLine" : 1688,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 269
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6489,
      "endLine" : 6494,
      "cleanedStartLine" : 949,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 246,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 246,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 246,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 246,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1136,
      "endLine" : 1141,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 59,
      "endLine" : 65,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgPathParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-raster/src/jvmTest/kotlin/org/jetbrains/letsPlot/raster/scene/SvgPathParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-raster" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3226,
      "endLine" : 3231,
      "cleanedStartLine" : 472,
      "cleanedEndLine" : 477
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 463,
      "endLine" : 468,
      "cleanedStartLine" : 373,
      "cleanedEndLine" : 378
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 728,
      "endLine" : 733,
      "cleanedStartLine" : 615,
      "cleanedEndLine" : 620
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 702,
      "endLine" : 707,
      "cleanedStartLine" : 595,
      "cleanedEndLine" : 600
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 226,
      "endLine" : 231,
      "cleanedStartLine" : 167,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/ContinuousScaleTest.kt",
        "extension" : "kt",
        "linesOfCode" : 155,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 125,
      "endLine" : 130,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/ScaleProviderBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 246,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BinHexStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 275,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 246,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5948,
      "endLine" : 5953,
      "cleanedStartLine" : 865,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 168,
      "endLine" : 173,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 209,
      "endLine" : 214,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 561,
      "endLine" : 566,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7028,
      "endLine" : 7033,
      "cleanedStartLine" : 1026,
      "cleanedEndLine" : 1031
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/scale/provider/ColorHueMapperProviderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 156,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 78,
      "endLine" : 83,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 744,
      "endLine" : 749,
      "cleanedStartLine" : 633,
      "cleanedEndLine" : 638
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/commons/data/SeriesUtilFilterFiniteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/corr/OptionsConfiguratorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 108,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQLineStat.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 54,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQStat.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 17,
      "endLine" : 25,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 168,
      "endLine" : 173,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 192,
      "endLine" : 197,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 148
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4758,
      "endLine" : 4763,
      "cleanedStartLine" : 717,
      "cleanedEndLine" : 722
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 517,
      "endLine" : 524,
      "cleanedStartLine" : 464,
      "cleanedEndLine" : 469
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 590,
      "endLine" : 597,
      "cleanedStartLine" : 533,
      "cleanedEndLine" : 538
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 332,
      "endLine" : 339,
      "cleanedStartLine" : 248,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/data/Count2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 112,
      "startLine" : 36,
      "endLine" : 43,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/data/SumStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BandGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 150,
      "endLine" : 155,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 515,
      "endLine" : 520,
      "cleanedStartLine" : 419,
      "cleanedEndLine" : 424
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 728,
      "endLine" : 733,
      "cleanedStartLine" : 615,
      "cleanedEndLine" : 620
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/util/ArrowSupport.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6489,
      "endLine" : 6494,
      "cleanedStartLine" : 949,
      "cleanedEndLine" : 954
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6355,
      "endLine" : 6360,
      "cleanedStartLine" : 929,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 156,
      "endLine" : 161,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 121,
      "endLine" : 128,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeomTest.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 276,
      "startLine" : 332,
      "endLine" : 339,
      "cleanedStartLine" : 248,
      "cleanedEndLine" : 253
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 204,
      "endLine" : 209,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/GeomMeta.kt",
        "extension" : "kt",
        "linesOfCode" : 454,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 446,
      "startLine" : 230,
      "endLine" : 235,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 190
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/mapping/framework/ObservableCollectionRoleSynchronizer.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 54,
      "endLine" : 62,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/mapping/framework/TransformingObservableCollectionRoleSynchronizer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 49,
      "endLine" : 57,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 247,
      "endLine" : 253,
      "cleanedStartLine" : 193,
      "cleanedEndLine" : 198
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleConfigLabelsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 285,
      "endLine" : 291,
      "cleanedStartLine" : 225,
      "cleanedEndLine" : 230
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 361,
      "endLine" : 366,
      "cleanedStartLine" : 293,
      "cleanedEndLine" : 298
    }, {
      "file" : {
        "relativePath" : "python-extension/src/nativeTest/kotlin/kotlin/org/jetbrains/letsPlot/pythonExtension/interop/PlotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::python-extension" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 886,
      "startLine" : 923,
      "endLine" : 928,
      "cleanedStartLine" : 761,
      "cleanedEndLine" : 766
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2863,
      "endLine" : 2868,
      "cleanedStartLine" : 437,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3052,
      "endLine" : 3057,
      "cleanedStartLine" : 457,
      "cleanedEndLine" : 462
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 97,
      "endLine" : 102,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 149,
      "endLine" : 154,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 123,
      "endLine" : 130,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 214,
      "endLine" : 221,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2557,
      "endLine" : 2562,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 400
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3583,
      "endLine" : 3588,
      "cleanedStartLine" : 529,
      "cleanedEndLine" : 534
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 123,
      "endLine" : 130,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 188,
      "endLine" : 195,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeTZTest.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFormatDateTimeUTCTest.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/UpdatableShape.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 13,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/SingletonGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 123,
      "endLine" : 130,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 144,
      "endLine" : 151,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2077,
      "endLine" : 2082,
      "cleanedStartLine" : 362,
      "cleanedEndLine" : 367
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2943,
      "endLine" : 2948,
      "cleanedStartLine" : 513,
      "cleanedEndLine" : 518
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 123,
      "endLine" : 130,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 161,
      "endLine" : 168,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 88,
      "endLine" : 93,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 81,
      "endLine" : 89,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 159,
      "endLine" : 167,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/FontFamilyRegistryConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 145,
      "endLine" : 150,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 750,
      "endLine" : 755,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 676,
      "endLine" : 683,
      "cleanedStartLine" : 546,
      "cleanedEndLine" : 551
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 812,
      "endLine" : 819,
      "cleanedStartLine" : 666,
      "cleanedEndLine" : 671
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/BreakLabelsLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 107,
      "endLine" : 112,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/BreakLabelsLayoutUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 226,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/guide/ColorBarComponentLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 151,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 141,
      "endLine" : 146,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LineRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 676,
      "endLine" : 683,
      "cleanedStartLine" : 546,
      "cleanedEndLine" : 551
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 772,
      "endLine" : 779,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 635
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 676,
      "endLine" : 683,
      "cleanedStartLine" : 546,
      "cleanedEndLine" : 551
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 792,
      "endLine" : 799,
      "cleanedStartLine" : 648,
      "cleanedEndLine" : 653
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 158,
      "endLine" : 163,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 134
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/MonolithicJs.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "js-package/src/jsMain/kotlin/MonolithicJs.kt",
        "extension" : "kt",
        "linesOfCode" : 173,
        "components" : [ "primary::js-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 147,
      "endLine" : 152,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 145,
      "endLine" : 150,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ListenersTestCase.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ListenersTestCase.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PathGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 204,
      "endLine" : 209,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 662,
      "endLine" : 667,
      "cleanedStartLine" : 169,
      "cleanedEndLine" : 174
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 831,
      "endLine" : 836,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 218
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RibbonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2560,
      "endLine" : 2565,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/AxisLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/layout/axis/label/AxisLabelsLayout.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 198,
      "endLine" : 203,
      "cleanedStartLine" : 152,
      "cleanedEndLine" : 157
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 221,
      "endLine" : 226,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 201,
      "endLine" : 208,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 232,
      "endLine" : 239,
      "cleanedStartLine" : 197,
      "cleanedEndLine" : 202
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeColorOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 307,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 289,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/defaultTheme/ThemeColorOptionsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 307,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 289,
      "startLine" : 228,
      "endLine" : 233,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CrossBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 107,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 192,
      "endLine" : 198,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 273,
      "endLine" : 279,
      "cleanedStartLine" : 208,
      "cleanedEndLine" : 213
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 150,
      "endLine" : 157,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 179,
      "endLine" : 186,
      "cleanedStartLine" : 144,
      "cleanedEndLine" : 149
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 158,
      "endLine" : 163,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 186,
      "endLine" : 191,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 145
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/DomTargetPeer.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 64,
      "endLine" : 69,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsMain/kotlin/org/jetbrains/letsPlot/platf/w3c/mapping/svg/SvgElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 104,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/core/layers/LayerManager.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/core/layers/LayerManager.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 113,
      "endLine" : 118,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HistogramGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5948,
      "endLine" : 5953,
      "cleanedStartLine" : 865,
      "cleanedEndLine" : 870
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 72,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "visual-testing/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 38,
        "components" : [ "primary::visual-testing" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 748,
      "endLine" : 753,
      "cleanedStartLine" : 637,
      "cleanedEndLine" : 642
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 220,
      "endLine" : 225,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 723,
      "endLine" : 728,
      "cleanedStartLine" : 612,
      "cleanedEndLine" : 617
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 741,
      "endLine" : 746,
      "cleanedStartLine" : 630,
      "cleanedEndLine" : 635
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 133,
      "endLine" : 140,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5030,
      "endLine" : 5035,
      "cleanedStartLine" : 761,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/stat.py",
        "extension" : "py",
        "linesOfCode" : 92,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 149,
      "endLine" : 154,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/stat.py",
        "extension" : "py",
        "linesOfCode" : 92,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 459,
      "endLine" : 464,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 735,
      "endLine" : 740,
      "cleanedStartLine" : 624,
      "cleanedEndLine" : 629
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 220,
      "endLine" : 225,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 201,
      "endLine" : 208,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8199,
      "endLine" : 8204,
      "cleanedStartLine" : 1189,
      "cleanedEndLine" : 1194
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6851,
      "endLine" : 6856,
      "cleanedStartLine" : 1007,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StatR2Geom.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 97,
      "endLine" : 102,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 445,
      "endLine" : 450,
      "cleanedStartLine" : 365,
      "cleanedEndLine" : 370
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 674,
      "endLine" : 679,
      "cleanedStartLine" : 567,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1487,
      "endLine" : 1492,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 245
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/GroupRandomSampling.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/GroupSystematicSampling.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourfStat.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 41,
      "endLine" : 48,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/QQ2LineStat.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 69,
      "endLine" : 76,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 542
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 214,
      "endLine" : 219,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ErrorBarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 127,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LollipopGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 179,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 89,
      "endLine" : 94,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 671,
      "endLine" : 676,
      "cleanedStartLine" : 560,
      "cleanedEndLine" : 565
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 101,
      "endLine" : 109,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 161,
      "endLine" : 168,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/BoxplotStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 671,
      "endLine" : 676,
      "cleanedStartLine" : 560,
      "cleanedEndLine" : 565
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 106,
      "endLine" : 111,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/VLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7499,
      "endLine" : 7504,
      "cleanedStartLine" : 1097,
      "cleanedEndLine" : 1102
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8225,
      "endLine" : 8230,
      "cleanedStartLine" : 1214,
      "cleanedEndLine" : 1219
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 214,
      "endLine" : 221,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 168
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 188,
      "endLine" : 195,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 408,
      "endLine" : 413,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 147,
      "endLine" : 153,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 115
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 187,
      "endLine" : 193,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 147
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 76,
      "endLine" : 83,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 306,
      "endLine" : 313,
      "cleanedStartLine" : 210,
      "cleanedEndLine" : 215
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTypeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 91,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/SeriesAnnotationTypeTest.kt",
        "extension" : "kt",
        "linesOfCode" : 91,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 448,
      "endLine" : 453,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/platf/w3c/jsObject/JsObjectFromMapTest.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "platf-w3c/src/jsTest/kotlin/org/jetbrains/letsPlot/platf/w3c/jsObject/JsObjectToMapTest.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::platf-w3c" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 61,
      "endLine" : 66,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6355,
      "endLine" : 6360,
      "cleanedStartLine" : 929,
      "cleanedEndLine" : 934
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 436,
      "endLine" : 441,
      "cleanedStartLine" : 346,
      "cleanedEndLine" : 351
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 488,
      "endLine" : 493,
      "cleanedStartLine" : 392,
      "cleanedEndLine" : 397
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 542
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 162
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4378,
      "endLine" : 4383,
      "cleanedStartLine" : 653,
      "cleanedEndLine" : 658
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4568,
      "endLine" : 4573,
      "cleanedStartLine" : 689,
      "cleanedEndLine" : 694
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 542
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 146,
      "endLine" : 151,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 469,
      "endLine" : 474,
      "cleanedStartLine" : 385,
      "cleanedEndLine" : 390
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 484,
      "endLine" : 489,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 403
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 120,
      "endLine" : 127,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 179,
      "endLine" : 186,
      "cleanedStartLine" : 144,
      "cleanedEndLine" : 149
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/mapengine/basemap/vector/TileDataRendererImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "livemap/src/commonMain/kotlin/org/jetbrains/letsPlot/livemap/mapengine/basemap/vector/debug/DebugTileDataRenderer.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 425,
      "endLine" : 430,
      "cleanedStartLine" : 376,
      "cleanedEndLine" : 381
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 641,
      "endLine" : 646,
      "cleanedStartLine" : 580,
      "cleanedEndLine" : 585
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 379,
      "endLine" : 384,
      "cleanedStartLine" : 304,
      "cleanedEndLine" : 309
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/DateTimeBreaksGen.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/breaks/NonlinearBreaksGen.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8707,
      "endLine" : 8712,
      "cleanedStartLine" : 1286,
      "cleanedEndLine" : 1291
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/tooltip/TipLayoutHint.kt",
        "extension" : "kt",
        "linesOfCode" : 117,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 120,
      "endLine" : 127,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/TooltipAnchorTest.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 150,
      "endLine" : 157,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LinesHelperResamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 133,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordPolarTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 2079,
      "endLine" : 2084,
      "cleanedStartLine" : 364,
      "cleanedEndLine" : 369
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 229
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/OrderOptionsConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 274,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 231,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 134
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/OrderOptionsConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 274,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 231,
      "startLine" : 227,
      "endLine" : 234,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 593,
      "endLine" : 598,
      "cleanedStartLine" : 486,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 157,
      "cleanedEndLine" : 162
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ListListenersTest.kt",
        "extension" : "kt",
        "linesOfCode" : 123,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 87,
      "startLine" : 61,
      "endLine" : 66,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "commons/src/commonTest/kotlin/org/jetbrains/letsPlot/commons/intern/observable/collections/ListListenersTest.kt",
        "extension" : "kt",
        "linesOfCode" : 123,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 87,
      "startLine" : 77,
      "endLine" : 82,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 593,
      "endLine" : 598,
      "cleanedStartLine" : 486,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 146,
      "endLine" : 151,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 593,
      "endLine" : 598,
      "cleanedStartLine" : 486,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 214,
      "endLine" : 219,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2863,
      "endLine" : 2868,
      "cleanedStartLine" : 437,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 155,
      "endLine" : 161,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 135
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/regression/LoessRegressionTest.kt",
        "extension" : "kt",
        "linesOfCode" : 686,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 661,
      "startLine" : 603,
      "endLine" : 609,
      "cleanedStartLine" : 566,
      "cleanedEndLine" : 571
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7499,
      "endLine" : 7504,
      "cleanedStartLine" : 1097,
      "cleanedEndLine" : 1102
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7747,
      "endLine" : 7752,
      "cleanedStartLine" : 1128,
      "cleanedEndLine" : 1133
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2713,
      "endLine" : 2718,
      "cleanedStartLine" : 417,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4377,
      "endLine" : 4382,
      "cleanedStartLine" : 652,
      "cleanedEndLine" : 657
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6238,
      "endLine" : 6243,
      "cleanedStartLine" : 910,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/transform/PlotSpecTransformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 209,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 163,
      "endLine" : 168,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/transform/PlotSpecTransformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 209,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 183,
      "startLine" : 204,
      "endLine" : 209,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 147
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 204,
      "endLine" : 210,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 353,
      "endLine" : 359,
      "cleanedStartLine" : 281,
      "cleanedEndLine" : 286
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5724,
      "endLine" : 5729,
      "cleanedStartLine" : 837,
      "cleanedEndLine" : 842
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 378,
      "endLine" : 383,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt",
        "extension" : "kt",
        "linesOfCode" : 418,
        "components" : [ "primary::gis" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 381,
      "startLine" : 406,
      "endLine" : 411,
      "cleanedStartLine" : 256,
      "cleanedEndLine" : 261
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SpokeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 593,
      "endLine" : 598,
      "cleanedStartLine" : 486,
      "cleanedEndLine" : 491
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 542
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/WandClippingPlayground.kt",
        "extension" : "kt",
        "linesOfCode" : 150,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 15,
      "endLine" : 22,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "platf-imagick/src/nativeTest/kotlin/WandPlayground.kt",
        "extension" : "kt",
        "linesOfCode" : 158,
        "components" : [ "primary::platf-imagick" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 133,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 107,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3229,
      "endLine" : 3234,
      "cleanedStartLine" : 475,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/UpdatableShape.kt",
        "extension" : "kt",
        "linesOfCode" : 13,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 13,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/render/point/symbol/TwoShapeGlyph.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 187,
      "endLine" : 192,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BoxplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgDefsElement.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgImageElement.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 733,
      "endLine" : 738,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 817,
      "endLine" : 822,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1266,
      "endLine" : 1271,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SegmentGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 175,
      "endLine" : 180,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/StatProto.kt",
        "extension" : "kt",
        "linesOfCode" : 507,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 415,
      "startLine" : 343,
      "endLine" : 348,
      "cleanedStartLine" : 225,
      "cleanedEndLine" : 230
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 1861,
      "endLine" : 1866,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9164,
      "endLine" : 9169,
      "cleanedStartLine" : 1380,
      "cleanedEndLine" : 1385
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 204,
      "endLine" : 210,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 454,
      "endLine" : 460,
      "cleanedStartLine" : 374,
      "cleanedEndLine" : 379
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/CurveGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TileGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3049,
      "endLine" : 3054,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 459
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 751,
      "endLine" : 756,
      "cleanedStartLine" : 195,
      "cleanedEndLine" : 200
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 751,
      "endLine" : 756,
      "cleanedStartLine" : 195,
      "cleanedEndLine" : 200
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5030,
      "endLine" : 5035,
      "cleanedStartLine" : 761,
      "cleanedEndLine" : 766
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointRangeGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/SmoothGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/GuideConfig.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 63,
      "endLine" : 68,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/config/LayerConfigUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 77,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 219,
      "endLine" : 225,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 167
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 246,
      "endLine" : 252,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 190
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/PointDensityStat.kt",
        "extension" : "kt",
        "linesOfCode" : 236,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 189,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2560,
      "endLine" : 2565,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 403
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 58,
      "endLine" : 65,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 81,
      "endLine" : 88,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaRidgesGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/api/PathWrappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/api/PathWrappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 90,
      "endLine" : 97,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4174,
      "endLine" : 4179,
      "cleanedStartLine" : 624,
      "cleanedEndLine" : 629
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipCheckLabelInLines.kt",
        "extension" : "kt",
        "linesOfCode" : 347,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 303,
      "startLine" : 154,
      "endLine" : 161,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 114
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/api/PathWrappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "livemap/src/jvmTest/kotlin/org/jetbrains/letsPlot/livemap/api/PathWrappingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::livemap" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 140,
      "endLine" : 147,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 385,
      "endLine" : 390,
      "cleanedStartLine" : 310,
      "cleanedEndLine" : 315
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/kotlin-bridge/lets_plot_kotlin_bridge.c",
        "extension" : "c",
        "linesOfCode" : 165,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 142,
      "startLine" : 141,
      "endLine" : 146,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "python-package/kotlin-bridge/lets_plot_kotlin_bridge.c",
        "extension" : "c",
        "linesOfCode" : 165,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 142,
      "startLine" : 174,
      "endLine" : 179,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7747,
      "endLine" : 7752,
      "cleanedStartLine" : 1128,
      "cleanedEndLine" : 1133
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8012,
      "endLine" : 8017,
      "cleanedStartLine" : 1165,
      "cleanedEndLine" : 1170
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 1014,
      "endLine" : 1019,
      "cleanedStartLine" : 187,
      "cleanedEndLine" : 192
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_identity_.py",
        "extension" : "py",
        "linesOfCode" : 115,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 114,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 81,
      "endLine" : 89,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 107,
      "endLine" : 115,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/interact/EventsManager.kt",
        "extension" : "kt",
        "linesOfCode" : 102,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/interact/EventsManager.kt",
        "extension" : "kt",
        "linesOfCode" : 102,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/facet/FacetGrid.kt",
        "extension" : "kt",
        "linesOfCode" : 164,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 162,
      "endLine" : 167,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/assemble/facet/FacetWrap.kt",
        "extension" : "kt",
        "linesOfCode" : 147,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 115,
      "startLine" : 123,
      "endLine" : 128,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/transform/ReverseTransform.kt",
        "extension" : "kt",
        "linesOfCode" : 15,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 13,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/scale/transform/SymlogTransform.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 76,
      "endLine" : 83,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleOrderingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 718,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 642,
      "startLine" : 393,
      "endLine" : 401,
      "cleanedStartLine" : 324,
      "cleanedEndLine" : 329
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BarGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PointGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RasterGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 767,
      "endLine" : 773,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 151
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 850,
      "endLine" : 855,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 167
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 599,
      "endLine" : 604,
      "cleanedStartLine" : 540,
      "cleanedEndLine" : 545
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 634,
      "endLine" : 639,
      "cleanedStartLine" : 573,
      "cleanedEndLine" : 578
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 129,
      "endLine" : 135,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/render/svg/RichTextLatexTest.kt",
        "extension" : "kt",
        "linesOfCode" : 656,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 616,
      "startLine" : 382,
      "endLine" : 388,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 306
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7991,
      "endLine" : 7996,
      "cleanedStartLine" : 1145,
      "cleanedEndLine" : 1150
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 767,
      "endLine" : 773,
      "cleanedStartLine" : 146,
      "cleanedEndLine" : 151
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 930,
      "endLine" : 935,
      "cleanedStartLine" : 178,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 337,
      "endLine" : 342,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale.py",
        "extension" : "py",
        "linesOfCode" : 677,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 675,
      "startLine" : 762,
      "endLine" : 767,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 260,
      "endLine" : 265,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 184,
      "endLine" : 189,
      "cleanedStartLine" : 151,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 278,
      "endLine" : 283,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/DotplotGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 214,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 408,
      "endLine" : 413,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 194,
      "endLine" : 200,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/loc/LocatorByGeneralTooltipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 352,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 319,
      "startLine" : 326,
      "endLine" : 332,
      "cleanedStartLine" : 266,
      "cleanedEndLine" : 271
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 638,
      "endLine" : 643,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 539
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/DerivedProperty.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "commons/src/commonMain/kotlin/org/jetbrains/letsPlot/commons/intern/observable/property/SimpleDerivedProperty.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::commons" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 62,
      "endLine" : 71,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 144,
      "endLine" : 151,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 188,
      "endLine" : 195,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 318,
      "endLine" : 324,
      "cleanedStartLine" : 217,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 538,
      "endLine" : 544,
      "cleanedStartLine" : 397,
      "cleanedEndLine" : 402
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ImageGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 686,
      "endLine" : 691,
      "cleanedStartLine" : 579,
      "cleanedEndLine" : 584
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 144,
      "endLine" : 151,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/AxisTooltipLayoutTest.kt",
        "extension" : "kt",
        "linesOfCode" : 246,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 221,
      "startLine" : 161,
      "endLine" : 168,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6851,
      "endLine" : 6856,
      "cleanedStartLine" : 1007,
      "cleanedEndLine" : 1012
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/BlankGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/RectGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 318,
      "endLine" : 324,
      "cleanedStartLine" : 217,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 471,
      "endLine" : 477,
      "cleanedStartLine" : 341,
      "cleanedEndLine" : 346
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/qq/QQPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 190,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 59,
      "endLine" : 65,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/qq/QQPlotOptionsBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 190,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 197,
      "endLine" : 202,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1009,
      "endLine" : 1014,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 266
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 184,
      "endLine" : 189,
      "cleanedStartLine" : 151,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/back/transform/bistro/waterfall/OptionsBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 907,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 843,
      "startLine" : 246,
      "endLine" : 251,
      "cleanedStartLine" : 209,
      "cleanedEndLine" : 214
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 197,
      "endLine" : 202,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1107,
      "endLine" : 1112,
      "cleanedStartLine" : 286,
      "cleanedEndLine" : 291
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 5493,
      "endLine" : 5498,
      "cleanedStartLine" : 813,
      "cleanedEndLine" : 818
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/VertexSamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 432,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 398,
      "startLine" : 77,
      "endLine" : 85,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/sampling/method/VertexSamplingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 432,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 398,
      "startLine" : 90,
      "endLine" : 99,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryBinStat.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/SummaryStat.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ABLineGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgGElement.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "datamodel/src/commonMain/kotlin/org/jetbrains/letsPlot/datamodel/svg/dom/SvgImageElement.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::datamodel" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/GeomBase.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PieGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 281,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 217,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 33,
      "endLine" : 98,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1012,
      "endLine" : 1087,
      "cleanedStartLine" : 264,
      "cleanedEndLine" : 269
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/StepGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordProviderBase.kt",
        "extension" : "kt",
        "linesOfCode" : 118,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 104,
      "endLine" : 110,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/builder/coord/CoordProviderBase.kt",
        "extension" : "kt",
        "linesOfCode" : 118,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2426,
      "endLine" : 2431,
      "cleanedStartLine" : 377,
      "cleanedEndLine" : 382
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 986,
      "endLine" : 991,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 251
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 1345,
      "endLine" : 1350,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 339
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 439,
      "endLine" : 444,
      "cleanedStartLine" : 359,
      "cleanedEndLine" : 364
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 83,
      "endLine" : 88,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 2713,
      "endLine" : 2718,
      "cleanedStartLine" : 417,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/ScaleFomateDateTimeTestUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 101,
      "endLine" : 109,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 676,
      "endLine" : 683,
      "cleanedStartLine" : 546,
      "cleanedEndLine" : 551
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 724,
      "endLine" : 731,
      "cleanedStartLine" : 588,
      "cleanedEndLine" : 593
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 4895,
      "endLine" : 4900,
      "cleanedStartLine" : 745,
      "cleanedEndLine" : 750
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourFillHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/ContourStatUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 442,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 357,
      "startLine" : 253,
      "endLine" : 260,
      "cleanedStartLine" : 167,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 6238,
      "endLine" : 6243,
      "cleanedStartLine" : 910,
      "cleanedEndLine" : 915
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 7486,
      "endLine" : 7491,
      "cleanedStartLine" : 1086,
      "cleanedEndLine" : 1091
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/AreaGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 145,
      "endLine" : 150,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 947,
      "endLine" : 952,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 155
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3456,
      "endLine" : 3461,
      "cleanedStartLine" : 508,
      "cleanedEndLine" : 513
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 318,
      "endLine" : 324,
      "cleanedStartLine" : 217,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 405,
      "endLine" : 411,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 290
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/AsDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 767,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 723,
      "startLine" : 452,
      "endLine" : 457,
      "cleanedStartLine" : 372,
      "cleanedEndLine" : 377
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GroupsOrderWithFacetsTest.kt",
        "extension" : "kt",
        "linesOfCode" : 178,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 57,
      "endLine" : 63,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/commonTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/tooltip/layout/HorizontalTooltipExpanderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 196,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 166,
      "endLine" : 172,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/TextRepelGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "plot-builder/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/builder/YOrientationGeomBuildingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::plot-builder" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 388,
      "endLine" : 393,
      "cleanedStartLine" : 298,
      "cleanedEndLine" : 303
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/TooltipConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1080,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 975,
      "startLine" : 426,
      "endLine" : 431,
      "cleanedStartLine" : 332,
      "cleanedEndLine" : 337
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/LiveMapGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/PolygonGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 318,
      "endLine" : 324,
      "cleanedStartLine" : 217,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/DataJoinTest.kt",
        "extension" : "kt",
        "linesOfCode" : 497,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 469,
      "startLine" : 352,
      "endLine" : 358,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/HexGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/geom/ViolinGeom.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 568,
      "endLine" : 573,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 144
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/math3/NormalDistribution.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 135,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "plot-base/src/commonMain/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/math3/UniformDistribution.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 542
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 106,
      "endLine" : 111,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 645,
      "endLine" : 650,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "plot-base/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/plot/base/stat/Bin2dStatTest.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::plot-base" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 414,
      "endLine" : 419,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 3229,
      "endLine" : 3234,
      "cleanedStartLine" : 475,
      "cleanedEndLine" : 480
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 9217,
      "endLine" : 9222,
      "cleanedStartLine" : 1425,
      "cleanedEndLine" : 1430
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigTest.kt",
        "extension" : "kt",
        "linesOfCode" : 694,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 637,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 542
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/GeoConfigWithStatApplyingTest.kt",
        "extension" : "kt",
        "linesOfCode" : 243,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 230,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 98,
      "endLine" : 103,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/scale_position.py",
        "extension" : "py",
        "linesOfCode" : 345,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 343,
      "startLine" : 491,
      "endLine" : 496,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "plot-stem/src/jvmTest/kotlin/org/jetbrains/letsPlot/core/spec/config/IsAesDiscreteTest.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::plot-stem" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 204,
      "endLine" : 209,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 176
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8012,
      "endLine" : 8017,
      "cleanedStartLine" : 1165,
      "cleanedEndLine" : 1170
    }, {
      "file" : {
        "relativePath" : "python-package/lets_plot/plot/geom.py",
        "extension" : "py",
        "linesOfCode" : 1435,
        "components" : [ "primary::python-package" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1432,
      "startLine" : 8225,
      "endLine" : 8230,
      "cleanedStartLine" : 1214,
      "cleanedEndLine" : 1219
    } ]
  } ],
  "overallDuplication" : null
}