# Copyright (C) 2011 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This file is generated by device/common/generate-blob-lists.sh - DO NOT EDIT

/system/bin/efsks
/system/bin/ks
/system/bin/netmgrd
/system/bin/qcks
/system/bin/qmuxd
/system/bin/rmt_storage
/system/etc/firmware/a225_pfp.fw
/system/etc/firmware/a225_pm4.fw
/system/etc/firmware/a300_pfp.fw
/system/etc/firmware/a300_pm4.fw
/system/etc/firmware/leia_pfp_470.fw
/system/etc/firmware/vidc_1080p.fw
/system/lib/egl/eglsubAndroid.so
/system/lib/egl/libEGL_adreno200.so
/system/lib/egl/libGLESv1_CM_adreno200.so
/system/lib/egl/libGLESv2S3D_adreno200.so
/system/lib/egl/libGLESv2_adreno200.so
/system/lib/libdiag.so
/system/lib/libDiagService.so
/system/lib/libdsi_netctrl.so
/system/lib/libdsutils.so
/system/lib/libgsl.so
/system/lib/libidl.so
/system/lib/libllvm-a3xx.so
/system/lib/libnetmgr.so
/system/lib/libqcci_legacy.so
/system/lib/libqdi.so
/system/lib/libqdp.so
/system/lib/libqmi.so
/system/lib/libqmiservices.so
/system/lib/libqmi_cci.so
/system/lib/libqmi_client_qmux.so
/system/lib/libqmi_common_so.so
/system/lib/libqmi_csi.so
/system/lib/libqmi_csvt_srvc.so
/system/lib/libqmi_encdec.so
/system/lib/libril-qc-qmi-1.so
/system/lib/libril-qcril-hook-oem.so
/system/lib/libsc-a3xx.so
