The Swift Package Index logo.Swift Package Index

Build Information

Successful build of lcl-speedtest, reference 1.0.7 (1b5a79), with Swift 6.4 for macOS (SPM) on 21 Sep 2026 22:16:35 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Local-Connectivity-Lab/lcl-speedtest.git
Reference: 1.0.7
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Local-Connectivity-Lab/lcl-speedtest
 * tag               1.0.7      -> FETCH_HEAD
HEAD is now at 1b5a795 Update lcl-websocket to 1.1.1 (#11)
Cloned https://github.com/Local-Connectivity-Lab/lcl-speedtest.git
Revision (git rev-parse @):
1b5a79555025c0646cf88a8290c42d9c26e616b4
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/Local-Connectivity-Lab/lcl-speedtest.git at 1.0.7
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/Local-Connectivity-Lab/lcl-speedtest.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 1167]
[Planning deferred tasks]
[Constructing 2014 / 2916]
[142 / 846] Demo-product
[221 / 846]
[234 / 852] NIOConcurrencyHelpers
[238 / 852] CNIOWindows
[246 / 885] CNIOWindows
[257 / 919]
[261 / 919]
[274 / 956]
[283 / 956] InternalCollectionsUtilities
[291 / 956]
[292 / 956]
[294 / 956]
[296 / 956]
[311 / 956] Atomics
[315 / 956]
[322 / 956] CNIOBoringSSL
[324 / 956] CNIOBoringSSL
[332 / 956] CNIOBoringSSL
[339 / 956] CNIOBoringSSL
[341 / 956] CNIOBoringSSL
[344 / 956] _NIODataStructures
[366 / 956] CNIOBoringSSL
[373 / 956] CNIOBoringSSL
[377 / 956] CNIOBoringSSL
[383 / 956] CNIOBoringSSL
[387 / 956] CNIOBoringSSL
[393 / 956] CNIOBoringSSL
[397 / 956] CNIOBoringSSL
[399 / 956] CNIOBoringSSL
[403 / 956] CNIOBoringSSL
[405 / 956] CNIOBoringSSL
[406 / 956] CNIOBoringSSL
[411 / 956] CNIOBoringSSL
[412 / 956] CNIOBoringSSL
[418 / 956] CNIOBoringSSL
[421 / 956] CNIOBoringSSL
[422 / 956] CNIOBoringSSL
[423 / 956] CNIOBoringSSL
[427 / 956] CNIOBoringSSL
[431 / 956] CNIOBoringSSL
[432 / 956] CNIOBoringSSL
[433 / 956] CNIOBoringSSL
[436 / 956] CNIOBoringSSL
[439 / 956] CNIOBoringSSL
[442 / 956] CNIOBoringSSL
[448 / 956] CNIOBoringSSL
[455 / 956] CNIOBoringSSL
[466 / 956] CNIOBoringSSL
[475 / 956] CNIOBoringSSL
[478 / 956] CNIOBoringSSL
[479 / 956] CNIOBoringSSL
[484 / 956] CNIOBoringSSL
[485 / 956] CNIOBoringSSL
[489 / 956] CNIOBoringSSL
[496 / 956] CNIOBoringSSL
[498 / 956] CNIOBoringSSL
[500 / 956] CNIOBoringSSL
[502 / 956] CNIOBoringSSL
[507 / 956] CNIOBoringSSL
[508 / 956] CNIOBoringSSL
[511 / 956] CNIOBoringSSL
[513 / 956] CNIOBoringSSL
[516 / 956] CNIOBoringSSL
[520 / 956] CNIOBoringSSL
[522 / 956] CNIOBoringSSL
[529 / 956] CNIOBoringSSL
[540 / 956] CNIOBoringSSL
[544 / 956] CNIOBoringSSL
[546 / 956] CNIOBoringSSL
[552 / 956] CNIOBoringSSL
[556 / 956] CNIOBoringSSL
[559 / 956] CNIOBoringSSL
[567 / 956] CNIOBoringSSL
[579 / 956] CNIOBoringSSL
[581 / 956] CNIOBoringSSL
[583 / 956] CNIOBoringSSL
[592 / 956] CNIOBoringSSL
[593 / 956] CNIOBoringSSL
[599 / 956] CNIOBoringSSL
[602 / 956] CNIOBoringSSL
[606 / 956] CNIOBoringSSL
[611 / 956] CNIOBoringSSL
[615 / 956] CNIOBoringSSL
[618 / 956] CNIOBoringSSL
[619 / 956] CNIOBoringSSL
[622 / 956] CNIOBoringSSL
[627 / 956] CNIOBoringSSL
[632 / 956] CNIOBoringSSL
[634 / 956] CNIOBoringSSL
[643 / 956] CNIOBoringSSL
[654 / 956] CNIOBoringSSL
[661 / 956] CNIOBoringSSL
[667 / 956] CNIOBoringSSL
[669 / 956] CNIOBoringSSL
[673 / 956] CNIOBoringSSL
[676 / 956] CNIOBoringSSL
[679 / 956] CNIOBoringSSL
[687 / 956] CNIOBoringSSL
[697 / 956] CNIOBoringSSL
[707 / 956] CNIOBoringSSL
[708 / 956] CNIOBoringSSL
[709 / 956] CNIOBoringSSL
[716 / 956] CNIOBoringSSL
[717 / 956] CNIOBoringSSL
[721 / 956]
[738 / 956] _NIODataStructures
[746 / 956] NIOConcurrencyHelpers
[751 / 956]
[753 / 956]
[756 / 956] _AtomicsShims
[758 / 956] _NIODataStructures
[763 / 956]
[768 / 956] Logging
[770 / 956] Logging-product
[779 / 956] NIOConcurrencyHelpers
[787 / 956] ContainersPreview
[798 / 956] CNIOAtomics
[808 / 958] Atomics-product
[815 / 974]
[829 / 974]
[833 / 974]
[836 / 975] ContainersPreview
[844 / 986]
[849 / 986] ContainersPreview
[857 / 987] ContainersPreview
[864 / 998] ContainersPreview
[869 / 998] CNIOBoringSSLShims
[874 / 998] ContainersPreview
[876 / 998] DequeModule
[885 / 999] NIOCore
[888 / 1016]
[890 / 1016]
[900 / 1016] NIOCore
[901 / 1016] NIOCore
[902 / 1016] NIOCore
[902 / 1016] CNIOAtomics
[902 / 1016] NIOCore
[902 / 1016] CNIOAtomics
[904 / 1016] NIOCore
[915 / 1019] NIOEmbedded
[919 / 1023] NIOEmbedded
[925 / 1023] NIOFoundationEssentialsCompat
[939 / 1055]
[942 / 1055]
[943 / 1055]
[944 / 1055]
[945 / 1055]
[956 / 1055] NIOPosix
[957 / 1055] NIOFoundationEssentialsCompat
[965 / 1055] NIOFoundationEssentialsCompat
[965 / 1055] NIOPosix
[972 / 1056] NIOFoundationEssentialsCompat
[976 / 1058] NIO
[986 / 1061] NIOPosix
[996 / 1079] NIOHTTP1
[1007 / 1083] NIOTLS-product
[1018 / 1083] NIOHTTP1
[1020 / 1083] NIOFoundationCompat-product
[1028 / 1085] NIOTransportServices
[1030 / 1086]
[1031 / 1086] NIOHTTP1
[1032 / 1098]
[1039 / 1098] NIOWebSocket
[1042 / 1113] NIOSSL
[1048 / 1126] NIOWebSocket
[1055 / 1126]
[1063 / 1126] NIOTransportServices
[1067 / 1126] NIOTransportServices
[1077 / 1126] NIOTransportServices-product
[1080 / 1126] NIOSSL
[1081 / 1126] NIOSSL
[1089 / 1126] NIOSSL
[1092 / 1126] NIOTransportServices
[1096 / 1127] NIO
[1099 / 1127] NIO-product
[1101 / 1127] NIOSSL
[1110 / 1175]
[1116 / 1175]
[1121 / 1175]
[1126 / 1175]
[1128 / 1175]
[1132 / 1175]
[1136 / 1175]
[1137 / 1175]
[1138 / 1175]
[1139 / 1175]
[1140 / 1175]
[1151 / 1175] LCLWebSocket
[1158 / 1176] LCLWebSocket
[1171 / 1187] LCLSpeedtest
[1182 / 1188] LCLSpeedtest
[1183 / 1188] Demo-product
[1185 / 1190] Demo-product
[1188 / 1190] Demo-product
Build complete! (39.70 sec)
Fetching https://github.com/apple/swift-nio.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/Local-Connectivity-Lab/lcl-websocket.git
[1/8132] Fetching swift-log
[2/8769] Fetching swift-log, lcl-websocket
[8770/94834] Fetching swift-log, lcl-websocket, swift-nio
Fetched https://github.com/apple/swift-log.git (10.31s)
Fetched https://github.com/apple/swift-nio.git (10.31s)
Fetched https://github.com/Local-Connectivity-Lab/lcl-websocket.git (10.32s)
Computing version for https://github.com/Local-Connectivity-Lab/lcl-websocket.git
warning: 'lcl-websocket': /Package.swift:9:48: warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
 7 |     name: "LCLWebSocket",
 8 |     platforms: [
 9 |         .macOS(.v10_15), .iOS(.v13), .watchOS(.v4), .tvOS(.v13), .visionOS(.v1),
   |                                                `- warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
10 |     ],
11 |     products: [
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
Computed https://github.com/Local-Connectivity-Lab/lcl-websocket.git at 1.1.1 (10.93s)
Fetching https://github.com/apple/swift-nio-transport-services.git
Fetching https://github.com/apple/swift-nio-ssl.git
Fetching https://github.com/apple/swift-atomics.git
[1/2863] Fetching swift-nio-transport-services
[2/4738] Fetching swift-nio-transport-services, swift-atomics
[605/20803] Fetching swift-nio-transport-services, swift-atomics, swift-nio-ssl
Fetched https://github.com/apple/swift-nio-ssl.git (11.78s)
Fetched https://github.com/apple/swift-atomics.git (11.78s)
Fetched https://github.com/apple/swift-nio-transport-services.git (11.78s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.1 (12.37s)
Computing version for https://github.com/apple/swift-nio-transport-services.git
Computed https://github.com/apple/swift-nio-transport-services.git at 1.28.0 (0.58s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.15.1 (0.56s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.37.5 (0.69s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.103.0 (0.66s)
Fetching https://github.com/apple/swift-system.git
Fetching https://github.com/apple/swift-collections.git
[1/6898] Fetching swift-system
[898/34552] Fetching swift-system, swift-collections
Fetched https://github.com/apple/swift-system.git (2.68s)
Fetched https://github.com/apple/swift-collections.git (2.68s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.6.0 (3.38s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.8.1 (0.56s)
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.103.0
Creating working copy for https://github.com/apple/swift-nio-transport-services.git
Working copy of https://github.com/apple/swift-nio-transport-services.git resolved at 1.28.0
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.8.1
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.6.0
Creating working copy for https://github.com/Local-Connectivity-Lab/lcl-websocket.git
Working copy of https://github.com/Local-Connectivity-Lab/lcl-websocket.git resolved at 1.1.1
Creating working copy for https://github.com/apple/swift-nio-ssl.git
Working copy of https://github.com/apple/swift-nio-ssl.git resolved at 2.37.5
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.1
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.15.1
warning: 'lcl-websocket': /Users/admin/builder/spi-builder-workspace/.build/checkouts/lcl-websocket/Package.swift:9:48: warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
 7 |     name: "LCLWebSocket",
 8 |     platforms: [
 9 |         .macOS(.v10_15), .iOS(.v13), .watchOS(.v4), .tvOS(.v13), .visionOS(.v1),
   |                                                `- warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
10 |     ],
11 |     products: [
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:75:44: warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class DownloadClient: SpeedTestable {
    |                      `- note: class 'DownloadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 73 |                         onFinish(
 74 |                             DownloadClient.generateMeasurementProgress(
 75 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 76 |                                 numBytes: self.totalBytes,
 77 |                                 direction: .download
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:88:44: warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class DownloadClient: SpeedTestable {
    |                      `- note: class 'DownloadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 86 |                         onFinish(
 87 |                             DownloadClient.generateMeasurementProgress(
 88 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 89 |                                 numBytes: self.totalBytes,
 90 |                                 direction: .download
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:124:35: warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
122 |             if let onMeasurement = self.onMeasurement {
123 |                 self.emitter.async {
124 |                     onMeasurement(measurement)
    |                                   `- warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
125 |                 }
126 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/Models/Measurement.swift:91:15: note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 89 | }
 90 |
 91 | public struct SpeedTestMeasurement: Codable {
    |               `- note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 92 |     public var appInfo: AppInfo?
 93 |     public let bbrInfo: BBRInfo?
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:141:40: warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class DownloadClient: SpeedTestable {
    |                      `- note: class 'DownloadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
139 |                     onProgress(
140 |                         DownloadClient.generateMeasurementProgress(
141 |                             startTime: self.startTime,
    |                                        `- warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
142 |                             numBytes: self.totalBytes,
143 |                             direction: .download
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/UploadClient.swift:76:44: warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class UploadClient: SpeedTestable {
    |                      `- note: class 'UploadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 74 |                         onFinish(
 75 |                             UploadClient.generateMeasurementProgress(
 76 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 77 |                                 numBytes: self.totalBytes,
 78 |                                 direction: .upload
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/UploadClient.swift:89:44: warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class UploadClient: SpeedTestable {
    |                      `- note: class 'UploadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 87 |                         onFinish(
 88 |                             UploadClient.generateMeasurementProgress(
 89 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 90 |                                 numBytes: self.totalBytes,
 91 |                                 direction: .upload
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/UploadClient.swift:123:35: warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
121 |             if let onMeasurement = self.onMeasurement {
122 |                 self.emitter.async {
123 |                     onMeasurement(measurement)
    |                                   `- warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
124 |                 }
125 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/Models/Measurement.swift:91:15: note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 89 | }
 90 |
 91 | public struct SpeedTestMeasurement: Codable {
    |               `- note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 92 |     public var appInfo: AppInfo?
 93 |     public let bbrInfo: BBRInfo?
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-nio",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.81.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "lcl-websocket",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.1",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Local-Connectivity-Lab/lcl-websocket.git"
    }
  ],
  "manifest_display_name" : "lcl-speedtest",
  "name" : "lcl-speedtest",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "LCLSpeedtest",
      "targets" : [
        "LCLSpeedtest"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Demo",
      "targets" : [
        "Demo"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "LCLSpeedtest",
      "module_type" : "SwiftTarget",
      "name" : "LCLSpeedtest",
      "path" : "Sources/LCLSpeedtest",
      "product_dependencies" : [
        "NIO",
        "NIOCore",
        "NIOPosix",
        "NIOConcurrencyHelpers",
        "Logging",
        "LCLWebSocket"
      ],
      "product_memberships" : [
        "LCLSpeedtest",
        "Demo"
      ],
      "sources" : [
        "Constants.swift",
        "DownloadClient.swift",
        "Errors.swift",
        "Models/Measurement.swift",
        "Models/TestServer.swift",
        "Models/TestType.swift",
        "Networking.swift",
        "SpeedTestClient.swift",
        "SpeedTestable.swift",
        "UploadClient.swift",
        "Utils/WebSocketClosCode+Extension.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Demo",
      "module_type" : "SwiftTarget",
      "name" : "Demo",
      "path" : "Sources/Demo",
      "product_memberships" : [
        "Demo"
      ],
      "sources" : [
        "Client.swift"
      ],
      "target_dependencies" : [
        "LCLSpeedtest"
      ],
      "type" : "executable"
    }
  ],
  "tools_version" : "5.9"
}
Done.