# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# NOTE! NOTE! NOTE!  After changing this file in any way, always run
# `scripts/download-prebuilt --resolve` to update the zircon.versions file
# with specific instance IDs for each version listed here.  CIPD relies on
# the generated zircon.versions file for exactly what to download and for
# content signatures to verify.

$ResolvedVersions zircon.versions

# This tells CIPD to fix up manually deleted files.
$ParanoidMode CheckPresence

# `cipd ensure-file-resolve` fails if this isn't present, though it's useless.
$VerifiedPlatform linux-amd64

# ADSP SST Firmware
@Subdir firmware/intel-adsp-sst
fuchsia_internal/firmware/intel-adsp-sst NC0gy5Ej51GElpWUQXzO6Q1d5hPLV4Z4c1mbhDLuhfcC

# Broadcom BCM4345C4 Firmware
@Subdir firmware/bluetooth/bcm4345c4
fuchsia_internal/firmware/bluetooth/bcm4345c4 git_revision:1e41b7d6f96f09558a36a636de2819068cd71ea0

# FX3 USB Testing Firmware
@Subdir firmware/usb-testing/fx3
fuchsia_internal/firmware/usb-testing/fx3 ywX77St78eCmUF4NXi0rs4l0g7zHXxia_S3bM6n-OVkC

# FX3 USB Flash Programmer Firmware
@Subdir firmware/fx3-flash
fuchsia_internal/firmware/fx3-flash c8whlpMnrQukCMf01_Yyi1F0nHK2g7A5fIwMXcDRyk4C

# FX3 USB Bootloader Firmware
@Subdir firmware/fx3-boot
fuchsia_internal/firmware/fx3-boot pWauzviAyLDgNPkMyKQV-p8N5kCiG5P_QeMVgRZ-pykC

# Mediatek MT7668 Firmware
@Subdir firmware/bluetooth/mt7668
fuchsia_internal/firmware/bluetooth/mt7668 git_revision:ed8b2eb6b877e93afb8a9f9281b93a7b91df0f09

# Keysafe TA Firmware
@Subdir firmware/optee/astro
fuchsia_internal/firmware/optee/astro/808032e0-fd9e-4e6f-8896-544735c98480/prod Q1PTuycfNIWR0-E7vvVKtvEVlG5997Awoh_l7vql1mUC

# Secmem TA Firmware
@Subdir firmware/optee/astro
fuchsia_internal/firmware/optee/astro/2c1a33c0-44cc-11e5-bc3b-0002a5d5c51b/prod TjGDkTFdMYtMhUtairFSbtd_zDt48gr9aeNGOAQ30JoC

# Castauth TA firmware
@Subdir firmware/optee/astro
fuchsia_internal/firmware/optee/astro/93a424e2-5608-4413-84a8-58b16a064dce/prod 4P4YQWkljnj3BGNoAetWltw8JdNlQf9Fh7BeF6masUEC

# Widevine TA Firmware
@Subdir firmware/optee/astro
fuchsia_internal/firmware/optee/astro/e043cde0-61d0-11e5-9c26-0002a5d5c51b/prod bDcuRO2-QBXObHfn038G3r76gPaUyC1uu2dB3sXtqT0C

# PlayReady TA firmware
@Subdir firmware/optee/astro
fuchsia_internal/firmware/optee/astro/9a04f079-9840-4286-ab92-e65be0885f95/prod lzj3H1WeJqyS0pcfZ5JR6MMK-nH524YBEhkPLWFOUpQC

# Provisioning TA Firmware
@Subdir firmware/optee/astro
fuchsia_internal/firmware/optee/astro/d83c3c4a-9e8d-4e4e-ad30-9d40e137f689/prod fSnj7Eo1iEqqn33nRitivqYXkXDb_aPHrUWtD0DOj6kC

# video_firmware TA Firmware
@Subdir firmware/optee/astro
fuchsia_internal/firmware/optee/astro/526fc4fc-7ee6-4a12-96e3-83da9565bce8/prod UPjK4-tTZO0zzAgZ2AXAyxG-CDWDF-I3q8-JNAeqxXYC

# Keysafe TA Firmware for Sherlock
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/808032e0-fd9e-4e6f-8896-544735c98480/dev 3mylSlGw3N4P6oDGAdhDtp2IovKpIyLIl_Qv8qjL_kIC

# Secmem TA Firmware for Sherlock
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/2c1a33c0-44cc-11e5-bc3b-0002a5d5c51b/dev NU-kCQ9Z0PImHiaSckHonITRKmE_l-DE6RgxaYny58AC

# Weave Auth TA Firmware for Sherlock
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/aa6aa795-9ab7-41a9-9138-320e37bffb11/dev _13Cu0fv8kfMyR-Vzv45qLJ0A0wwrmKMhlJLssMBOmoC

# video_firmware TA Firmware for Sherlock
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/526fc4fc-7ee6-4a12-96e3-83da9565bce8/dev NXpjvwKuVkGHr7SzNQG-zdW4JXBrQoDplkShec5_o0AC

# clearTVP TA Firmware for Sherlock
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/41fe9859-71e4-4bf4-bbaa-d71435b127ae/dev fVZUavepT7M36ByQuZKiiMlk1XDrU5DtyU2Sta4H0_gC

# cast_auth TA Firmware for Sherlock
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/93a424e2-5608-4413-84a8-58b16a064dce/dev UvXCbjvPF8L3mCdW9cuCC0WD81tdqVgqxU_EiFAFd7wC

# Widevine TA Firmware
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/e043cde0-61d0-11e5-9c26-0002a5d5c51b/dev H8OVgHJ7oaxLJPatlOcSj1atr07UQ_mi-r1FB5pHbWEC

# PlayReady TA firmware
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/9a04f079-9840-4286-ab92-e65be0885f95/dev Qcectd3dKzvE_qIMei-ugnHx93wEH0sB78eKqbEpMH8C

# Provisioning TA Firmware
@Subdir firmware/optee/sherlock
fuchsia_internal/firmware/optee/sherlock/d83c3c4a-9e8d-4e4e-ad30-9d40e137f689/dev P1MlGGNuvHeimH6MYJuhnZCF5V86prp5Q-QXd6NumwgC
