commit c036d3c08c2f30f3dd79e1ef9a7531ebf355f889 Author: Anand S Date: Wed Jul 3 23:59:30 2024 +0530 bangkk: Initial import of device specific blobs * From MMI-U1TC34M.22-64-18 Change-Id: I5f82e87b5232cb83ccfa8b61409a5dc3124de238 diff --git a/Android.bp b/Android.bp new file mode 100644 index 0000000..d7c933f --- /dev/null +++ b/Android.bp @@ -0,0 +1,38 @@ +// Automatically generated file. DO NOT MODIFY +// +// This file is generated by device/motorola/bangkk/setup-makefiles.sh + +soong_namespace { +} + +android_app_import { + name: "HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND", + owner: "motorola", + apk: "proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND.apk", + certificate: "platform", + dex_preopt: { + enabled: false, + }, + privileged: true, + product_specific: true, +} + +android_app_import { + name: "HotwordEnrollmentXGoogleHEXAGON_WIDEBAND", + owner: "motorola", + apk: "proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND.apk", + certificate: "platform", + dex_preopt: { + enabled: false, + }, + privileged: true, + product_specific: true, +} + +dex_import { + name: "com.android.hotwordenrollment.common.util", + owner: "motorola", + jars: ["proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar"], + system_ext_specific: true, +} + diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..00891f8 --- /dev/null +++ b/Android.mk @@ -0,0 +1,9 @@ +# Automatically generated file. DO NOT MODIFY +# +# This file is generated by device/motorola/bangkk/setup-makefiles.sh + +LOCAL_PATH := $(call my-dir) + +ifeq ($(TARGET_DEVICE),bangkk) + +endif diff --git a/BoardConfigVendor.mk b/BoardConfigVendor.mk new file mode 100644 index 0000000..f713f72 --- /dev/null +++ b/BoardConfigVendor.mk @@ -0,0 +1,4 @@ +# Automatically generated file. DO NOT MODIFY +# +# This file is generated by device/motorola/bangkk/setup-makefiles.sh + diff --git a/bangkk-vendor.mk b/bangkk-vendor.mk new file mode 100644 index 0000000..71e4d8b --- /dev/null +++ b/bangkk-vendor.mk @@ -0,0 +1,382 @@ +# Automatically generated file. DO NOT MODIFY +# +# This file is generated by device/motorola/bangkk/setup-makefiles.sh + +PRODUCT_SOONG_NAMESPACES += \ + vendor/motorola/bangkk + +PRODUCT_COPY_FILES += \ + vendor/motorola/bangkk/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/permissions/com.android.hotwordenrollment.common.util.xml \ + vendor/motorola/bangkk/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets:$(TARGET_COPY_OUT_VENDOR)/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets \ + vendor/motorola/bangkk/proprietary/vendor/bin/hw/motorola.hardware.camera.desktop@2.0-service:$(TARGET_COPY_OUT_VENDOR)/bin/hw/motorola.hardware.camera.desktop@2.0-service \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Bluetooth_cal.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/General_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/General_cal.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/Global_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Global_cal.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/Handset_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Handset_cal.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Hdmi_cal.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/Headset_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Headset_cal.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Speaker_cal.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/adsp_avs_config.acdb \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/SwadAIMod.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/SwadAIMod.bin \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/SwadCalib.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/SwadCalib.bin \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/SwadParamList.txt:$(TARGET_COPY_OUT_VENDOR)/etc/camera/SwadParamList.txt \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/aec_golden_wide.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/aec_golden_wide.bin \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/anc_detect_model:$(TARGET_COPY_OUT_VENDOR)/etc/camera/anc_detect_model \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/anc_track_model:$(TARGET_COPY_OUT_VENDOR)/etc/camera/anc_track_model \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/dual_golden_wide.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/dual_golden_wide.bin \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/vidhance.lic:$(TARGET_COPY_OUT_VENDOR)/etc/camera/vidhance.lic \ + vendor/motorola/bangkk/proprietary/vendor/etc/camera/vidhance_calibration:$(TARGET_COPY_OUT_VENDOR)/etc/camera/vidhance_calibration \ + vendor/motorola/bangkk/proprietary/vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service-ets.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/android.hardware.biometrics.fingerprint@2.1-service-ets.rc \ + vendor/motorola/bangkk/proprietary/vendor/etc/init/motorola.hardware.camera.desktop@2.0-service.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/motorola.hardware.camera.desktop@2.0-service.rc \ + vendor/motorola/bangkk/proprietary/vendor/etc/init/motorola.hardware.camera.imgtuner@2.0-service.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/motorola.hardware.camera.imgtuner@2.0-service.rc \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-PN557.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-PN557.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-SN220-UICC.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-SN220-UICC.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-SN220.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-SN220.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-mtp-SN100-UICC.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-mtp-SN100-UICC.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-mtp-SN100.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-mtp-SN100.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-mtp-SN100_38_4MHZ.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-nxp-pnscr.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp-pnscr.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-qrd-SN100.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-qrd-SN100.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-qrd-SN100_38_4MHZ.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-sec-nci.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-sec-nci.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/libnfc-sec-vendor.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-sec-vendor.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/nfc_calibration.txt:$(TARGET_COPY_OUT_VENDOR)/etc/nfc_calibration.txt \ + vendor/motorola/bangkk/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_csot_1080p_dsc_655.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_mipi_moto_vid_csot_1080p_dsc_655.xml \ + vendor/motorola/bangkk/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_1080p_dsc_655.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_mipi_moto_vid_tm_1080p_dsc_655.xml \ + vendor/motorola/bangkk/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_u8_1080p_dsc_655.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_mipi_moto_vid_tm_u8_1080p_dsc_655.xml \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/mot_camgest.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/mot_camgest.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_amd.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_amd.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_amd_sw_disabled.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_amd_sw_enabled.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_aont.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_aont.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_basic_gestures.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_basic_gestures.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_bring_to_ear.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_bring_to_ear.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_ccd.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_ccd.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_ccd_v2_walk.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_ccd_v2_walk.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_ccd_v3_1_walk.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_ccd_v3_1_walk.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_ccd_v3_walk.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_ccd_v3_walk.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_cm.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_cm.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_dae.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_dae.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_device_orient.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_device_orient.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_diag_filter.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_diag_filter.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_direct_channel.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_direct_channel.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_distance_bound.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_distance_bound.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_dpc.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_dpc.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_facing.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_facing.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_fmv.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_fmv.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_fmv_legacy.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_geomag_rv.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_gyro_cal.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_heart_rate.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_heart_rate.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_mag_cal.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_mag_cal.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_mag_cal_legacy.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_mag_cal_legacy.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_multishake.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_multishake.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_pedometer.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_pedometer.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_rmd.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_rmd.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_rotv.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_rotv.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_smd.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_smd.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_tilt.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_tilt.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_tilt_sw_disabled.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_tilt_sw_disabled.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_tilt_sw_enabled.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_tilt_to_wake.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_wrist_pedo.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/strait_default_sensors.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/strait_default_sensors.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/strait_dynamic_sensors.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/strait_dynamic_sensors.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/strait_lsm6dso_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/strait_lsm6dso_0.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/strait_mmc56x3x_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/strait_mmc56x3x_0.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/strait_mn78xxx_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/strait_mn78xxx_0.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/strait_power_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/strait_power_0.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/config/strait_qmc6308_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/strait_qmc6308_0.json \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/descriptor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/descriptor.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_barocal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_barocal.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_camgest.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_camgest.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_chopchop.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_devorient.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_devorient.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_dsp_usound.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_flip.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_flip.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_ftm.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_ftm.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_glance.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_glance.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_log.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_log.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_lts.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_lts.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_ltv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_ltv.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_movement.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_movement.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_offbody.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_offbody.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_probe.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_probe.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_proxcal.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_stowed.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_stowed.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/mot_vsync.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_vsync.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/nanopb.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/nanopb.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_accel.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_accel.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_accel_cal.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_activity_recognition.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ambient_light.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ambient_temperature.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_amd.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_amd.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_aont.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_aont.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_basic_gestures.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_bring_to_ear.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_cal.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_client.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_client.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_cmc.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_cmc.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_da_test.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_da_test.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_device_mode.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_device_orient.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_diag.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_diag.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_diag_sensor.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_direct_channel.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_dpc.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_dpc.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ext_svc.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_facing.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_facing.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_fmv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_fmv.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_formatter.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_formatter.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_formatter_notify.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_formatter_notify.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_fw.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_fw.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_game_rv.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_geomag_rv.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_gravity.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gravity.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_gyro.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gyro.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gyro_cal.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gyro_rot_matrix.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_hall.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_hall.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_heart_beat.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_heart_rate.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_hinge_angle.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_humidity.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_humidity.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_mag.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_mag.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_mag_cal.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_mot_factory_cal.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_oem1.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_oem1.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_offbody_detect.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pedometer.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pedometer_wrist.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_physical_sensor_test.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pose_6dof.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_ppg.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ppg.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_pressure.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pressure.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_proximity.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_proximity.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_psmd.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_psmd.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_registry.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_registry.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_resampler.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_resampler.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_rgb.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_rgb.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_rmd.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_rmd.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_rotv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_rotv.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_sar.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_sar.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_sensor_temperature.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_sig_motion.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_std.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std_event_gated_sensor.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std_sensor.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_std_type.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std_type.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_step_detect.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_suid.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_suid.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_thermopile.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_threshold.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_threshold.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_tilt.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_tilt.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_tilt_to_wake.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ultra_violet.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_wrist_tilt_gesture.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/proto/tcs3708.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/tcs3708.proto \ + vendor/motorola/bangkk/proprietary/vendor/etc/sensors/sns_reg_config:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/sns_reg_config \ + vendor/motorola/bangkk/proprietary/vendor/etc/thermal-engine-bangkk-camera.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-bangkk-camera.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/thermal-engine-bangkk-game-normal.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-bangkk-game-normal.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/thermal-engine-bangkk-game-perf.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-bangkk-game-perf.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/thermal-engine-bangkk.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-bangkk.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf \ + vendor/motorola/bangkk/proprietary/vendor/etc/vhw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/vhw.xml \ + vendor/motorola/bangkk/proprietary/vendor/firmware/aw87xxx_acf.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/aw87xxx_acf.bin \ + vendor/motorola/bangkk/proprietary/vendor/firmware/aw963xx_reg_0.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/aw963xx_reg_0.bin \ + vendor/motorola/bangkk/proprietary/vendor/firmware/csot_focal_test_limits.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/csot_focal_test_limits.ini \ + vendor/motorola/bangkk/proprietary/vendor/firmware/focaltech-csot-ft3681-26-0000-bangkk.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/focaltech-csot-ft3681-26-0000-bangkk.bin \ + vendor/motorola/bangkk/proprietary/vendor/firmware/goodix-tm-gt9916S-23062705-649a9b6c-bangkk.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/goodix-tm-gt9916S-23062705-649a9b6c-bangkk.bin \ + vendor/motorola/bangkk/proprietary/vendor/firmware/mot_aw86006.prog:$(TARGET_COPY_OUT_VENDOR)/firmware/mot_aw86006.prog \ + vendor/motorola/bangkk/proprietary/vendor/firmware/mot_dw9784.prog:$(TARGET_COPY_OUT_VENDOR)/firmware/mot_dw9784.prog \ + vendor/motorola/bangkk/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/sec_s3nrn4v_firmware.bin \ + vendor/motorola/bangkk/proprietary/vendor/firmware/tm_goodix_cfg_group.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/tm_goodix_cfg_group.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib/libacdbloader.so:$(TARGET_COPY_OUT_VENDOR)/lib/libacdbloader.so \ + vendor/motorola/bangkk/proprietary/vendor/lib/libcamxexternalformatutils.so:$(TARGET_COPY_OUT_VENDOR)/lib/libcamxexternalformatutils.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_bangkk_s5k4h7_otp.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.mot.eeprom.mot_bangkk_s5k4h7_otp.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128f_s5kgn9_eeprom.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.mot.eeprom.mot_gt24p128f_s5kgn9_eeprom.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64b_ov16a1q_eeprom.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.mot.eeprom.mot_gt24p64b_ov16a1q_eeprom.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.flash.aw36514.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.flash.aw36514.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.flash.ocp81373.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.flash.ocp81373.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensor.mot_ov16a1q.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensor.mot_s5k4h7.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kgn9.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensor.mot_s5kgn9.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_ov16a1q_ofilm.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_bangkk_ov16a1q_ofilm.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5k4h7_qtech.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_bangkk_s5k4h7_qtech.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ak7377.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ak7377.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ofilm.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ofilm.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.default.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q_india.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q_india.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af_india.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af_india.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377_india.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377_india.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_india.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_india.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.arcsoft.node.mfnr.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.arcsoft.node.supernightraw.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.arcsoft.node.supernightraw.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.mot.node.c2d.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.mot.node.c2d.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.mot.node.dc_capture.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.mot.node.dc_preview.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.camx.chiiqutils.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.eisv2.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.eisv2.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.eisv3.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.eisv3.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.hvx.addconstant.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.hvx.binning.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.customhwnode.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.depth.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.depth.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.dewarp.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.dummyrtb.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.dummysat.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.eisv2.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.eisv3.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.fcv.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.formatconversion.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.gpu.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.memcpy.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.ml.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.ml.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.remosaic.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.stich.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.stich.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swaidenoiser.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swbestats.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swcac.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swlsc.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swmctf.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swmfnr.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swpdpc.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swpreprocess.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.node.swregistration.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.aec.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.aecwrapper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.aecxcore.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.af.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.af.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.afd.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.afwrapper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.asd.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.awb.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.awbwrapper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.cnndriver.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.haf.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.hafoverride.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.pdlib.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.pdlibsony.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qti.stats.pdlibwrapper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qtistatic.stats.aec.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qtistatic.stats.af.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qtistatic.stats.awb.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.qtistatic.stats.pdlib.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.vidhance.node.ica.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/com.vidhance.node.processing.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/components/libdepthmapwrapper_secure.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/fdconfigpreview.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigpreview.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigpreviewlite.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/fdconfigvideo.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigvideo.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/camera/fdconfigvideolite.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigvideolite.bin \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.chiusecaseselector.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.chiusecaseselector.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.anchorsync.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.anchorsync.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.arcrawpro.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.arcrawpro.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.demux.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.demux.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.frameselect.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.frameselect.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.fusion.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.fusion.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.generic.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.generic.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.gs.mannar.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.hdr.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.hdr.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.mcreprocrt.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.memcpy.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.memcpy.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.mfsr.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.mfsr.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.mux.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.mux.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.rawhdr.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.rawhdr.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.realtimeserializer.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.rt.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.rt.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.rtmcx.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.rtmcx.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.serializer.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.serializer.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.feature2.swmf.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.feature2.swmf.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.settings.mannar.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.settings.mannar.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qti.stats.common.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qti.stats.common.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qualcomm.mcx.distortionmapper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qualcomm.mcx.linearmapper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qualcomm.mcx.policy.mfl.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so:$(TARGET_COPY_OUT_VENDOR)/lib64/com.qualcomm.qti.mcx.usecase.extension.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/hw/camera.qcom.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/camera.qcom.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/hw/com.qti.chi.override.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/com.qti.chi.override.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libBSTSWAD.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libBSTSWAD.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libRbsFlow.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libRbsFlow.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libacdbloader.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libacdbloader.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libarcsoft_chi_utils.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libarcsoft_chi_utils.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libarcsoft_low_light_shot.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libarcsoft_low_light_shot.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libarcsoft_portrait_super_night_se_raw.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libarcsoft_portrait_super_night_se_raw.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libarcsoft_super_night_raw.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libarcsoft_super_night_raw.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libarcsoft_super_night_se_raw.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libarcsoft_super_night_se_raw.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libbitmlengine.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libbitmlengine.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libbitmlenginev2.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libbitmlenginev2.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libc2d_helper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libc2d_helper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamera_nn_stub.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamera_nn_stub.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamerapostproc.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamerapostproc.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxexternalformatutils.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxexternalformatutils.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxfacialfeatures.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxfacialfeatures.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxfdalgo.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxfdalgo.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxfdengine.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxfdengine.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxifestriping.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxifestriping.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamximageformatutils.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamximageformatutils.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxqsatalgo.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxqsatalgo.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxstatscore.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxstatscore.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxswispiqmodule.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxswispiqmodule.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxswprocessalgo.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxswprocessalgo.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcamxtintlessalgo.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcamxtintlessalgo.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcapiv2svacnn.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcapiv2svacnn.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcapiv2svarnn.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcapiv2svarnn.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcapiv2vop.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcapiv2vop.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libchilog.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libchilog.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libcom.qti.chinodeutils.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libcom.qti.chinodeutils.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libets_teeclient_v3.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libets_teeclient_v3.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libjpege.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libjpege.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmctfengine_stub.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmctfengine_stub.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_bestats.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_bestats.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_cac3.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_cac3.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_faceproc.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_faceproc.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_faceproc2.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_faceproc2.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_lscv35.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_lscv35.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_mfnr.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_mfnr.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_mfnr_t4.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_mfnr_t4.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmmcamera_pdpc.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmmcamera_pdpc.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmot_afd.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmot_afd.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmot_chi_desktop_helper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmot_chi_desktop_helper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmot_engine_settings.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmot_engine_settings.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libmpbase.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libmpbase.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libofflinedump.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libofflinedump.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libofflinelog.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libofflinelog.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libopencv.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libopencv.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libopestriping.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libopestriping.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libremosaic_wrapper.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libremosaic_wrapper.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libsns_device_mode_stub.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libsns_device_mode_stub.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libsns_fastRPC_util.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libsns_fastRPC_util.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libsns_low_lat_stream_stub.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libsns_low_lat_stream_stub.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libsnsdiaglog.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libsnsdiaglog.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libswregistrationalgo.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libswregistrationalgo.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libtfestriping.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libtfestriping.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libundistort_impl.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libundistort_impl.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libvideooptfeature.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libvideooptfeature.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/libvidhance.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libvidhance.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/motorola.hardware.camera.desktop@1.0.so:$(TARGET_COPY_OUT_VENDOR)/lib64/motorola.hardware.camera.desktop@1.0.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/motorola.hardware.camera.desktop@2.0.so:$(TARGET_COPY_OUT_VENDOR)/lib64/motorola.hardware.camera.desktop@2.0.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/sensors.moto.so:$(TARGET_COPY_OUT_VENDOR)/lib64/sensors.moto.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/sensors.ssc.so:$(TARGET_COPY_OUT_VENDOR)/lib64/sensors.ssc.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so:$(TARGET_COPY_OUT_VENDOR)/lib64/vendor.egistec.hardware.fingerprint@4.0.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so:$(TARGET_COPY_OUT_VENDOR)/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so \ + vendor/motorola/bangkk/proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so:$(TARGET_COPY_OUT_VENDOR)/lib64/vendor.qti.hardware.fingerprint@1.0.so + +PRODUCT_PACKAGES += \ + HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND \ + HotwordEnrollmentXGoogleHEXAGON_WIDEBAND \ + com.android.hotwordenrollment.common.util diff --git a/proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND.apk b/proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND.apk new file mode 100644 index 0000000..8c0e4bb Binary files /dev/null and b/proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND/HotwordEnrollmentOKGoogleHEXAGON_WIDEBAND.apk differ diff --git a/proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND.apk b/proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND.apk new file mode 100644 index 0000000..dad26f2 Binary files /dev/null and b/proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND/HotwordEnrollmentXGoogleHEXAGON_WIDEBAND.apk differ diff --git a/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml b/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml new file mode 100644 index 0000000..6f7d728 --- /dev/null +++ b/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar b/proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar new file mode 100644 index 0000000..afc0a4e Binary files /dev/null and b/proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar differ diff --git a/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets b/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets new file mode 100644 index 0000000..fe3cf7e Binary files /dev/null and b/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets differ diff --git a/proprietary/vendor/bin/hw/motorola.hardware.camera.desktop@2.0-service b/proprietary/vendor/bin/hw/motorola.hardware.camera.desktop@2.0-service new file mode 100644 index 0000000..0b7b681 Binary files /dev/null and b/proprietary/vendor/bin/hw/motorola.hardware.camera.desktop@2.0-service differ diff --git a/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb b/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb new file mode 100644 index 0000000..2805a26 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/General_cal.acdb b/proprietary/vendor/etc/acdbdata/General_cal.acdb new file mode 100644 index 0000000..48504d8 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/General_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Global_cal.acdb b/proprietary/vendor/etc/acdbdata/Global_cal.acdb new file mode 100644 index 0000000..6a4faa5 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Global_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Handset_cal.acdb b/proprietary/vendor/etc/acdbdata/Handset_cal.acdb new file mode 100644 index 0000000..dfd03bd Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Handset_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb b/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb new file mode 100644 index 0000000..620c57c Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Headset_cal.acdb b/proprietary/vendor/etc/acdbdata/Headset_cal.acdb new file mode 100644 index 0000000..3b919e7 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Headset_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb b/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb new file mode 100644 index 0000000..9ce12c9 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb b/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb new file mode 100644 index 0000000..a16693d Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd new file mode 100644 index 0000000..c3e84ef Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd new file mode 100644 index 0000000..072fe17 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd new file mode 100644 index 0000000..4093c83 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd new file mode 100644 index 0000000..e9ec254 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd new file mode 100644 index 0000000..ec97498 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd new file mode 100644 index 0000000..ec97498 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd new file mode 100644 index 0000000..1779a1a Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd new file mode 100644 index 0000000..db42d99 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd b/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd new file mode 100644 index 0000000..67323d9 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd differ diff --git a/proprietary/vendor/etc/camera/SwadAIMod.bin b/proprietary/vendor/etc/camera/SwadAIMod.bin new file mode 100644 index 0000000..40b75ab Binary files /dev/null and b/proprietary/vendor/etc/camera/SwadAIMod.bin differ diff --git a/proprietary/vendor/etc/camera/SwadCalib.bin b/proprietary/vendor/etc/camera/SwadCalib.bin new file mode 100644 index 0000000..52c3ae0 --- /dev/null +++ b/proprietary/vendor/etc/camera/SwadCalib.bin @@ -0,0 +1 @@ +:>æ=qŽ@FpF²xŽ@gßö½ÒŠ™@ïnH’“@œ9¿ª*7´¿ˆP[³u€¿*?œjã9ö¾ˆ‚œ,%¿ÎÏêV?NXUf« °¿º¦@…”¿‘A ‰š§‡?®¡f¡J7Ž@€tå}±>Ž@ݾ¦ñ§†™@€ ו.!“@œ9¿ª*7´¿ˆP[³u€¿*?œjã9ö¾ˆ‚œ,%¿ÎÏêV?NXUf« °¿º¦@…”¿‘A ‰š§‡? \ No newline at end of file diff --git a/proprietary/vendor/etc/camera/SwadParamList.txt b/proprietary/vendor/etc/camera/SwadParamList.txt new file mode 100644 index 0000000..7b0c13d Binary files /dev/null and b/proprietary/vendor/etc/camera/SwadParamList.txt differ diff --git a/proprietary/vendor/etc/camera/aec_golden_wide.bin b/proprietary/vendor/etc/camera/aec_golden_wide.bin new file mode 100644 index 0000000..72d7843 Binary files /dev/null and b/proprietary/vendor/etc/camera/aec_golden_wide.bin differ diff --git a/proprietary/vendor/etc/camera/anc_detect_model b/proprietary/vendor/etc/camera/anc_detect_model new file mode 100644 index 0000000..0e4a6a9 Binary files /dev/null and b/proprietary/vendor/etc/camera/anc_detect_model differ diff --git a/proprietary/vendor/etc/camera/anc_track_model b/proprietary/vendor/etc/camera/anc_track_model new file mode 100644 index 0000000..81d42ba Binary files /dev/null and b/proprietary/vendor/etc/camera/anc_track_model differ diff --git a/proprietary/vendor/etc/camera/dual_golden_wide.bin b/proprietary/vendor/etc/camera/dual_golden_wide.bin new file mode 100644 index 0000000..81063a5 Binary files /dev/null and b/proprietary/vendor/etc/camera/dual_golden_wide.bin differ diff --git a/proprietary/vendor/etc/camera/vidhance.lic b/proprietary/vendor/etc/camera/vidhance.lic new file mode 100644 index 0000000..62946fd --- /dev/null +++ b/proprietary/vendor/etc/camera/vidhance.lic @@ -0,0 +1 @@ +{"id":"b6h1MNqMYatH0rWnbq7ORVMaATVvfaYq","version":"4.2","expires":"never","features":["ICY3KDUkIjIoNg","NjcgISgvKDkkMQ"],"signature":"5E055DFC82D405DE1734C2870F9433F9C9979EA4F031589EB9C69BC04F6F589471D22291305BE80F727EFD057C19DFFA97FB200440A9D8D6EE05444F613A89A4AF0207E7FF219DB84C084423F089706D185E04F2EC2E1A657A65E5BED2268B3C6DB738E6C24952E963AC6802F5F3CB3803EFD03A33962070229500AC0CDD350693E1A3F14D0036ADFAF52DE4B8B2CB5E4A66560C3645A56BBD2278990329B679ED1EC643B979750306A7843FEFDCC13C2825CFEF83F84489E33D762AEF73B099A458AF59FE549D65F0904299711F51560D2C8C5D7657771F29F64124C13EC02C49EC2D951A0CC9B39DD9A2FA8112BD104A21DC60BF9D589E9CD273AD142508E2"} \ No newline at end of file diff --git a/proprietary/vendor/etc/camera/vidhance_calibration b/proprietary/vendor/etc/camera/vidhance_calibration new file mode 100644 index 0000000..ea3785b Binary files /dev/null and b/proprietary/vendor/etc/camera/vidhance_calibration differ diff --git a/proprietary/vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service-ets.rc b/proprietary/vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service-ets.rc new file mode 100644 index 0000000..0903feb --- /dev/null +++ b/proprietary/vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service-ets.rc @@ -0,0 +1,7 @@ +service ets_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets + # "class hal" causes a race condition on some devices due to files created + # in /data. As a workaround, postpone startup until later in boot once + # /data is mounted. + class late_start + user system + group system input uhid diff --git a/proprietary/vendor/etc/init/motorola.hardware.camera.desktop@2.0-service.rc b/proprietary/vendor/etc/init/motorola.hardware.camera.desktop@2.0-service.rc new file mode 100644 index 0000000..2c2b1d3 --- /dev/null +++ b/proprietary/vendor/etc/init/motorola.hardware.camera.desktop@2.0-service.rc @@ -0,0 +1,5 @@ +service vendor.mot.camera.desktop-hal-2-0 /vendor/bin/hw/motorola.hardware.camera.desktop@2.0-service + class hal + user system + group system input uhid + priority -10 diff --git a/proprietary/vendor/etc/init/motorola.hardware.camera.imgtuner@2.0-service.rc b/proprietary/vendor/etc/init/motorola.hardware.camera.imgtuner@2.0-service.rc new file mode 100644 index 0000000..eeb33b0 --- /dev/null +++ b/proprietary/vendor/etc/init/motorola.hardware.camera.imgtuner@2.0-service.rc @@ -0,0 +1,4 @@ +service imgtuner-hal-2-0 /vendor/bin/hw/motorola.hardware.camera.imgtuner@2.0-service + class hal + user camera + group camera diff --git a/proprietary/vendor/etc/libnfc-PN557.conf b/proprietary/vendor/etc/libnfc-PN557.conf new file mode 100644 index 0000000..493cf14 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-PN557.conf @@ -0,0 +1,712 @@ +## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547) +## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x04 +# ANDROID_LOG_INFO 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +############################################################################### +# Extension for Mifare reader enable +# Disabled - 0x00 +# Enabled - 0x01 +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Vzw Feature enable +# Disabled - 0x00 +# Enabled - 0x01 +VZW_FEATURE_ENABLE=0x00 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libpn557_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +#define CLK_FREQ_32MHZ 7 +#define CLK_FREQ_48MHZ 8 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#supported(hardware dependancy). +# Config 1: VUP connected to VBAT +# Config 2: VUP connected to external 5V +# +NXP_EXT_TVDD_CFG=0x01 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, 01, 31, 00, 00, 00, 21, 00, 10, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, F2, 00, BA, 1E, 1A, 00, 10, 0C} + + + + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# UICC SWP_INT1_EN_CFG - A0, EC +# UICC2 SWP_INT2_EN_CFG - A0, ED, +# eSE (SVDD) PWR REQ settings A0F2 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 - A037 +# For Symmetric baud rate UICC's set A086 to 77 +NXP_CORE_CONF_EXTN={20, 02, 6C, 11, + A0, EC, 01, 01, + A0, ED, 01, 00, + A0, 5E, 01, 01, + A0, 12, 01, 02, + A0, 40, 01, 01, + A0, 41, 01, 06, + A0, 42, 01, 0F, + A0, 43, 01, 03, + A0, DD, 01, 2D, + A0, D1, 01, 06, + A0, D4, 01, 01, + A0, 37, 01, 35, + A0, 86, 01, 77, + A0, 38, 04, 04, 04, 04, 00, + A0, 18, 08, BE, 06, 96, 03, 1E, FA, 51, 03, + A0, 3A, 08, 0E, 01, 0E, 01, 0E, 01, 0E, 01, + A0, 29, 17, 1C, 07, 00, 1D, 00, 02, 00, 1D, 00, 02, 00, 43, F2, F2, 00, 43, F2, F2, 38, 70, 00, 00, 02 + } + +############################################################################### +# Core configuration settings +# It includes +# 18 - Poll Mode NFC-F: PF_BIT_RATE +# 21 - Poll Mode ISO-DEP: PI_BIT_RATE +# 28 - Poll Mode NFC-DEP: PN_NFC_DEP_SPEED +# 30 - Lis. Mode NFC-A: LA_BIT_FRAME_SDD +# 31 - Lis. Mode NFC-A: LA_PLATFORM_CONFIG +# 33 - Lis. Mode NFC-A: LA_NFCID1 +# 50 - Lis. Mode NFC-F: LF_PROTOCOL_TYPE +# 54 - Lis. Mode NFC-F: LF_CON_BITR_F +# 5B - Lis. Mode ISO-DEP: LI_BIT_RATE +# 60 - Lis. Mode NFC-DEP: LN_WT +# 80 - Other Param.: RF_FIELD_INFO +# 81 - Other Param.: RF_NFCEE_ACTION +# 82 - Other Param.: NFCDEP_OP +NXP_CORE_CONF={ 20, 02, 30, 10, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 20, + 38, 01, 01, + 33, 00, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } +############################################################################### +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set +# to 00 last bit +NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 } + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +# Disable = 0x00 +# Enable = 0x01 +NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Mifare Classic Key settings +#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5, +# A0, 52, 06, D3, F7, D3, F7, D3, F7, +# A0, 53, 06, FF, FF, FF, FF, FF, FF, +# A0, 54, 06, 00, 00, 00, 00, 00, 00} + +############################################################################### +#Enable SWP full power mode when phone is power off +# Disable = 0x00 +# Enable = 0x01 +NXP_SWP_FULL_PWR_ON=0x00 + +############################################################################### +#### Select the CHIP #### +#PN547C2 0x01 +#PN65T 0x02 +#PN548AD 0x03 +#PN66T 0x04 +#PN551 0x05 +#PN67T 0x06 +#PN553 0x07 +#PN80T 0x08 +#PN557 0x09 +#PN81T 0x0A +NXP_NFC_CHIP=0x09 + +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs to get NFCEE Discover notification +NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20 + +############################################################################### +NXP_DEFAULT_NFCEE_TIMEOUT=20 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_START_TIMEOUT=0x0A + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=0x01 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x02 + +############################################################################### +# Configure the default NfcA/IsoDep technology and protocol route. Can be +# either a secure element (e.g. 0xF4) or the host (0x00) +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x02 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x02 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x02 + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +DEFAULT_SYS_CODE_ROUTE=0x00 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Switched On Sub-State 1 : Screen is off and device is unlocked +# bit pos 4 = Switched On Sub-State 2 : Screen is on and device is locked +# bit pos 5 = Switched On Sub-State 3 : Screen is off and device is locked +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the SYS_CODE Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Switched On Sub-State 1 : Screen is off and device is unlocked +# bit pos 4 = Switched On Sub-State 2 : Screen is on and device is locked +# bit pos 5 = Switched On Sub-State 3 : Screen is off and device is locked +DEFAULT_SYS_CODE_PWR_STATE=0x3B + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each UICC (where F3="UICC0" and F4="UICC1") +OFF_HOST_ESE_PIPE_ID=0x19 +OFF_HOST_SIM_PIPE_ID=0x0A + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +NFA_POLL_BAIL_OUT_MODE=0x01 + +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +AID_MATCHING_PLATFORM=0x01 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +NXP_CHINA_TIANJIN_RF_ENABLED=0x01 + +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +NXP_SWP_SWITCH_TIMEOUT=0x0A + +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +#Timeout value in milliseconds for NFCC standby mode.The range is between 5000 +#msec to 20000 msec and zero is to disable. +NXP_NFCC_STANDBY_TIMEOUT=20000 + +############################################################################### +#Dynamic RSSI feature enable +# Disable 0x00 +# Enable 0x01 +NXP_AGC_DEBUG_ENABLE=0x00 + +############################################################################### +#Config to allow adding aids +#NFC on/off is required after this config +#1 = enabling adding aid to NFCC routing table. +#0 = disabling adding aid to NFCC routing table. +NXP_ENABLE_ADD_AID=0x01 + +############################################################################### +# Enable/Disable checking default proto SE Id +# Disable 0x00 +# Enable 0x01 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 + +############################################################################### +#NXP_CN_TRANSIT_CMA_BYPASSMODE_ENABLE +#Enable this config it prevents EMVCo PICC compliance and Mifare backward compatibility works +#Disable this config EMVCo PICC compliance works and Mifare backward compatibility will not work +#Default config is Disable +#Enable 0x01 +#Disable 0x00 +NXP_CN_TRANSIT_CMA_BYPASSMODE_ENABLE=0x00 + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +#This config will enable different level of Rf transaction debugs based on the +#following values provided. Decoded information will be printed in adb logcat +#Debug Mode Levels +#Disable Debug 0x00 +#L1 Debug 0x01 +#L2 Debug 0x02 +#L1 & L2 Debug 0x03 +#L1 & L2 & RSSI 0x04 +#L1 & L2 & Felica 0x05 +#NXP_CORE_PROP_SYSTEM_DEBUG=0x00 + +############################################################################### +# Enable/Disable Block Route feature. +# Block Route will restrict routing to first matched rule +# Block Route enable 0x01 +# Block Route disable 0x00 +AID_BLOCK_ROUTE=0x01 + +############################################################################## +# Timeout value in milliseconds to send response for Felica command received +NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000 + +############################################################################### +# HAL library path for self-test +#NXP_HAL_PATH="/vendor/lib64/hw/nfc_nci.pn54x.so" + +############################################################################### +# Enable or Disable RF_STATUS_UPDATE to EseHal module +# Disable 0x00 +# Enable 0x01 +RF_STATUS_UPDATE_ENABLE=0x00 + +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, 70, FF, FF} + +############################################################################### +#White list of Hosts +#This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_ALLOW_LIST={80:81} + +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +PRESENCE_CHECK_ALGORITHM=2 + +############################################################################### +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF + +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual UICC feature by setting value 0x00 +#Enable dynamic dual UICC feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 + +############################################################################### +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF =0x01 + +################################################################################# +# Enable wait/delay if RF session is active. +# Disable 0x00 +# Enable 0x01 +NXP_CE_PRIORITY_ENABLED=0x00 + + +############################################################################### +# 0x38 set to start Proprietary Action NTF +# 0x00 to stop NTF +NXP_PROP_CE_ACTION_NTF=0x00 + +############################################################################### + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +################################################################################ +# NXP RF Eval1_SLALM_CFG2_EFM_40x20 configuration settings for FW Version = 12.01.12 +# +# A0, 35, 01, 00, RF_CLIF_CFG_BOOT +# A0, 0D, 03, 00, 43, A0, RF_CLIF_CFG_BOOT CLIF_ANA_PBF_CONTROL_REG +# A0, 0D, 04, 00, 42, FF, FF, RF_CLIF_CFG_BOOT CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, 04, 44, 00, 08, F6, 00, RF_CLIF_CFG_IDLE CLIF_ANA_RX_REG +# A0, 0D, 06, 04, 45, 80, 40, 00, 00, RF_CLIF_CFG_IDLE CLIF_ANA_CM_CONFIG_REG +# A0, 0D, 06, 04, 4A, 00, 00, 00, 00, RF_CLIF_CFG_IDLE CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 03, 04, 47, 00, RF_CLIF_CFG_IDLE CLIF_ANA_AGC_REG +# A0, 0D, 06, 04, 35, 00, 3E, 00, 00, RF_CLIF_CFG_IDLE CLIF_AGC_INPUT_REG +# A0, 0D, 06, 04, 33, 0F, 40, 04, 00, RF_CLIF_CFG_IDLE CLIF_AGC_CONFIG0_REG +# A0, 0D, 03, 04, 40, 00, RF_CLIF_CFG_IDLE CLIF_ANA_NFCLD_REG +# A0, 0D, 06, 06, 35, F4, 05, 70, 02, RF_CLIF_CFG_INITIATOR CLIF_AGC_INPUT_REG +# A0, 0D, 06, 06, 42, F8, 40, FF, FF, RF_CLIF_CFG_INITIATOR CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, C2, 35, 00, 3E, 00, 03, RF_CLIF_EXT_FIELD_ON CLIF_AGC_INPUT_REG +# A0, 0D, 06, C2, 34, F7, 7F, 10, 08, RF_CLIF_EXT_FIELD_ON CLIF_AGC_CONFIG1_REG +# A0, 0D, 06, C2, 33, 03, 40, 04, 80, RF_CLIF_EXT_FIELD_ON CLIF_AGC_CONFIG0_REG +# A0, 0D, 06, 08, 2D, 0D, 25, 2C, 01, RF_CLIF_CFG_TARGET CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 08, 44, 04, 04, C4, 00, RF_CLIF_CFG_TARGET CLIF_ANA_RX_REG +# A0, 0D, 06, 08, 30, 70, 00, 18, 00, RF_CLIF_CFG_TARGET CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 08, 45, 83, 60, 40, 05, RF_CLIF_CFG_TARGET CLIF_ANA_CM_CONFIG_REG +# A0, 0D, 06, 08, 42, 00, 02, FF, FF, RF_CLIF_CFG_TARGET CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, 08, 16, AE, 00, 1F, 00, RF_CLIF_CFG_TARGET CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 08, 15, 00, RF_CLIF_CFG_TARGET CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 06, 08, 37, 08, 76, 00, 00, RF_CLIF_CFG_TARGET CLIF_TX_CONTROL_REG +# A0, 0D, 06, 09, 30, 00, 00, 00, 00, RF_CLIF_CFG_TARGET CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 09, 37, 00, 00, 00, 00, RF_CLIF_CFG_TARGET CLIF_TX_CONTROL_REG +# A0, 0D, 06, 09, 42, 01, 10, FF, FF, RF_CLIF_CFG_TARGET CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 03, 72, 03, 3D, RF_CLIF_CFG_BR_106_I_TXA CLIF_TRANSCEIVE_CONTROL_REG +# A0, 0D, 04, 72, 42, F8, 40, RF_CLIF_CFG_BR_106_I_TXA CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 03, 72, 16, 01, RF_CLIF_CFG_BR_106_I_TXA CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 72, 15, 01, RF_CLIF_CFG_BR_106_I_TXA CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 06, 72, 4A, 53, 07, 00, 1B, RF_CLIF_CFG_BR_106_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 03, 72, 0D, 24, RF_CLIF_CFG_BR_106_I_TXA CLIF_TX_DATA_MOD_REG +# A0, 0D, 03, 72, 14, 24, RF_CLIF_CFG_BR_106_I_TXA CLIF_TX_SYMBOL23_MOD_REG +# A0, 0D, 06, 3C, 2D, DC, 40, 04, 00, RF_CLIF_CFG_BR_106_I_RXA_P CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 3C, 44, 66, 0A, 00, 00, RF_CLIF_CFG_BR_106_I_RXA_P CLIF_ANA_RX_REG +# A0, 0D, 06, 74, 4A, 56, 07, 01, 1B, RF_CLIF_CFG_BR_212_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 04, 74, 42, 68, 40, RF_CLIF_CFG_BR_212_I_TXA CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 03, 74, 16, 00, RF_CLIF_CFG_BR_212_I_TXA CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 74, 15, 00, RF_CLIF_CFG_BR_212_I_TXA CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 03, 74, 0D, 11, RF_CLIF_CFG_BR_212_I_TXA CLIF_TX_DATA_MOD_REG +# A0, 0D, 03, 74, 14, 11, RF_CLIF_CFG_BR_212_I_TXA CLIF_TX_SYMBOL23_MOD_REG +# A0, 0D, 06, 3E, 2D, 05, 35, 1E, 01, RF_CLIF_CFG_BR_212_I_RXA CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 3E, 44, 65, 09, 00, 00, RF_CLIF_CFG_BR_212_I_RXA CLIF_ANA_RX_REG +# A0, 0D, 06, 76, 4A, 56, 07, 01, 1B, RF_CLIF_CFG_BR_424_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 04, 76, 42, 68, 40, RF_CLIF_CFG_BR_424_I_TXA CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 03, 76, 16, 00, RF_CLIF_CFG_BR_424_I_TXA CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 76, 15, 00, RF_CLIF_CFG_BR_424_I_TXA CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 03, 76, 0D, 08, RF_CLIF_CFG_BR_424_I_TXA CLIF_TX_DATA_MOD_REG +# A0, 0D, 03, 76, 14, 08, RF_CLIF_CFG_BR_424_I_TXA CLIF_TX_SYMBOL23_MOD_REG +# A0, 0D, 06, 40, 2D, 05, 45, 1E, 01, RF_CLIF_CFG_BR_424_I_RXA CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 40, 44, 65, 09, 00, 00, RF_CLIF_CFG_BR_424_I_RXA CLIF_ANA_RX_REG +# A0, 0D, 04, 78, 42, F0, 40, RF_CLIF_CFG_BR_848_I_TXA CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, 78, 4A, 11, 07, 01, 1B, RF_CLIF_CFG_BR_848_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 03, 78, 16, 00, RF_CLIF_CFG_BR_848_I_TXA CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 78, 15, 00, RF_CLIF_CFG_BR_848_I_TXA CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 03, 78, 0D, 04, RF_CLIF_CFG_BR_848_I_TXA CLIF_TX_DATA_MOD_REG +# A0, 0D, 03, 78, 14, 04, RF_CLIF_CFG_BR_848_I_TXA CLIF_TX_SYMBOL23_MOD_REG +# A0, 0D, 06, 4C, 44, 65, 0A, 00, 00, RF_CLIF_CFG_BR_106_I_RXB CLIF_ANA_RX_REG +# A0, 0D, 06, 4C, 2D, 15, 34, 1F, 01, RF_CLIF_CFG_BR_106_I_RXB CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 82, 4A, 33, 07, 00, 07, RF_CLIF_CFG_BR_106_I_TXB CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 04, 82, 42, 68, 40, RF_CLIF_CFG_BR_106_I_TXB CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, 82, 0F, 6C, 01, 04, 00, RF_CLIF_CFG_BR_106_I_TXB CLIF_TX_SYMBOL_CONFIG_REG +# A0, 0D, 03, 82, 16, 00, RF_CLIF_CFG_BR_106_I_TXB CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 82, 15, 00, RF_CLIF_CFG_BR_106_I_TXB CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 06, 4E, 44, 65, 09, 00, 00, RF_CLIF_CFG_BR_212_I_RXB CLIF_ANA_RX_REG +# A0, 0D, 06, 4E, 2D, 05, 35, 1E, 01, RF_CLIF_CFG_BR_212_I_RXB CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 84, 4A, 13, 07, 01, 07, RF_CLIF_CFG_BR_212_I_TXB CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 04, 84, 42, 68, 40, RF_CLIF_CFG_BR_212_I_TXB CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 03, 84, 16, 00, RF_CLIF_CFG_BR_212_I_TXB CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 84, 15, 00, RF_CLIF_CFG_BR_212_I_TXB CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 06, 50, 44, 65, 09, 00, 00, RF_CLIF_CFG_BR_424_I_RXB CLIF_ANA_RX_REG +# A0, 0D, 06, 50, 2D, 05, 35, 1E, 01, RF_CLIF_CFG_BR_424_I_RXB CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 86, 4A, 12, 07, 01, 07, RF_CLIF_CFG_BR_424_I_TXB CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 04, 86, 42, 68, 40, RF_CLIF_CFG_BR_424_I_TXB CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 03, 86, 16, 00, RF_CLIF_CFG_BR_424_I_TXB CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 86, 15, 00, RF_CLIF_CFG_BR_424_I_TXB CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 06, 5E, 2D, 0D, 48, 0C, 01, RF_CLIF_CFG_BR_212_I_RXF_P CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 5E, 44, 55, 08, 00, 00, RF_CLIF_CFG_BR_212_I_RXF_P CLIF_ANA_RX_REG +# A0, 0D, 06, 60, 2D, 0D, 5A, 0C, 01, RF_CLIF_CFG_BR_424_I_RXF_P CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 06, 60, 44, 55, 08, 00, 00, RF_CLIF_CFG_BR_424_I_RXF_P CLIF_ANA_RX_REG +# A0, 0D, 04, 94, 42, 78, 40, RF_CLIF_CFG_BR_212_I_TXF CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, 94, 4A, 43, 07, 00, 07, RF_CLIF_CFG_BR_212_I_TXF CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 03, 94, 16, 00, RF_CLIF_CFG_BR_212_I_TXF CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 94, 15, 00, RF_CLIF_CFG_BR_212_I_TXF CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 04, 96, 42, 80, 40, RF_CLIF_CFG_BR_424_I_TXF CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, 96, 4A, 11, 07, 01, 07, RF_CLIF_CFG_BR_424_I_TXF CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 03, 96, 16, 00, RF_CLIF_CFG_BR_424_I_TXF CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 96, 15, 00, RF_CLIF_CFG_BR_424_I_TXF CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 06, 1C, 44, 05, 04, C4, 00, RF_CLIF_CFG_TECHNO_T_RXF CLIF_ANA_RX_REG +# A0, 0D, 03, 24, 03, 7F, RF_CLIF_CFG_TECHNO_T_TXA_P CLIF_TRANSCEIVE_CONTROL_REG +# A0, 0D, 06, 70, 16, 8E, 00, 1F, 00, RF_CLIF_CFG_BR_848_T_TXA CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 28, 16, 00, RF_CLIF_CFG_TECHNO_T_TXB CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 2C, 16, 00, RF_CLIF_CFG_TECHNO_T_TXF_P CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 06, 34, 44, 04, 04, C4, 00, RF_CLIF_CFG_BR_106_T_RXA CLIF_ANA_RX_REG +# A0, 0D, 06, 36, 30, E0, 00, 30, 00, RF_CLIF_CFG_BR_212_T_RXA CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 03, 36, 45, 70, RF_CLIF_CFG_BR_212_T_RXA CLIF_ANA_CM_CONFIG_REG +# A0, 0D, 03, 37, 45, 60, RF_CLIF_CFG_BR_212_T_RXA CLIF_ANA_CM_CONFIG_REG +# A0, 0D, 06, 38, 30, 40, 00, 20, 00, RF_CLIF_CFG_BR_424_T_RXA CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 38, 44, 02, 04, C4, 00, RF_CLIF_CFG_BR_424_T_RXA CLIF_ANA_RX_REG +# A0, 0D, 06, 3A, 30, 26, 00, 08, 00, RF_CLIF_CFG_BR_848_T_RXA CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 3A, 44, 11, 00, C4, 00, RF_CLIF_CFG_BR_848_T_RXA CLIF_ANA_RX_REG +# A0, 0D, 06, 44, 30, 70, 00, 18, 00, RF_CLIF_CFG_BR_106_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 44, 44, 04, 04, C4, 00, RF_CLIF_CFG_BR_106_T_RXB CLIF_ANA_RX_REG +# A0, 0D, 06, 46, 30, B0, 00, 45, 00, RF_CLIF_CFG_BR_212_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 48, 30, B0, 00, 45, 00, RF_CLIF_CFG_BR_424_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 4A, 30, 70, 00, 18, 00, RF_CLIF_CFG_BR_848_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 03, 56, 30, 00, RF_CLIF_CFG_BR_212_T_RXF CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 06, 0C, 45, C3, 82, 71, 05, RF_CLIF_CFG_I_PASSIVE CLIF_ANA_CM_CONFIG_REG +# A0, 0D, 03, 10, 44, 60, RF_CLIF_CFG_I_ACTIVE CLIF_ANA_RX_REG +# A0, 0D, 06, 10, 30, 70, 00, 18, 00, RF_CLIF_CFG_I_ACTIVE CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 03, 10, 48, 10, RF_CLIF_CFG_I_ACTIVE CLIF_ANA_CLK_MAN_REG +# A0, 0D, 06, 10, 45, 80, 40, 00, 00, RF_CLIF_CFG_I_ACTIVE CLIF_ANA_CM_CONFIG_REG +# A0, 0D, 06, 10, 2D, 0D, 25, 2C, 01, RF_CLIF_CFG_I_ACTIVE CLIF_SIGPRO_RM_CONFIG1_REG +# A0, 0D, 03, 10, 35, 0C, RF_CLIF_CFG_I_ACTIVE CLIF_AGC_INPUT_REG +# A0, 0D, 06, 11, 30, 00, 00, 00, 00, RF_CLIF_CFG_I_ACTIVE CLIF_SIGPRO_ADCBCM_THRESHOLD_REG +# A0, 0D, 03, 11, 48, 00, RF_CLIF_CFG_I_ACTIVE CLIF_ANA_CLK_MAN_REG +# A0, 0D, 06, 11, 85, 00, 00, 00, 00, RF_CLIF_CFG_I_ACTIVE CLIF_BBA_CONTROL_REG +# A0, 0D, 06, 22, 44, 05, 04, C4, 00, RF_CLIF_CFG_TECHNO_I_RXF_A CLIF_ANA_RX_REG +# A0, 0D, 06, 62, 44, 04, 04, C4, 00, RF_CLIF_CFG_BR_106_I_RXA_A CLIF_ANA_RX_REG +# A0, 0D, 03, 12, 16, 00, RF_CLIF_CFG_T_ACTIVE CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 06, 12, 37, 00, 00, 00, 00, RF_CLIF_CFG_T_ACTIVE CLIF_TX_CONTROL_REG +# A0, 0D, 03, 12, 35, 0C, RF_CLIF_CFG_T_ACTIVE CLIF_AGC_INPUT_REG +# A0, 0D, 06, CC, 42, F8, 40, FF, FF, RF_CLIF_WL_106_T_TXA_A CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, CC, 4A, 53, 07, 00, 1B, RF_CLIF_WL_106_T_TXA_A CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 06, CE, 42, 78, 40, FF, FF, RF_CLIF_WL_212_T_TXF_A CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, CE, 4A, 43, 07, 00, 07, RF_CLIF_WL_212_T_TXF_A CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 06, D0, 42, 80, 40, FF, FF, RF_CLIF_WL_424_T_TXF_A CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, D0, 4A, 11, 07, 01, 07, RF_CLIF_WL_424_T_TXF_A CLIF_ANA_TX_SHAPE_CONTROL_REG +# A0, 0D, 03, 98, 16, 01, RF_CLIF_CFG_BR_106_T_TXA_A CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 98, 15, 01, RF_CLIF_CFG_BR_106_T_TXA_A CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 03, 9A, 16, 00, RF_CLIF_CFG_BR_212_T_TXF_A CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 9A, 15, 00, RF_CLIF_CFG_BR_212_T_TXF_A CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 03, 9C, 16, 00, RF_CLIF_CFG_BR_424_T_TXF_A CLIF_TX_UNDERSHOOT_CONFIG_REG +# A0, 0D, 03, 9C, 15, 00, RF_CLIF_CFG_BR_424_T_TXF_A CLIF_TX_OVERSHOOT_CONFIG_REG +# A0, 0D, 04, CA, 42, 68, 40, RF_CLIF_CFG_STAG CLIF_ANA_TX_AMPLITUDE_REG +# A0, 0D, 06, CA, 44, 65, 0A, 00, 00, RF_CLIF_CFG_STAG CLIF_ANA_RX_REG +# A0, 0D, 06, CA, 2D, 15, 34, 1F, 01, RF_CLIF_CFG_STAG CLIF_SIGPRO_RM_CONFIG1_REG +# +# *** Eval1_SLALM_CFG2_EFM_40x20 FW VERSION = 12.01.12 *** +NXP_RF_CONF_BLK_1={20, 02, F0, 1C, + A0, 0D, 06, 08, 37, 08, 76, 00, 00, + A0, 0D, 03, 24, 03, 7E, + A0, 0D, 06, 08, 42, 00, 03, FF, FF, + A0, 0D, 06, 08, 16, AE, 00, 1F, 00, + A0, 0D, 06, 04, 35, 00, 3E, 00, 00, + A0, 0D, 06, 06, 35, F4, 05, 70, 02, + A0, 0D, 06, C2, 35, 00, 3E, 00, 03, + A0, 0D, 06, 06, 42, F8, 40, FF, FF, + A0, 0D, 04, 72, 42, F8, 40, + A0, 0D, 04, 82, 42, 68, 40, + A0, 0D, 04, 94, 42, 78, 40, + A0, 0D, 04, 96, 42, 80, 40, + A0, 0D, 04, CA, 42, 68, 40, + A0, 0D, 06, 72, 4A, 53, 07, 00, 1B, + A0, 0D, 06, 82, 4A, 33, 07, 00, 07, + A0, 0D, 06, 94, 4A, 43, 07, 00, 07, + A0, 0D, 06, 96, 4A, 11, 07, 01, 07, + A0, 0D, 06, 3C, 44, 66, 0A, 00, 00, + A0, 0D, 06, 4C, 44, 65, 0A, 00, 00, + A0, 0D, 06, 5E, 44, 55, 08, 00, 00, + A0, 0D, 06, 60, 44, 77, 08, 00, 00, + A0, 0D, 06, CA, 44, 65, 0A, 00, 00, + A0, 0D, 06, 44, 44, 04, 04, C4, 00, + A0, 0D, 06, 3C, 2D, DC, 20, 04, 00, + A0, 0D, 06, 4C, 2D, 15, 34, 1F, 01, + A0, 0D, 06, 5E, 2D, 0D, 48, 0C, 01, + A0, 0D, 06, 60, 2D, 0D, 5A, 0C, 01, + A0, 0D, 06, CA, 2D, 15, 34, 1F, 01 +} +# DLMA OFF +NXP_RF_CONF_BLK_2={ +20, 02, 10, 01, A0, AF, 0C, 03, C0, 80, A0, 00, 03, C0, 80, A0, 00,00, 08 +} +# DPC OFF +NXP_RF_CONF_BLK_3={ + 20, 02, 5B, 01, A0, 0B, 57, 11, 11, 90, 5A, 0F, 4E, 00, 47, 15, B7, AA, 47, 9F, A7, 99, 5C, 9F, 97, 99, 67, 9F, 97, 99, 69, 9F, 97, 00, 73, 9F, 07, 00, 75, 9F, 07, 00, 80, 9F, 07, 00, 84, 9F, 07, 00, 8D, 9F, 07, 00, 8F, 9F, 07, 00, 99, 9F, 04, 00, 9B, 9F, 04, 00, A6, 9F, 04, 00, A8, 9F, 04, 00, B2, 9F, 02, 00, BB, 9F, 00, 00, C1, 9F, 00, 00, CC, 1F, 00, 00, D6, 1F, 00, 00 +} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_4={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_5={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_6={ +#} + +############################################################################### \ No newline at end of file diff --git a/proprietary/vendor/etc/libnfc-SN220-UICC.conf b/proprietary/vendor/etc/libnfc-SN220-UICC.conf new file mode 100644 index 0000000..f405c58 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-SN220-UICC.conf @@ -0,0 +1,819 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x04 +# ANDROID_LOG_INFO 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x04 +NXPLOG_NCIHAL_LOGLEVEL=0x04 +NXPLOG_NCIX_LOGLEVEL=0x04 +NXPLOG_NCIR_LOGLEVEL=0x04 +NXPLOG_FWDNLD_LOGLEVEL=0x04 +NXPLOG_TML_LOGLEVEL=0x04 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +#define CLK_FREQ_32MHZ 7 +#define CLK_FREQ_48MHZ 8 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} +#NXP_EXT_TVDD_CFG_2={20, 02, 24, 01, A0, 0E, 20, F0, 00, 1E, 15, 01, 01, 01, 00, 00, 00, 00, 00, A7, BE, FF, FF, 05, 00, 00, 00, 20, 20, 20, 20, 0A, 00, 00, 00, 0D, 0D, 0D, 08} + +################################################################################# +# *** EVB_40x20 FW VERSION = 01.01.2A *** +NXP_RF_CONF_BLK_1={ + 20, 02, D9, 05, + A0, 11, 07, 01, 0A, 32, 01, C8, 00, 00, + A0, 0E, 20, F0, 00, 1E, 15, 01, 01, 01, 00, 00, 00, 00, 00, A7, BE, FF, FF, 05, 00, 00, 00, 24, 24, 24, 24, 0A, 00, 00, 00, 0D, 0D, 0D, 08, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 00, 00, 01, 00, 03, 00, 05, 00, 07, 00, 08, 00, 0A, 00, 0C, 00, 0E, 00, 10, 00, 11, 00, 13, 00, 14, 00, 16, 00, 18, 00, 19, 00, 1A, 00, 1C, 00, 1D, 00, 1F, 00, 20, 00, 21, 00, 24, 00, 25, 00, 27, 00, 29, 00, 2A, 00, 2C, 00, 2D, 00, 2F, 00, 31, 00, 32, 00, 34, 00, 35, 00, 37, 00, 39, 00, 3A, 00, 3C, 00, 3D, 00, 3F, 00, 41, 00, 42, 00, 44, 00, 46, 00, 47, 00, 49, 00, 4A, 00, 4C, 00, 4E, 00, 4F, 00, 51, 00, 52, 00, 54, 00, 56, 00, 57, 00, 59, 00, 5A, 00, 5C, 00, 5E, 00, 5F, 00, 61, 00, 62, 00, 64, 00, + A0, A5, 0D, 00, 00, 00, 00, 00, 00, FF, 03, 1F, 00, 00, 00, 00, + A0, 6A, 10, B4, 00, B4, 00, B4, 00, B4, 00, 54, 01, 54, 01, 54, 01, 54, 01 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 07, 0E, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, B6, 03, 00, 00, 14, 05, 00, 00, 27, 06, 00, 00, B8, 06, 00, 00, D0, 07, 00, 00, C4, 09, 00, 00, 80, 0C, 00, 00, AC, 0D, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, 07, 0E, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, B6, 03, 00, 00, 14, 05, 00, 00, 27, 06, 00, 00, B8, 06, 00, 00, D0, 07, 00, 00, C4, 09, 00, 00, 80, 0C, 00, 00, AC, 0D, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 07, 0E, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, B6, 03, 00, 00, 14, 05, 00, 00, 27, 06, 00, 00, B8, 06, 00, 00, D0, 07, 00, 00, C4, 09, 00, 00, 80, 0C, 00, 00, AC, 0D, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 24, FF, 41, 1E, FF, 42, 18, FF, 43, 13, FF, 44, 0E, FF, 45, 0A, FF, 46, 06, FF, 47, 03, FF, 07, 24, FF, 48, 00, FF, 09, 18, FF, 0A, 13, FF, 0B, 0E, FF, 0C, 0A, FF, 0D, 06, FF, 0E, 02, FF, 0F, 00, F5, 10, 00, DC, 11, 00, C6, 12, 00, B2, 13, 00, A0, 14, 00, 90, 15, 00, 81, 16, 00, 74, 17, 00, 68, 18, 00, 5D, 19, 00, 53, 1A, 00, 4A, 1B, 00, 42, 1C, 00, 3B, 1D, 00, 35, 1E, 00, 2F, 1F, 00, 2A, 20, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, 9E, 01, + A0, 0B, 9A, 00, 00, 00, 14, 6A, 2A, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, F1, 05, + A0, AB, 82, 27, 1B, 5C, 06, 6F, 06, 86, 06, AF, 06, E4, 06, 1B, 07, 53, 07, 96, 07, DA, 07, 1F, 08, 74, 08, CA, 08, 22, 09, 91, 09, 01, 0A, 73, 0A, E6, 0A, 5B, 0B, F7, 0B, 95, 0C, 34, 0D, D4, 0D, 76, 0E, 38, 0F, FC, 0F, C0, 10, B6, 11, AE, 12, A6, 13, 9F, 14, 99, 15, E7, 16, 35, 18, 85, 19, D5, 1A, 25, 1C, 76, 1D, 70, 1F, 6A, 21, 66, 23, 62, 25, 5E, 27, 5A, 29, 01, 2C, A8, 2E, 4F, 31, F7, 33, 49, 37, 9C, 3A, EF, 3D, EC, 41, E9, 45, E7, 49, E5, 4D, 38, 53, 8C, 58, DF, 5D, 33, 63, 87, 68, 95, 6E, A4, 74, B2, 7A, B0, 82, B0, 8A, + A0, AD, 0C, 00, 20, 00, 00, 00, 00, 00, 20, 00, 00, 00, 00, + A0, A7, 0B, 00, 02, 77, 17, 14, 14, 1F, 0A, FF, 19, 05, + A0, A8, 40, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 11, 45, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 54, 10, 00, 33, 32, 10, + A0, 98, 08, 3A, 30, 13, 80, 24, 3A, 35, 3A +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FC, 0B, + A0, 9E, 0C, 07, 30, 13, 96, 00, 2C, 01, 2B, C2, 01, 00, 00, + A1, 2C, 5B, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A1, 04, 05, 80, 24, 00, 00, 00, + A1, 26, 08, 03, 03, 03, 03, 01, 01, 01, 01, + A1, 27, 3B, 00, 00, 00, 68, 01, 00, 00, 00, 02, 00, 08, 9A, 00, F1, FF, 00, 00, 00, 00, 00, 00, B4, 00, 00, 00, 00, 00, 00, 00, E1, 00, 36, 00, A0, 00, 2C, 1A, 4D, 00, E0, 00, E0, 2E, 00, 00, 00, 00, 98, 3A, 00, FA, 00, FA, D0, 84, 42, 00, 23, 01, + A1, 2E, 03, 82, 82, 22, + A1, 4D, 10, 00, 40, 1F, 00, 00, 00, 00, 00, 94, 52, 4A, 01, 94, 52, 4A, 01, + A0, 0D, 06, 10, C7, 00, 00, 00, 00, + A0, 0D, 06, 11, C9, 30, 00, 00, 00, + A0, 0D, 06, 12, 4C, 20, 0A, 00, 00, + A0, 0D, 06, 12, 50, 94, 52, 4A, 29 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1E, + A0, 0D, 03, 24, 29, 08, + A0, 0D, 03, 24, 30, 08, + A0, 0D, 03, 25, 29, 03, + A0, 0D, 03, 25, 30, 03, + A0, 0D, 06, 40, 78, 00, 00, 00, 00, + A0, 0D, 06, 42, 8B, 00, 04, 08, 00, + A0, 0D, 06, 42, 87, 51, 02, 00, E0, + A0, 0D, 06, 42, 89, 7F, 07, 1D, 01, + A0, 0D, 06, 42, 88, AF, E0, 8B, 48, + A0, 0D, 06, 42, 44, 00, 34, 26, 00, + A0, 0D, 06, 42, 40, 08, 77, 7F, 3A, + A0, 0D, 06, 42, 79, 55, 21, 08, 4C, + A0, 0D, 06, 42, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 42, 49, 7D, 26, 0B, 00, + A0, 0D, 06, 51, 40, 8A, 88, 33, 3A, + A0, 0D, 03, 43, 7C, 40, + A0, 0D, 06, 43, 8B, 4C, 04, F8, 10, + A0, 0D, 06, 43, 88, 54, E1, 86, 88, + A0, 0D, 06, 43, 44, 00, 34, 12, 00, + A0, 0D, 06, 43, 40, 88, 88, B3, 3C, + A0, 0D, 06, 43, 79, 55, 21, 08, 4C, + A0, 0D, 06, 43, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 43, 49, 7D, 26, 0B, 00, + A0, 0D, 03, 44, 7C, 40, + A0, 0D, 06, 44, 8B, 28, 04, F8, 14, + A0, 0D, 06, 44, 88, 4C, E5, 04, 88, + A0, 0D, 06, 44, 44, 00, 34, 12, 00, + A0, 0D, 06, 44, 40, 8C, 88, B3, 3C, + A0, 0D, 06, 44, 79, 55, 21, 08, 4C, + A0, 0D, 06, 44, 4A, 8E, 61, B0, 01 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, F7, 1C, + A0, 0D, 06, 44, 49, 7D, 26, 0B, 00, + A0, 0D, 03, 45, 7C, 40, + A0, 0D, 06, 45, 8B, 09, 04, F8, 28, + A0, 0D, 06, 45, 88, 0C, E5, 02, 40, + A0, 0D, 06, 45, 44, 00, 34, 12, 00, + A0, 0D, 06, 45, 40, 90, 88, B3, 3C, + A0, 0D, 06, 45, 79, 55, 21, 08, 4C, + A0, 0D, 06, 45, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 45, 49, 7D, 26, 0B, 00, + A0, 0D, 06, 45, 45, 38, B2, 88, A6, + A0, 0D, 06, 46, 45, 38, 92, 88, A6, + A0, 0D, 03, 46, 7C, 40, + A0, 0D, 06, 47, 8B, 48, 04, 38, 3E, + A0, 0D, 06, 47, 87, 01, 03, 00, E0, + A0, 0D, 06, 47, 88, 54, E2, 08, 95, + A0, 0D, 06, 47, 40, 86, 88, B3, 3C, + A0, 0D, 06, 47, 44, 00, 34, 12, 00, + A0, 0D, 06, 47, 4A, B3, CD, 66, 06, + A0, 0D, 06, 47, 49, 00, 00, 00, 00, + A0, 0D, 06, 47, 79, 55, 21, 08, 4C, + A0, 0D, 06, 48, 8B, 48, 04, 38, 10, + A0, 0D, 06, 48, 88, 4C, E2, 86, 94, + A0, 0D, 06, 48, 40, 88, 88, B3, 3C, + A0, 0D, 06, 48, 44, 00, 34, 12, 00, + A0, 0D, 06, 48, 4A, B3, CD, 66, 06, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 48, 79, 55, 21, 08, 4C, + A0, 0D, 06, 49, 8B, 48, 04, 38, 20 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, F7, 1C, + A0, 0D, 06, 49, 88, 54, E6, 04, 94, + A0, 0D, 06, 49, 40, 8C, 88, B3, 3C, + A0, 0D, 06, 49, 44, 00, 34, 12, 00, + A0, 0D, 06, 49, 4A, B3, CD, 66, 06, + A0, 0D, 06, 49, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 79, 55, 21, 08, 4C, + A0, 0D, 06, 4A, 8B, 09, 04, 38, 0A, + A0, 0D, 06, 4A, 88, 0C, E6, 02, 5C, + A0, 0D, 06, 4A, 40, 90, 88, B3, 3C, + A0, 0D, 06, 4A, 44, 00, 34, 12, 00, + A0, 0D, 06, 4A, 4A, B3, CD, 66, 06, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4A, 79, 55, 21, 08, 4C, + A0, 0D, 03, 4C, 7C, 50, + A0, 0D, 06, 4C, 8B, 28, 04, 78, 14, + A0, 0D, 06, 4C, 88, 04, E1, 80, 01, + A0, 0D, 06, 4C, 44, 00, 34, 12, 00, + A0, 0D, 06, 4C, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 79, 55, 21, 08, 4C, + A0, 0D, 06, 4C, 40, 87, 88, B3, 3C, + A0, 0D, 03, 4D, 7C, 40, + A0, 0D, 06, 4D, 87, 03, 03, 00, C0, + A0, 0D, 06, 4D, 88, 4C, E5, 82, 48, + A0, 0D, 06, 4D, 44, 00, 34, 12, 00, + A0, 0D, 06, 4D, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 79, 55, 21, 08, 4C +} + +NXP_RF_CONF_BLK_11={ + 20, 02, FD, 1C, + A0, 0D, 06, 4D, 40, 8A, 88, B3, 3C, + A0, 0D, 06, 4E, 4A, BA, E6, F1, 06, + A0, 0D, 06, 4E, 49, DD, 95, 0A, 00, + A0, 0D, 06, 4E, 5C, EF, 7F, 00, 00, + A0, 0D, 06, 4E, 78, 00, 00, C0, 00, + A0, 0D, 06, 4F, 88, F7, E0, 16, 89, + A0, 0D, 06, 4F, 8B, 00, 14, 08, 00, + A0, 0D, 06, 4F, 89, 7F, 07, 15, 02, + A0, 0D, 06, 4F, 44, 00, 34, E6, 00, + A0, 0D, 06, 4F, 40, 84, 88, B3, 3C, + A0, 0D, 06, 4F, 79, 55, 21, 88, 4C, + A0, 0D, 06, 50, 88, 9F, E0, 2B, 41, + A0, 0D, 06, 50, 8B, 00, 14, 08, 00, + A0, 0D, 06, 50, 89, 7F, 07, 15, 02, + A0, 0D, 06, 50, 44, 00, 34, E6, 00, + A0, 0D, 06, 50, 40, 84, 88, B3, 3C, + A0, 0D, 06, 50, 79, 55, 21, 88, 4C, + A0, 0D, 06, 52, 88, 9F, E8, A2, 40, + A0, 0D, 06, 52, 8B, 00, 14, 08, 00, + A0, 0D, 06, 52, 89, 7F, 07, 15, 02, + A0, 0D, 06, 52, 44, 00, 34, E6, 00, + A0, 0D, 06, 52, 40, 84, 88, B3, 3C, + A0, 0D, 06, 52, 79, 55, 21, 88, 4C, + A0, 0D, 06, 53, 88, 9F, E8, 2C, 40, + A0, 0D, 06, 53, 89, 7F, 07, 15, 02, + A0, 0D, 06, 53, 44, 00, 34, E6, 00, + A0, 0D, 06, 53, 40, 84, 88, B3, 3C, + A0, 0D, 06, 53, 79, 55, 21, 88, 4C +} + +NXP_RF_CONF_BLK_12={ + 20, 02, FD, 1C, + A0, 0D, 06, 60, 50, 94, 52, 4A, 29, + A0, 0D, 06, 80, 83, 1F, 06, 00, 00, + A0, 0D, 06, 80, 82, 25, 0A, 00, 20, + A0, 0D, 06, 80, 80, 10, 42, 24, 00, + A0, 0D, 06, 80, 7E, 28, 02, 00, 00, + A0, 0D, 06, 80, 8F, 80, 42, D6, 0A, + A0, 0D, 06, 80, 90, 00, A2, 52, 2A, + A0, 0D, 06, 80, 49, ED, 16, 0B, 00, + A0, 0D, 06, 82, 82, 25, 0A, 00, 20, + A0, 0D, 06, 82, 49, ED, 16, 0B, 00, + A0, 0D, 06, 83, 80, 3A, 01, 20, 00, + A0, 0D, 06, 83, 49, ED, 16, 0B, 00, + A0, 0D, 06, 84, 7F, 1E, 01, 20, 00, + A0, 0D, 06, 85, 7F, 0E, 01, 20, 00, + A0, 0D, 06, 85, 7D, B3, 22, F6, BF, + A0, 0D, 06, 87, 83, 1F, 06, 00, 00, + A0, 0D, 06, 87, 49, ED, 16, 0B, 00, + A0, 0D, 06, 88, 83, 3C, 0E, 00, 00, + A0, 0D, 06, 88, 49, ED, 16, 0B, 00, + A0, 0D, 06, 89, 80, 1E, 01, 20, 00, + A0, 0D, 06, 89, 49, ED, 16, 0B, 00, + A0, 0D, 06, 8A, 7F, 0C, 01, 20, 00, + A0, 0D, 06, 8C, 80, 10, 42, 24, 00, + A0, 0D, 06, 8C, 49, ED, 16, 0B, 00, + A0, 0D, 06, 8D, 49, ED, 16, 0B, 00, + A0, 0D, 06, 90, 38, D9, 39, A9, 80, + A0, 0D, 06, 91, AC, 94, 52, 4A, 29, + A0, 0D, 06, 91, AE, 94, 52, 4A, 29 +} + +NXP_RF_CONF_BLK_13={ + 20, 02, 65, 03, + A0, AF, 09, 10, 46, 00, 24, 10, 46, 00, 24, 12, + A0, 92, 28, 48, 00, 24, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 60, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 45, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 68, 2A, 06, 40, 60, 03, 19, 14, 00, 00, 00, 82, 24, 00, 00, 0A, 00, 0A, 00, 01, 00, 01, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 0A, 7F, 00, 00, 01, 00, 03 +} + +NXP_RF_CONF_MAX_NUM=13 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set +# to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 } + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#SCR Read Tag Operation Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x02 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x02 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x02 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x02 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x39 +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x00 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 + +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x00 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 + +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A + +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x00 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################ +#This flags will enable different modes of Lx Debug based on bits of the Byte0 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | |x | | | | | | Modulation Detected Notification +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events CE (ISO14443-3, RF Field ON/OFF) +#Byte 1: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | |x | | | | | | Enable L2 events during RF activation ISO 14443-3 +# | | | | | | | | +# | | | | | | | | +# | | | | | | | | +# | | | | | | | | +# | | | | | | | | +# Byte1 Byte0 +# \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0031 ==> Modulation detected, L1, L2 CE +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 //Any positive value as per below bit configuration +# HOST power states when type A/B only UICC present +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +DEFAULT_SYS_CODE_PWR_STATE=0x00 +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x02 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element. +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} + +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +#bit pos 7 = Proprietary file enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#WLC mode +#0x00 = if WLC Application running in MW (non-autonomous mode) +#0x01 = if WLC Application running in FW (autonomous mode) +NXP_WLC_MODE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +# 2 --> Use this option only for FW versions below 1.10.52 +NXP_RDR_DISABLE_ENABLE_LPCD=1 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 + +################################################################################# +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# UICC1 interface A0EC +# UICC2 interface A0D4 +# eSE interface A0ED +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 11, 04, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, D4, 01, 00, + A0, 0A, 01, 0A +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +# Below params are not recommended to add in CONF block. +# LA_BIT_FRAME_SDD(0x30) +# LA_PLATFORM_CONFIG(0x31) +# LA_SEL_INFO(0x32) +# LB_SENSB_INFO(0x38) +# LF_PROTOCOL(0x50) +# NFCC_CONFIG_CONTROL(0x85) + +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# +# Enable or Disable UICC ETSI support +# Disable UICC ETSI support 0 +# Enable UICC ETSI support 1 +NXP_UICC_ETSI_SUPPORT=0 +################################################################################# +# Enable Stop/Start of RF discovery for NFCEE recovery +# Disable RF Restart for NFCEE recovery 0 +# Enable RF Restart for NFCEE recovery 1 +NXP_RESTART_RF_FOR_NFCEE_RECOVERY=0 +################################################################################# +#Tag Presence check timeout in millisecond. +NXP_PRESENCE_CHECK_TIMEOUT = 375 + + diff --git a/proprietary/vendor/etc/libnfc-SN220.conf b/proprietary/vendor/etc/libnfc-SN220.conf new file mode 100644 index 0000000..2285381 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-SN220.conf @@ -0,0 +1,819 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x04 +# ANDROID_LOG_INFO 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x04 +NXPLOG_NCIHAL_LOGLEVEL=0x04 +NXPLOG_NCIX_LOGLEVEL=0x04 +NXPLOG_NCIR_LOGLEVEL=0x04 +NXPLOG_FWDNLD_LOGLEVEL=0x04 +NXPLOG_TML_LOGLEVEL=0x04 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +#define CLK_FREQ_32MHZ 7 +#define CLK_FREQ_48MHZ 8 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} +#NXP_EXT_TVDD_CFG_2={20, 02, 24, 01, A0, 0E, 20, F0, 00, 1E, 15, 01, 01, 01, 00, 00, 00, 00, 00, A7, BE, FF, FF, 05, 00, 00, 00, 20, 20, 20, 20, 0A, 00, 00, 00, 0D, 0D, 0D, 08} + +################################################################################# +# *** EVB_40x20 FW VERSION = 01.01.2A *** +NXP_RF_CONF_BLK_1={ + 20, 02, D9, 05, + A0, 11, 07, 01, 0A, 32, 01, C8, 00, 00, + A0, 0E, 20, F0, 00, 1E, 15, 01, 01, 01, 00, 00, 00, 00, 00, A7, BE, FF, FF, 05, 00, 00, 00, 24, 24, 24, 24, 0A, 00, 00, 00, 0D, 0D, 0D, 08, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 00, 00, 01, 00, 03, 00, 05, 00, 07, 00, 08, 00, 0A, 00, 0C, 00, 0E, 00, 10, 00, 11, 00, 13, 00, 14, 00, 16, 00, 18, 00, 19, 00, 1A, 00, 1C, 00, 1D, 00, 1F, 00, 20, 00, 21, 00, 24, 00, 25, 00, 27, 00, 29, 00, 2A, 00, 2C, 00, 2D, 00, 2F, 00, 31, 00, 32, 00, 34, 00, 35, 00, 37, 00, 39, 00, 3A, 00, 3C, 00, 3D, 00, 3F, 00, 41, 00, 42, 00, 44, 00, 46, 00, 47, 00, 49, 00, 4A, 00, 4C, 00, 4E, 00, 4F, 00, 51, 00, 52, 00, 54, 00, 56, 00, 57, 00, 59, 00, 5A, 00, 5C, 00, 5E, 00, 5F, 00, 61, 00, 62, 00, 64, 00, + A0, A5, 0D, 00, 00, 00, 00, 00, 00, FF, 03, 1F, 00, 00, 00, 00, + A0, 6A, 10, B4, 00, B4, 00, B4, 00, B4, 00, 54, 01, 54, 01, 54, 01, 54, 01 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 07, 0E, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, B6, 03, 00, 00, 14, 05, 00, 00, 27, 06, 00, 00, B8, 06, 00, 00, D0, 07, 00, 00, C4, 09, 00, 00, 80, 0C, 00, 00, AC, 0D, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, 07, 0E, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, B6, 03, 00, 00, 14, 05, 00, 00, 27, 06, 00, 00, B8, 06, 00, 00, D0, 07, 00, 00, C4, 09, 00, 00, 80, 0C, 00, 00, AC, 0D, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 07, 0E, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, 80, 02, 00, 00, B6, 03, 00, 00, 14, 05, 00, 00, 27, 06, 00, 00, B8, 06, 00, 00, D0, 07, 00, 00, C4, 09, 00, 00, 80, 0C, 00, 00, AC, 0D, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, D8, 0E, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, A0, 0F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 24, FF, 41, 1E, FF, 42, 18, FF, 43, 13, FF, 44, 0E, FF, 45, 0A, FF, 46, 06, FF, 47, 03, FF, 07, 24, FF, 48, 00, FF, 09, 18, FF, 0A, 13, FF, 0B, 0E, FF, 0C, 0A, FF, 0D, 06, FF, 0E, 02, FF, 0F, 00, F5, 10, 00, DC, 11, 00, C6, 12, 00, B2, 13, 00, A0, 14, 00, 90, 15, 00, 81, 16, 00, 74, 17, 00, 68, 18, 00, 5D, 19, 00, 53, 1A, 00, 4A, 1B, 00, 42, 1C, 00, 3B, 1D, 00, 35, 1E, 00, 2F, 1F, 00, 2A, 20, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28, A1, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, 9E, 01, + A0, 0B, 9A, 00, 00, 00, 14, 6A, 2A, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, F1, 05, + A0, AB, 82, 27, 1B, 5C, 06, 6F, 06, 86, 06, AF, 06, E4, 06, 1B, 07, 53, 07, 96, 07, DA, 07, 1F, 08, 74, 08, CA, 08, 22, 09, 91, 09, 01, 0A, 73, 0A, E6, 0A, 5B, 0B, F7, 0B, 95, 0C, 34, 0D, D4, 0D, 76, 0E, 38, 0F, FC, 0F, C0, 10, B6, 11, AE, 12, A6, 13, 9F, 14, 99, 15, E7, 16, 35, 18, 85, 19, D5, 1A, 25, 1C, 76, 1D, 70, 1F, 6A, 21, 66, 23, 62, 25, 5E, 27, 5A, 29, 01, 2C, A8, 2E, 4F, 31, F7, 33, 49, 37, 9C, 3A, EF, 3D, EC, 41, E9, 45, E7, 49, E5, 4D, 38, 53, 8C, 58, DF, 5D, 33, 63, 87, 68, 95, 6E, A4, 74, B2, 7A, B0, 82, B0, 8A, + A0, AD, 0C, 00, 20, 00, 00, 00, 00, 00, 20, 00, 00, 00, 00, + A0, A7, 0B, 00, 02, 77, 17, 14, 14, 1F, 0A, FF, 19, 05, + A0, A8, 40, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 11, 45, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 54, 10, 00, 33, 32, 10, + A0, 98, 08, 3A, 30, 13, 80, 24, 3A, 35, 3A +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FC, 0B, + A0, 9E, 0C, 07, 30, 13, 96, 00, 2C, 01, 2B, C2, 01, 00, 00, + A1, 2C, 5B, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A1, 04, 05, 80, 24, 00, 00, 00, + A1, 26, 08, 03, 03, 03, 03, 01, 01, 01, 01, + A1, 27, 3B, 00, 00, 00, 68, 01, 00, 00, 00, 02, 00, 08, 9A, 00, F1, FF, 00, 00, 00, 00, 00, 00, B4, 00, 00, 00, 00, 00, 00, 00, E1, 00, 36, 00, A0, 00, 2C, 1A, 4D, 00, E0, 00, E0, 2E, 00, 00, 00, 00, 98, 3A, 00, FA, 00, FA, D0, 84, 42, 00, 23, 01, + A1, 2E, 03, 82, 82, 22, + A1, 4D, 10, 00, 40, 1F, 00, 00, 00, 00, 00, 94, 52, 4A, 01, 94, 52, 4A, 01, + A0, 0D, 06, 10, C7, 00, 00, 00, 00, + A0, 0D, 06, 11, C9, 30, 00, 00, 00, + A0, 0D, 06, 12, 4C, 20, 0A, 00, 00, + A0, 0D, 06, 12, 50, 94, 52, 4A, 29 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1E, + A0, 0D, 03, 24, 29, 08, + A0, 0D, 03, 24, 30, 08, + A0, 0D, 03, 25, 29, 03, + A0, 0D, 03, 25, 30, 03, + A0, 0D, 06, 40, 78, 00, 00, 00, 00, + A0, 0D, 06, 42, 8B, 00, 04, 08, 00, + A0, 0D, 06, 42, 87, 51, 02, 00, E0, + A0, 0D, 06, 42, 89, 7F, 07, 1D, 01, + A0, 0D, 06, 42, 88, AF, E0, 8B, 48, + A0, 0D, 06, 42, 44, 00, 34, 26, 00, + A0, 0D, 06, 42, 40, 08, 77, 7F, 3A, + A0, 0D, 06, 42, 79, 55, 21, 08, 4C, + A0, 0D, 06, 42, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 42, 49, 7D, 26, 0B, 00, + A0, 0D, 06, 51, 40, 8A, 88, 33, 3A, + A0, 0D, 03, 43, 7C, 40, + A0, 0D, 06, 43, 8B, 4C, 04, F8, 10, + A0, 0D, 06, 43, 88, 54, E1, 86, 88, + A0, 0D, 06, 43, 44, 00, 34, 12, 00, + A0, 0D, 06, 43, 40, 88, 88, B3, 3C, + A0, 0D, 06, 43, 79, 55, 21, 08, 4C, + A0, 0D, 06, 43, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 43, 49, 7D, 26, 0B, 00, + A0, 0D, 03, 44, 7C, 40, + A0, 0D, 06, 44, 8B, 28, 04, F8, 14, + A0, 0D, 06, 44, 88, 4C, E5, 04, 88, + A0, 0D, 06, 44, 44, 00, 34, 12, 00, + A0, 0D, 06, 44, 40, 8C, 88, B3, 3C, + A0, 0D, 06, 44, 79, 55, 21, 08, 4C, + A0, 0D, 06, 44, 4A, 8E, 61, B0, 01 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, F7, 1C, + A0, 0D, 06, 44, 49, 7D, 26, 0B, 00, + A0, 0D, 03, 45, 7C, 40, + A0, 0D, 06, 45, 8B, 09, 04, F8, 28, + A0, 0D, 06, 45, 88, 0C, E5, 02, 40, + A0, 0D, 06, 45, 44, 00, 34, 12, 00, + A0, 0D, 06, 45, 40, 90, 88, B3, 3C, + A0, 0D, 06, 45, 79, 55, 21, 08, 4C, + A0, 0D, 06, 45, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 45, 49, 7D, 26, 0B, 00, + A0, 0D, 06, 45, 45, 38, B2, 88, A6, + A0, 0D, 06, 46, 45, 38, 92, 88, A6, + A0, 0D, 03, 46, 7C, 40, + A0, 0D, 06, 47, 8B, 48, 04, 38, 3E, + A0, 0D, 06, 47, 87, 01, 03, 00, E0, + A0, 0D, 06, 47, 88, 54, E2, 08, 95, + A0, 0D, 06, 47, 40, 86, 88, B3, 3C, + A0, 0D, 06, 47, 44, 00, 34, 12, 00, + A0, 0D, 06, 47, 4A, B3, CD, 66, 06, + A0, 0D, 06, 47, 49, 00, 00, 00, 00, + A0, 0D, 06, 47, 79, 55, 21, 08, 4C, + A0, 0D, 06, 48, 8B, 48, 04, 38, 10, + A0, 0D, 06, 48, 88, 4C, E2, 86, 94, + A0, 0D, 06, 48, 40, 88, 88, B3, 3C, + A0, 0D, 06, 48, 44, 00, 34, 12, 00, + A0, 0D, 06, 48, 4A, B3, CD, 66, 06, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 48, 79, 55, 21, 08, 4C, + A0, 0D, 06, 49, 8B, 48, 04, 38, 20 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, F7, 1C, + A0, 0D, 06, 49, 88, 54, E6, 04, 94, + A0, 0D, 06, 49, 40, 8C, 88, B3, 3C, + A0, 0D, 06, 49, 44, 00, 34, 12, 00, + A0, 0D, 06, 49, 4A, B3, CD, 66, 06, + A0, 0D, 06, 49, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 79, 55, 21, 08, 4C, + A0, 0D, 06, 4A, 8B, 09, 04, 38, 0A, + A0, 0D, 06, 4A, 88, 0C, E6, 02, 5C, + A0, 0D, 06, 4A, 40, 90, 88, B3, 3C, + A0, 0D, 06, 4A, 44, 00, 34, 12, 00, + A0, 0D, 06, 4A, 4A, B3, CD, 66, 06, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4A, 79, 55, 21, 08, 4C, + A0, 0D, 03, 4C, 7C, 50, + A0, 0D, 06, 4C, 8B, 28, 04, 78, 14, + A0, 0D, 06, 4C, 88, 04, E1, 80, 01, + A0, 0D, 06, 4C, 44, 00, 34, 12, 00, + A0, 0D, 06, 4C, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 79, 55, 21, 08, 4C, + A0, 0D, 06, 4C, 40, 87, 88, B3, 3C, + A0, 0D, 03, 4D, 7C, 40, + A0, 0D, 06, 4D, 87, 03, 03, 00, C0, + A0, 0D, 06, 4D, 88, 4C, E5, 82, 48, + A0, 0D, 06, 4D, 44, 00, 34, 12, 00, + A0, 0D, 06, 4D, 4A, 8E, 61, B0, 01, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 79, 55, 21, 08, 4C +} + +NXP_RF_CONF_BLK_11={ + 20, 02, FD, 1C, + A0, 0D, 06, 4D, 40, 8A, 88, B3, 3C, + A0, 0D, 06, 4E, 4A, BA, E6, F1, 06, + A0, 0D, 06, 4E, 49, DD, 95, 0A, 00, + A0, 0D, 06, 4E, 5C, EF, 7F, 00, 00, + A0, 0D, 06, 4E, 78, 00, 00, C0, 00, + A0, 0D, 06, 4F, 88, F7, E0, 16, 89, + A0, 0D, 06, 4F, 8B, 00, 14, 08, 00, + A0, 0D, 06, 4F, 89, 7F, 07, 15, 02, + A0, 0D, 06, 4F, 44, 00, 34, E6, 00, + A0, 0D, 06, 4F, 40, 84, 88, B3, 3C, + A0, 0D, 06, 4F, 79, 55, 21, 88, 4C, + A0, 0D, 06, 50, 88, 9F, E0, 2B, 41, + A0, 0D, 06, 50, 8B, 00, 14, 08, 00, + A0, 0D, 06, 50, 89, 7F, 07, 15, 02, + A0, 0D, 06, 50, 44, 00, 34, E6, 00, + A0, 0D, 06, 50, 40, 84, 88, B3, 3C, + A0, 0D, 06, 50, 79, 55, 21, 88, 4C, + A0, 0D, 06, 52, 88, 9F, E8, A2, 40, + A0, 0D, 06, 52, 8B, 00, 14, 08, 00, + A0, 0D, 06, 52, 89, 7F, 07, 15, 02, + A0, 0D, 06, 52, 44, 00, 34, E6, 00, + A0, 0D, 06, 52, 40, 84, 88, B3, 3C, + A0, 0D, 06, 52, 79, 55, 21, 88, 4C, + A0, 0D, 06, 53, 88, 9F, E8, 2C, 40, + A0, 0D, 06, 53, 89, 7F, 07, 15, 02, + A0, 0D, 06, 53, 44, 00, 34, E6, 00, + A0, 0D, 06, 53, 40, 84, 88, B3, 3C, + A0, 0D, 06, 53, 79, 55, 21, 88, 4C +} + +NXP_RF_CONF_BLK_12={ + 20, 02, FD, 1C, + A0, 0D, 06, 60, 50, 94, 52, 4A, 29, + A0, 0D, 06, 80, 83, 1F, 06, 00, 00, + A0, 0D, 06, 80, 82, 25, 0A, 00, 20, + A0, 0D, 06, 80, 80, 10, 42, 24, 00, + A0, 0D, 06, 80, 7E, 28, 02, 00, 00, + A0, 0D, 06, 80, 8F, 80, 42, D6, 0A, + A0, 0D, 06, 80, 90, 00, A2, 52, 2A, + A0, 0D, 06, 80, 49, ED, 16, 0B, 00, + A0, 0D, 06, 82, 82, 25, 0A, 00, 20, + A0, 0D, 06, 82, 49, ED, 16, 0B, 00, + A0, 0D, 06, 83, 80, 3A, 01, 20, 00, + A0, 0D, 06, 83, 49, ED, 16, 0B, 00, + A0, 0D, 06, 84, 7F, 1E, 01, 20, 00, + A0, 0D, 06, 85, 7F, 0E, 01, 20, 00, + A0, 0D, 06, 85, 7D, B3, 22, F6, BF, + A0, 0D, 06, 87, 83, 1F, 06, 00, 00, + A0, 0D, 06, 87, 49, ED, 16, 0B, 00, + A0, 0D, 06, 88, 83, 3C, 0E, 00, 00, + A0, 0D, 06, 88, 49, ED, 16, 0B, 00, + A0, 0D, 06, 89, 80, 1E, 01, 20, 00, + A0, 0D, 06, 89, 49, ED, 16, 0B, 00, + A0, 0D, 06, 8A, 7F, 0C, 01, 20, 00, + A0, 0D, 06, 8C, 80, 10, 42, 24, 00, + A0, 0D, 06, 8C, 49, ED, 16, 0B, 00, + A0, 0D, 06, 8D, 49, ED, 16, 0B, 00, + A0, 0D, 06, 90, 38, D9, 39, A9, 80, + A0, 0D, 06, 91, AC, 94, 52, 4A, 29, + A0, 0D, 06, 91, AE, 94, 52, 4A, 29 +} + +NXP_RF_CONF_BLK_13={ + 20, 02, 65, 03, + A0, AF, 09, 10, 46, 00, 24, 10, 46, 00, 24, 12, + A0, 92, 28, 48, 00, 24, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 60, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 45, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 68, 2A, 06, 40, 60, 03, 19, 14, 00, 00, 00, 82, 24, 00, 00, 0A, 00, 0A, 00, 01, 00, 01, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 0A, 7F, 00, 00, 01, 00, 03 +} + +NXP_RF_CONF_MAX_NUM=13 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set +# to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 } + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#SCR Read Tag Operation Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x39 +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x00 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 + +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x00 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 + +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A + +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x00 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################ +#This flags will enable different modes of Lx Debug based on bits of the Byte0 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | |x | | | | | | Modulation Detected Notification +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events CE (ISO14443-3, RF Field ON/OFF) +#Byte 1: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | |x | | | | | | Enable L2 events during RF activation ISO 14443-3 +# | | | | | | | | +# | | | | | | | | +# | | | | | | | | +# | | | | | | | | +# | | | | | | | | +# Byte1 Byte0 +# \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0031 ==> Modulation detected, L1, L2 CE +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 //Any positive value as per below bit configuration +# HOST power states when type A/B only UICC present +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +DEFAULT_SYS_CODE_PWR_STATE=0x00 +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element. +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} + +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +#bit pos 7 = Proprietary file enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#WLC mode +#0x00 = if WLC Application running in MW (non-autonomous mode) +#0x01 = if WLC Application running in FW (autonomous mode) +NXP_WLC_MODE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +# 2 --> Use this option only for FW versions below 1.10.52 +NXP_RDR_DISABLE_ENABLE_LPCD=1 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 + +################################################################################# +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# UICC1 interface A0EC +# UICC2 interface A0D4 +# eSE interface A0ED +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 11, 04, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, D4, 01, 00, + A0, 0A, 01, 0A +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +# Below params are not recommended to add in CONF block. +# LA_BIT_FRAME_SDD(0x30) +# LA_PLATFORM_CONFIG(0x31) +# LA_SEL_INFO(0x32) +# LB_SENSB_INFO(0x38) +# LF_PROTOCOL(0x50) +# NFCC_CONFIG_CONTROL(0x85) + +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# +# Enable or Disable UICC ETSI support +# Disable UICC ETSI support 0 +# Enable UICC ETSI support 1 +NXP_UICC_ETSI_SUPPORT=0 +################################################################################# +# Enable Stop/Start of RF discovery for NFCEE recovery +# Disable RF Restart for NFCEE recovery 0 +# Enable RF Restart for NFCEE recovery 1 +NXP_RESTART_RF_FOR_NFCEE_RECOVERY=0 +################################################################################# +#Tag Presence check timeout in millisecond. +NXP_PRESENCE_CHECK_TIMEOUT = 375 + + diff --git a/proprietary/vendor/etc/libnfc-mtp-SN100-UICC.conf b/proprietary/vendor/etc/libnfc-mtp-SN100-UICC.conf new file mode 100644 index 0000000..fb651b5 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-mtp-SN100-UICC.conf @@ -0,0 +1,780 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +## Modified by Motorola Mobility LLC +## Version : Cypfr.4 (2021/06/09) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +# *** RFBOARD30x20FN FW VERSION = 01.10.5B *** +NXP_RF_CONF_BLK_1={ + 20, 02, DB, 04, + A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 18, 18, 18, 18, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, FF, 07, 13, 07, 05, 13, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 03, 00, 06, 00, 0A, 00, 0D, 00, 10, 00, 14, 00, 17, 00, 1B, 00, 1E, 00, 21, 00, 25, 00, 28, 00, 2C, 00, 2F, 00, 32, 00, 36, 00, 39, 00, 3D, 00, 40, 00, 43, 00, 47, 00, 4A, 00, 4E, 00, 51, 00, 54, 00, 58, 00, 5B, 00, 5E, 00, 62, 00, 65, 00, 69, 00, 6C, 00, 6F, 00, 73, 00, 76, 00, 7A, 00, 7D, 00, 80, 00, 84, 00, 87, 00, 8B, 00, 8E, 00, 91, 00, 95, 00, 98, 00, 9C, 00, 9F, 00, A2, 00, A6, 00, A9, 00, AC, 00, B0, 00, B3, 00, B7, 00, BA, 00, BD, 00, C1, 00, C4, 00, C8, 00, CB, 00, CE, 00, D2, 00, D5, 00, + A0, A5, 0D, 3B, 3B, 3B, 3B, 3B, 3B, FF, 03, 1F, 00, 3B, 00, 00, + A0, 6A, 10, 28, 00, 28, 00, 28, 00, 28, 00, 80, 02, 80, 02, 80, 02, 80, 02 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 14, 08, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 2A, FF, 41, 24, FF, 42, 1F, FF, 43, 1A, FF, 44, 16, FF, 45, 12, FF, 46, 0F, FF, 47, 0C, FF, 07, 2A, F1, 48, 09, FF, 08, 23, F7, 49, 07, FF, 09, 1E, F7, 4A, 05, FF, 0A, 19, FA, 4B, 03, FF, 0B, 15, FA, 4C, 01, FF, 0C, 12, F5, 0D, 0F, F2, 0E, 0C, F2, 0F, 09, F5, 10, 06, FC, 11, 06, E2, 12, 02, FB, 13, 01, F0, 14, 00, E6, 15, 00, CF, 16, 00, BA, 17, 00, A7, 18, 00, 96, 19, 00, 87, 1A, 00, 79, 1B, 00, 6C, 1C, 00, 61, 1D, 00, 57, 1E, 00, 4E, 1F, 00, 46, 20, 00, 3F, 21, 00, 38, 22, 00, 32, 23, 00, 2D, 24, 00, 28, A5, 00, 48, A6, 00, 40, A7, 00, 39, A8, 00, 33, A9, 00, 2D, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, C5, 02, + A0, 0B, BB, 00, 1D, 01, 14, 6A, 2A, E8, 03, E8, 03, 06, 10, 0E, 2C, 01, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 00, 00, 00, 00, + A0, A6, 03, C0, 08, 08 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, E9, 05, + A0, AB, 82, 27, 1B, 33, 04, 42, 04, 55, 04, 75, 04, 9E, 04, C7, 04, F0, 04, 20, 05, 4F, 05, 7F, 05, B8, 05, F2, 05, 2B, 06, 72, 06, BA, 06, 02, 07, 49, 07, 91, 07, F0, 07, 50, 08, AF, 08, 0F, 09, 6E, 09, E1, 09, 54, 0A, C6, 0A, 56, 0B, E5, 0B, 74, 0C, 04, 0D, 93, 0D, 52, 0E, 11, 0F, D0, 0F, 8F, 10, 4F, 11, 0E, 12, 2C, 13, 4B, 14, 6A, 15, 88, 16, A7, 17, C6, 18, 44, 1A, C2, 1B, 41, 1D, BF, 1E, 9D, 20, 7B, 22, 58, 24, 96, 26, D3, 28, 11, 2B, 4E, 2D, 4B, 30, 47, 33, 44, 36, 40, 39, 3D, 3C, A2, 3F, 07, 43, 6C, 46, E6, 4A, 61, 4F, + A0, A7, 0B, 00, 02, 77, 17, 1F, 1F, 1F, 0A, FF, 19, 05, + A0, A8, 38, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 23, 44, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, + A0, 98, 08, 6E, D3, 16, 80, 2A, 6E, 6E, 6E, + A0, 9E, 0C, 0F, D3, 16, 96, 00, 2C, 01, 2B, 25, 02, 00, 00 +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FB, 14, + A0, C6, 5B, 00, 00, 04, 00, 00, 00, 3C, 00, 00, 00, 20, 80, FF, 01, 00, 00, 64, 00, 00, C0, 00, 00, 00, C0, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A0, 0D, 06, 10, C9, 30, 00, 40, 00, + A0, 0D, 03, 24, 29, 07, + A0, 0D, 03, 24, 30, 07, + A0, 0D, 03, 25, 29, 01, + A0, 0D, 03, 25, 30, 01, + A0, 0D, 06, 40, 42, F0, C1, 37, CC, + A0, 0D, 06, 41, 45, 31, 12, 00, 00, + A0, 0D, 03, 42, 7C, 54, + A0, 0D, 06, 42, 8D, 00, A0, A4, 64, + A0, 0D, 06, 42, 8B, 00, A2, 23, 00, + A0, 0D, 06, 42, 89, 7F, 12, BD, 01, + A0, 0D, 06, 42, 44, 00, B0, 66, 01, + A0, 0D, 06, 42, 43, 24, 24, 4D, ED, + A0, 0D, 06, 42, 41, FD, FF, 5F, F0, + A0, 0D, 06, 42, 40, 08, 77, 33, 3A, + A0, 0D, 06, 42, 4A, 00, 00, 00, 00, + A0, 0D, 06, 42, 49, 00, 00, 00, 00, + A0, 0D, 06, 51, 40, 12, 77, 33, 3A, + A0, 0D, 06, 43, 44, 00, 34, 52, 01 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1C, + A0, 0D, 06, 43, 43, A5, 64, 4C, AD, + A0, 0D, 06, 43, 40, 05, 77, 33, 3D, + A0, 0D, 06, 43, 4A, 00, 00, 00, 00, + A0, 0D, 06, 43, 49, 00, 00, 00, 00, + A0, 0D, 06, 44, 44, 00, 34, 52, 01, + A0, 0D, 06, 44, 43, A5, 64, 4C, AD, + A0, 0D, 06, 44, 40, 05, 77, 33, 3D, + A0, 0D, 06, 44, 4A, 00, 00, 00, 00, + A0, 0D, 06, 44, 49, 00, 00, 00, 00, + A0, 0D, 06, 45, 44, 00, 34, 52, 01, + A0, 0D, 06, 45, 43, A5, 64, 4C, AD, + A0, 0D, 06, 45, 40, 05, 77, 33, 3D, + A0, 0D, 06, 45, 4A, 00, 00, 00, 00, + A0, 0D, 06, 45, 49, 00, 00, 00, 00, + A0, 0D, 06, 46, 45, 39, 12, 00, 00, + A0, 0D, 06, 46, 44, 00, 34, 52, 01, + A0, 0D, 06, 47, 43, A5, 64, 4C, ED, + A0, 0D, 06, 47, 40, 05, 77, 33, 3D, + A0, 0D, 06, 47, 4A, 20, AA, 0B, 81, + A0, 0D, 06, 47, 49, B5, 44, 22, 00, + A0, 0D, 06, 48, 43, A5, 64, 4C, AD, + A0, 0D, 06, 48, 40, 05, 77, 33, 3D, + A0, 0D, 06, 48, 4A, 00, 00, 00, 00, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 43, A5, 64, 4C, AD, + A0, 0D, 06, 49, 40, 05, 77, 33, 3D, + A0, 0D, 06, 49, 4A, 00, 00, 00, 00, + A0, 0D, 06, 49, 49, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, FA, 1C, + A0, 0D, 06, 4A, 8B, 48, 02, F0, 80, + A0, 0D, 06, 4A, 43, A5, 64, 4C, AD, + A0, 0D, 06, 4A, 40, 05, 77, 33, 3D, + A0, 0D, 06, 4A, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4B, 43, A5, 64, 4C, 6D, + A0, 0D, 06, 4C, 44, 00, 34, 52, 01, + A0, 0D, 06, 4C, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4D, 44, 00, 34, 52, 01, + A0, 0D, 06, 4D, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4E, 45, 31, 12, 00, 00, + A0, 0D, 03, 4E, 7C, 50, + A0, 0D, 06, 4E, 8D, 00, 00, 00, 06, + A0, 0D, 06, 4E, 8B, 00, A2, 24, 00, + A0, 0D, 06, 4E, 89, 7D, 84, 05, 08, + A0, 0D, 06, 4E, 44, 00, B0, 66, 01, + A0, 0D, 06, 4E, 43, A5, 64, 5C, AD, + A0, 0D, 06, 4E, 41, FD, FF, 5F, F0, + A0, 0D, 06, 4E, 40, 07, 77, 33, 3D, + A0, 0D, 06, 4F, 4A, 2A, 8E, 8D, 2A, + A0, 0D, 06, 4F, 49, 5D, 27, 27, 00, + A0, 0D, 06, 50, 4A, 00, 00, 00, 00, + A0, 0D, 06, 50, 49, 00, 00, 00, 00, + A0, 0D, 06, 52, 4A, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, FD, 1C, + A0, 0D, 06, 52, 49, 00, 00, 00, 00, + A0, 0D, 06, 53, 4A, 00, 00, 00, 00, + A0, 0D, 06, 53, 49, 00, 00, 00, 00, + A0, 0D, 06, 60, 4E, FF, FF, FF, 01, + A0, 0D, 06, 60, 4F, FF, FF, FF, 01, + A0, 0D, 06, 60, 50, FF, FF, FF, 3F, + A0, 0D, 06, 80, 7D, A0, 00, 9E, BB, + A0, 0D, 06, 80, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 80, C9, 30, 00, 00, 00, + A0, 0D, 06, 8C, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 90, 4F, FF, FF, FF, 01, + A0, 0D, 06, 90, 4E, FF, FF, FF, 01, + A0, 0D, 06, 90, 39, 3F, 00, 00, 7F, + A0, 0D, 06, 9B, A9, 84, 00, 00, 00, + A0, 0D, 06, 9B, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9B, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9B, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9B, 4E, FF, FF, FF, 01, + A0, 0D, 06, 91, D4, F8, 84, EF, 03, + A0, 0D, 06, 91, D2, 4A, 4A, 4B, 38, + A0, 0D, 06, 9C, A9, 84, 00, 00, 00, + A0, 0D, 06, 9C, A1, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 99, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 95, FF, 00, 0F, 00 +} + +NXP_RF_CONF_BLK_11={ + 20, 02, F5, 17, + A0, 0D, 06, 9C, A5, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 9D, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9C, 4F, 9F, 88, FF, 01, + A0, 0D, 06, 9C, 4E, 9F, 88, FF, 01, + A0, 0D, 06, 95, D4, F8, 84, 75, 00, + A0, 0D, 06, 95, D2, 4A, 4B, 4B, 58, + A0, 0D, 06, 9D, A9, 84, 00, 00, 00, + A0, 0D, 06, 9D, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9D, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9D, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9D, 4E, FF, FF, FF, 01, + A0, 0D, 06, 99, D4, F8, 04, E4, 01, + A0, 0D, 06, 99, D2, 4A, 4B, 4B, 48, + A0, AF, 09, 10, 5F, 00, 18, 10, 5F, 00, 18, 00, + A0, 92, 28, 37, 00, 1B, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 70, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 55, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 1F, 06, 63, 00, 42, 00, 14, 00, + A0, 9A, 02, 95, 01, + A0, 99, 0A, 03, 00, 80, 00, 00, 80, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_12={ + 20, 02, 3B, 03, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, D0, 07, 00, 0F, FF, 7F, 00, 0F, FF, 7F, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0D, 03, 61, 09, 7E, + A0, 85, 04, 58, 08, A8, AC +} + +## DLMA Enable | VDDPA 3.9 +## LMA (CLK) A+B - (CLK-LESS) A/B/F 32 - 57.7/28.2/55.3 | RSSI 0x134F | H 8A/m +## LPDET 150 | NFCLD 300 | Ratio 43 | GreenCar 600 +## Tx first entry 3/6 +NXP_RF_CONF_BLK_13={ + 20, 02, F2, 04, + A0, AF, 09, 11, 20, 00, 18, 11, 20, 00, 18, 00, + A0, 98, 08, 20, 4F, 13, 80, 18, 39, 1C, 37, + A0, 34, C8, 23, 04, 3D, 01, 04, 19, CB, 05, 00, 00, 3E, 07, 00, 00, B0, 08, 00, 00, B0, 08, 00, 00, E5, 09, 00, 00, E5, 09, 00, 00, 58, 0B, 00, 00, 58, 0B, 00, 00, E1, 0D, 00, 00, 4B, 10, 00, 00, 4B, 10, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 06, 19, B9, 00, 00, 00, 35, 01, 00, 00, CF, 01, 00, 00, 2C, 02, 00, 00, C7, 02, 00, 00, 23, 03, 00, 00, DD, 03, 00, 00, 30, 05, 00, 00, 00, 07, 00, 00, A8, 09, 00, 00, 7B, 0E, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, + A0, 9E, 0C, 07, 4F, 13, 96, 00, 2C, 01, 2B, 58, 02, 00, 00 +} +NXP_RF_CONF_BLK_14={ + 20, 02, F1, 01, + A0, A9, ED, 00, 2A, FF, 01, 24, FF, 02, 1F, FF, 03, 1A, FF, 04, 16, FF, 05, 12, FF, 06, 0F, FF, 07, 0C, FF, 08, 09, FF, 09, 07, FF, 0A, 05, FF, 0B, 03, FF, 0C, 01, FF, 0D, 00, F5, 0E, 00, DC, 0F, 00, C6, 10, 00, B3, 11, 00, A2, 12, 00, 92, 13, 00, 84, 14, 00, 77, 15, 00, 6B, 16, 00, 60, 17, 00, 57, 18, 00, 4E, 19, 00, 46, 1A, 00, 3F, 1B, 00, 39, 1C, 00, 33, 1D, 00, 2E, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A +} + + +NXP_RF_CONF_MAX_NUM=14 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3F, 05, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A1, 13, 01, 32, + A0, 80, 02, FA, 00 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x01 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-mtp-SN100.conf b/proprietary/vendor/etc/libnfc-mtp-SN100.conf new file mode 100644 index 0000000..fb651b5 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-mtp-SN100.conf @@ -0,0 +1,780 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +## Modified by Motorola Mobility LLC +## Version : Cypfr.4 (2021/06/09) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +# *** RFBOARD30x20FN FW VERSION = 01.10.5B *** +NXP_RF_CONF_BLK_1={ + 20, 02, DB, 04, + A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 18, 18, 18, 18, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, FF, 07, 13, 07, 05, 13, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 03, 00, 06, 00, 0A, 00, 0D, 00, 10, 00, 14, 00, 17, 00, 1B, 00, 1E, 00, 21, 00, 25, 00, 28, 00, 2C, 00, 2F, 00, 32, 00, 36, 00, 39, 00, 3D, 00, 40, 00, 43, 00, 47, 00, 4A, 00, 4E, 00, 51, 00, 54, 00, 58, 00, 5B, 00, 5E, 00, 62, 00, 65, 00, 69, 00, 6C, 00, 6F, 00, 73, 00, 76, 00, 7A, 00, 7D, 00, 80, 00, 84, 00, 87, 00, 8B, 00, 8E, 00, 91, 00, 95, 00, 98, 00, 9C, 00, 9F, 00, A2, 00, A6, 00, A9, 00, AC, 00, B0, 00, B3, 00, B7, 00, BA, 00, BD, 00, C1, 00, C4, 00, C8, 00, CB, 00, CE, 00, D2, 00, D5, 00, + A0, A5, 0D, 3B, 3B, 3B, 3B, 3B, 3B, FF, 03, 1F, 00, 3B, 00, 00, + A0, 6A, 10, 28, 00, 28, 00, 28, 00, 28, 00, 80, 02, 80, 02, 80, 02, 80, 02 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 14, 08, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 2A, FF, 41, 24, FF, 42, 1F, FF, 43, 1A, FF, 44, 16, FF, 45, 12, FF, 46, 0F, FF, 47, 0C, FF, 07, 2A, F1, 48, 09, FF, 08, 23, F7, 49, 07, FF, 09, 1E, F7, 4A, 05, FF, 0A, 19, FA, 4B, 03, FF, 0B, 15, FA, 4C, 01, FF, 0C, 12, F5, 0D, 0F, F2, 0E, 0C, F2, 0F, 09, F5, 10, 06, FC, 11, 06, E2, 12, 02, FB, 13, 01, F0, 14, 00, E6, 15, 00, CF, 16, 00, BA, 17, 00, A7, 18, 00, 96, 19, 00, 87, 1A, 00, 79, 1B, 00, 6C, 1C, 00, 61, 1D, 00, 57, 1E, 00, 4E, 1F, 00, 46, 20, 00, 3F, 21, 00, 38, 22, 00, 32, 23, 00, 2D, 24, 00, 28, A5, 00, 48, A6, 00, 40, A7, 00, 39, A8, 00, 33, A9, 00, 2D, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, C5, 02, + A0, 0B, BB, 00, 1D, 01, 14, 6A, 2A, E8, 03, E8, 03, 06, 10, 0E, 2C, 01, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 00, 00, 00, 00, + A0, A6, 03, C0, 08, 08 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, E9, 05, + A0, AB, 82, 27, 1B, 33, 04, 42, 04, 55, 04, 75, 04, 9E, 04, C7, 04, F0, 04, 20, 05, 4F, 05, 7F, 05, B8, 05, F2, 05, 2B, 06, 72, 06, BA, 06, 02, 07, 49, 07, 91, 07, F0, 07, 50, 08, AF, 08, 0F, 09, 6E, 09, E1, 09, 54, 0A, C6, 0A, 56, 0B, E5, 0B, 74, 0C, 04, 0D, 93, 0D, 52, 0E, 11, 0F, D0, 0F, 8F, 10, 4F, 11, 0E, 12, 2C, 13, 4B, 14, 6A, 15, 88, 16, A7, 17, C6, 18, 44, 1A, C2, 1B, 41, 1D, BF, 1E, 9D, 20, 7B, 22, 58, 24, 96, 26, D3, 28, 11, 2B, 4E, 2D, 4B, 30, 47, 33, 44, 36, 40, 39, 3D, 3C, A2, 3F, 07, 43, 6C, 46, E6, 4A, 61, 4F, + A0, A7, 0B, 00, 02, 77, 17, 1F, 1F, 1F, 0A, FF, 19, 05, + A0, A8, 38, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 23, 44, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, + A0, 98, 08, 6E, D3, 16, 80, 2A, 6E, 6E, 6E, + A0, 9E, 0C, 0F, D3, 16, 96, 00, 2C, 01, 2B, 25, 02, 00, 00 +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FB, 14, + A0, C6, 5B, 00, 00, 04, 00, 00, 00, 3C, 00, 00, 00, 20, 80, FF, 01, 00, 00, 64, 00, 00, C0, 00, 00, 00, C0, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A0, 0D, 06, 10, C9, 30, 00, 40, 00, + A0, 0D, 03, 24, 29, 07, + A0, 0D, 03, 24, 30, 07, + A0, 0D, 03, 25, 29, 01, + A0, 0D, 03, 25, 30, 01, + A0, 0D, 06, 40, 42, F0, C1, 37, CC, + A0, 0D, 06, 41, 45, 31, 12, 00, 00, + A0, 0D, 03, 42, 7C, 54, + A0, 0D, 06, 42, 8D, 00, A0, A4, 64, + A0, 0D, 06, 42, 8B, 00, A2, 23, 00, + A0, 0D, 06, 42, 89, 7F, 12, BD, 01, + A0, 0D, 06, 42, 44, 00, B0, 66, 01, + A0, 0D, 06, 42, 43, 24, 24, 4D, ED, + A0, 0D, 06, 42, 41, FD, FF, 5F, F0, + A0, 0D, 06, 42, 40, 08, 77, 33, 3A, + A0, 0D, 06, 42, 4A, 00, 00, 00, 00, + A0, 0D, 06, 42, 49, 00, 00, 00, 00, + A0, 0D, 06, 51, 40, 12, 77, 33, 3A, + A0, 0D, 06, 43, 44, 00, 34, 52, 01 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1C, + A0, 0D, 06, 43, 43, A5, 64, 4C, AD, + A0, 0D, 06, 43, 40, 05, 77, 33, 3D, + A0, 0D, 06, 43, 4A, 00, 00, 00, 00, + A0, 0D, 06, 43, 49, 00, 00, 00, 00, + A0, 0D, 06, 44, 44, 00, 34, 52, 01, + A0, 0D, 06, 44, 43, A5, 64, 4C, AD, + A0, 0D, 06, 44, 40, 05, 77, 33, 3D, + A0, 0D, 06, 44, 4A, 00, 00, 00, 00, + A0, 0D, 06, 44, 49, 00, 00, 00, 00, + A0, 0D, 06, 45, 44, 00, 34, 52, 01, + A0, 0D, 06, 45, 43, A5, 64, 4C, AD, + A0, 0D, 06, 45, 40, 05, 77, 33, 3D, + A0, 0D, 06, 45, 4A, 00, 00, 00, 00, + A0, 0D, 06, 45, 49, 00, 00, 00, 00, + A0, 0D, 06, 46, 45, 39, 12, 00, 00, + A0, 0D, 06, 46, 44, 00, 34, 52, 01, + A0, 0D, 06, 47, 43, A5, 64, 4C, ED, + A0, 0D, 06, 47, 40, 05, 77, 33, 3D, + A0, 0D, 06, 47, 4A, 20, AA, 0B, 81, + A0, 0D, 06, 47, 49, B5, 44, 22, 00, + A0, 0D, 06, 48, 43, A5, 64, 4C, AD, + A0, 0D, 06, 48, 40, 05, 77, 33, 3D, + A0, 0D, 06, 48, 4A, 00, 00, 00, 00, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 43, A5, 64, 4C, AD, + A0, 0D, 06, 49, 40, 05, 77, 33, 3D, + A0, 0D, 06, 49, 4A, 00, 00, 00, 00, + A0, 0D, 06, 49, 49, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, FA, 1C, + A0, 0D, 06, 4A, 8B, 48, 02, F0, 80, + A0, 0D, 06, 4A, 43, A5, 64, 4C, AD, + A0, 0D, 06, 4A, 40, 05, 77, 33, 3D, + A0, 0D, 06, 4A, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4B, 43, A5, 64, 4C, 6D, + A0, 0D, 06, 4C, 44, 00, 34, 52, 01, + A0, 0D, 06, 4C, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4D, 44, 00, 34, 52, 01, + A0, 0D, 06, 4D, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4E, 45, 31, 12, 00, 00, + A0, 0D, 03, 4E, 7C, 50, + A0, 0D, 06, 4E, 8D, 00, 00, 00, 06, + A0, 0D, 06, 4E, 8B, 00, A2, 24, 00, + A0, 0D, 06, 4E, 89, 7D, 84, 05, 08, + A0, 0D, 06, 4E, 44, 00, B0, 66, 01, + A0, 0D, 06, 4E, 43, A5, 64, 5C, AD, + A0, 0D, 06, 4E, 41, FD, FF, 5F, F0, + A0, 0D, 06, 4E, 40, 07, 77, 33, 3D, + A0, 0D, 06, 4F, 4A, 2A, 8E, 8D, 2A, + A0, 0D, 06, 4F, 49, 5D, 27, 27, 00, + A0, 0D, 06, 50, 4A, 00, 00, 00, 00, + A0, 0D, 06, 50, 49, 00, 00, 00, 00, + A0, 0D, 06, 52, 4A, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, FD, 1C, + A0, 0D, 06, 52, 49, 00, 00, 00, 00, + A0, 0D, 06, 53, 4A, 00, 00, 00, 00, + A0, 0D, 06, 53, 49, 00, 00, 00, 00, + A0, 0D, 06, 60, 4E, FF, FF, FF, 01, + A0, 0D, 06, 60, 4F, FF, FF, FF, 01, + A0, 0D, 06, 60, 50, FF, FF, FF, 3F, + A0, 0D, 06, 80, 7D, A0, 00, 9E, BB, + A0, 0D, 06, 80, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 80, C9, 30, 00, 00, 00, + A0, 0D, 06, 8C, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 90, 4F, FF, FF, FF, 01, + A0, 0D, 06, 90, 4E, FF, FF, FF, 01, + A0, 0D, 06, 90, 39, 3F, 00, 00, 7F, + A0, 0D, 06, 9B, A9, 84, 00, 00, 00, + A0, 0D, 06, 9B, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9B, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9B, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9B, 4E, FF, FF, FF, 01, + A0, 0D, 06, 91, D4, F8, 84, EF, 03, + A0, 0D, 06, 91, D2, 4A, 4A, 4B, 38, + A0, 0D, 06, 9C, A9, 84, 00, 00, 00, + A0, 0D, 06, 9C, A1, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 99, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 95, FF, 00, 0F, 00 +} + +NXP_RF_CONF_BLK_11={ + 20, 02, F5, 17, + A0, 0D, 06, 9C, A5, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 9D, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9C, 4F, 9F, 88, FF, 01, + A0, 0D, 06, 9C, 4E, 9F, 88, FF, 01, + A0, 0D, 06, 95, D4, F8, 84, 75, 00, + A0, 0D, 06, 95, D2, 4A, 4B, 4B, 58, + A0, 0D, 06, 9D, A9, 84, 00, 00, 00, + A0, 0D, 06, 9D, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9D, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9D, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9D, 4E, FF, FF, FF, 01, + A0, 0D, 06, 99, D4, F8, 04, E4, 01, + A0, 0D, 06, 99, D2, 4A, 4B, 4B, 48, + A0, AF, 09, 10, 5F, 00, 18, 10, 5F, 00, 18, 00, + A0, 92, 28, 37, 00, 1B, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 70, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 55, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 1F, 06, 63, 00, 42, 00, 14, 00, + A0, 9A, 02, 95, 01, + A0, 99, 0A, 03, 00, 80, 00, 00, 80, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_12={ + 20, 02, 3B, 03, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, D0, 07, 00, 0F, FF, 7F, 00, 0F, FF, 7F, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0D, 03, 61, 09, 7E, + A0, 85, 04, 58, 08, A8, AC +} + +## DLMA Enable | VDDPA 3.9 +## LMA (CLK) A+B - (CLK-LESS) A/B/F 32 - 57.7/28.2/55.3 | RSSI 0x134F | H 8A/m +## LPDET 150 | NFCLD 300 | Ratio 43 | GreenCar 600 +## Tx first entry 3/6 +NXP_RF_CONF_BLK_13={ + 20, 02, F2, 04, + A0, AF, 09, 11, 20, 00, 18, 11, 20, 00, 18, 00, + A0, 98, 08, 20, 4F, 13, 80, 18, 39, 1C, 37, + A0, 34, C8, 23, 04, 3D, 01, 04, 19, CB, 05, 00, 00, 3E, 07, 00, 00, B0, 08, 00, 00, B0, 08, 00, 00, E5, 09, 00, 00, E5, 09, 00, 00, 58, 0B, 00, 00, 58, 0B, 00, 00, E1, 0D, 00, 00, 4B, 10, 00, 00, 4B, 10, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 06, 19, B9, 00, 00, 00, 35, 01, 00, 00, CF, 01, 00, 00, 2C, 02, 00, 00, C7, 02, 00, 00, 23, 03, 00, 00, DD, 03, 00, 00, 30, 05, 00, 00, 00, 07, 00, 00, A8, 09, 00, 00, 7B, 0E, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, + A0, 9E, 0C, 07, 4F, 13, 96, 00, 2C, 01, 2B, 58, 02, 00, 00 +} +NXP_RF_CONF_BLK_14={ + 20, 02, F1, 01, + A0, A9, ED, 00, 2A, FF, 01, 24, FF, 02, 1F, FF, 03, 1A, FF, 04, 16, FF, 05, 12, FF, 06, 0F, FF, 07, 0C, FF, 08, 09, FF, 09, 07, FF, 0A, 05, FF, 0B, 03, FF, 0C, 01, FF, 0D, 00, F5, 0E, 00, DC, 0F, 00, C6, 10, 00, B3, 11, 00, A2, 12, 00, 92, 13, 00, 84, 14, 00, 77, 15, 00, 6B, 16, 00, 60, 17, 00, 57, 18, 00, 4E, 19, 00, 46, 1A, 00, 3F, 1B, 00, 39, 1C, 00, 33, 1D, 00, 2E, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A +} + + +NXP_RF_CONF_MAX_NUM=14 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3F, 05, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A1, 13, 01, 32, + A0, 80, 02, FA, 00 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x01 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf b/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf new file mode 100644 index 0000000..fb651b5 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf @@ -0,0 +1,780 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +## Modified by Motorola Mobility LLC +## Version : Cypfr.4 (2021/06/09) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +# *** RFBOARD30x20FN FW VERSION = 01.10.5B *** +NXP_RF_CONF_BLK_1={ + 20, 02, DB, 04, + A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 18, 18, 18, 18, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, FF, 07, 13, 07, 05, 13, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 03, 00, 06, 00, 0A, 00, 0D, 00, 10, 00, 14, 00, 17, 00, 1B, 00, 1E, 00, 21, 00, 25, 00, 28, 00, 2C, 00, 2F, 00, 32, 00, 36, 00, 39, 00, 3D, 00, 40, 00, 43, 00, 47, 00, 4A, 00, 4E, 00, 51, 00, 54, 00, 58, 00, 5B, 00, 5E, 00, 62, 00, 65, 00, 69, 00, 6C, 00, 6F, 00, 73, 00, 76, 00, 7A, 00, 7D, 00, 80, 00, 84, 00, 87, 00, 8B, 00, 8E, 00, 91, 00, 95, 00, 98, 00, 9C, 00, 9F, 00, A2, 00, A6, 00, A9, 00, AC, 00, B0, 00, B3, 00, B7, 00, BA, 00, BD, 00, C1, 00, C4, 00, C8, 00, CB, 00, CE, 00, D2, 00, D5, 00, + A0, A5, 0D, 3B, 3B, 3B, 3B, 3B, 3B, FF, 03, 1F, 00, 3B, 00, 00, + A0, 6A, 10, 28, 00, 28, 00, 28, 00, 28, 00, 80, 02, 80, 02, 80, 02, 80, 02 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 14, 08, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 2A, FF, 41, 24, FF, 42, 1F, FF, 43, 1A, FF, 44, 16, FF, 45, 12, FF, 46, 0F, FF, 47, 0C, FF, 07, 2A, F1, 48, 09, FF, 08, 23, F7, 49, 07, FF, 09, 1E, F7, 4A, 05, FF, 0A, 19, FA, 4B, 03, FF, 0B, 15, FA, 4C, 01, FF, 0C, 12, F5, 0D, 0F, F2, 0E, 0C, F2, 0F, 09, F5, 10, 06, FC, 11, 06, E2, 12, 02, FB, 13, 01, F0, 14, 00, E6, 15, 00, CF, 16, 00, BA, 17, 00, A7, 18, 00, 96, 19, 00, 87, 1A, 00, 79, 1B, 00, 6C, 1C, 00, 61, 1D, 00, 57, 1E, 00, 4E, 1F, 00, 46, 20, 00, 3F, 21, 00, 38, 22, 00, 32, 23, 00, 2D, 24, 00, 28, A5, 00, 48, A6, 00, 40, A7, 00, 39, A8, 00, 33, A9, 00, 2D, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, C5, 02, + A0, 0B, BB, 00, 1D, 01, 14, 6A, 2A, E8, 03, E8, 03, 06, 10, 0E, 2C, 01, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 00, 00, 00, 00, + A0, A6, 03, C0, 08, 08 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, E9, 05, + A0, AB, 82, 27, 1B, 33, 04, 42, 04, 55, 04, 75, 04, 9E, 04, C7, 04, F0, 04, 20, 05, 4F, 05, 7F, 05, B8, 05, F2, 05, 2B, 06, 72, 06, BA, 06, 02, 07, 49, 07, 91, 07, F0, 07, 50, 08, AF, 08, 0F, 09, 6E, 09, E1, 09, 54, 0A, C6, 0A, 56, 0B, E5, 0B, 74, 0C, 04, 0D, 93, 0D, 52, 0E, 11, 0F, D0, 0F, 8F, 10, 4F, 11, 0E, 12, 2C, 13, 4B, 14, 6A, 15, 88, 16, A7, 17, C6, 18, 44, 1A, C2, 1B, 41, 1D, BF, 1E, 9D, 20, 7B, 22, 58, 24, 96, 26, D3, 28, 11, 2B, 4E, 2D, 4B, 30, 47, 33, 44, 36, 40, 39, 3D, 3C, A2, 3F, 07, 43, 6C, 46, E6, 4A, 61, 4F, + A0, A7, 0B, 00, 02, 77, 17, 1F, 1F, 1F, 0A, FF, 19, 05, + A0, A8, 38, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 23, 44, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, + A0, 98, 08, 6E, D3, 16, 80, 2A, 6E, 6E, 6E, + A0, 9E, 0C, 0F, D3, 16, 96, 00, 2C, 01, 2B, 25, 02, 00, 00 +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FB, 14, + A0, C6, 5B, 00, 00, 04, 00, 00, 00, 3C, 00, 00, 00, 20, 80, FF, 01, 00, 00, 64, 00, 00, C0, 00, 00, 00, C0, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A0, 0D, 06, 10, C9, 30, 00, 40, 00, + A0, 0D, 03, 24, 29, 07, + A0, 0D, 03, 24, 30, 07, + A0, 0D, 03, 25, 29, 01, + A0, 0D, 03, 25, 30, 01, + A0, 0D, 06, 40, 42, F0, C1, 37, CC, + A0, 0D, 06, 41, 45, 31, 12, 00, 00, + A0, 0D, 03, 42, 7C, 54, + A0, 0D, 06, 42, 8D, 00, A0, A4, 64, + A0, 0D, 06, 42, 8B, 00, A2, 23, 00, + A0, 0D, 06, 42, 89, 7F, 12, BD, 01, + A0, 0D, 06, 42, 44, 00, B0, 66, 01, + A0, 0D, 06, 42, 43, 24, 24, 4D, ED, + A0, 0D, 06, 42, 41, FD, FF, 5F, F0, + A0, 0D, 06, 42, 40, 08, 77, 33, 3A, + A0, 0D, 06, 42, 4A, 00, 00, 00, 00, + A0, 0D, 06, 42, 49, 00, 00, 00, 00, + A0, 0D, 06, 51, 40, 12, 77, 33, 3A, + A0, 0D, 06, 43, 44, 00, 34, 52, 01 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1C, + A0, 0D, 06, 43, 43, A5, 64, 4C, AD, + A0, 0D, 06, 43, 40, 05, 77, 33, 3D, + A0, 0D, 06, 43, 4A, 00, 00, 00, 00, + A0, 0D, 06, 43, 49, 00, 00, 00, 00, + A0, 0D, 06, 44, 44, 00, 34, 52, 01, + A0, 0D, 06, 44, 43, A5, 64, 4C, AD, + A0, 0D, 06, 44, 40, 05, 77, 33, 3D, + A0, 0D, 06, 44, 4A, 00, 00, 00, 00, + A0, 0D, 06, 44, 49, 00, 00, 00, 00, + A0, 0D, 06, 45, 44, 00, 34, 52, 01, + A0, 0D, 06, 45, 43, A5, 64, 4C, AD, + A0, 0D, 06, 45, 40, 05, 77, 33, 3D, + A0, 0D, 06, 45, 4A, 00, 00, 00, 00, + A0, 0D, 06, 45, 49, 00, 00, 00, 00, + A0, 0D, 06, 46, 45, 39, 12, 00, 00, + A0, 0D, 06, 46, 44, 00, 34, 52, 01, + A0, 0D, 06, 47, 43, A5, 64, 4C, ED, + A0, 0D, 06, 47, 40, 05, 77, 33, 3D, + A0, 0D, 06, 47, 4A, 20, AA, 0B, 81, + A0, 0D, 06, 47, 49, B5, 44, 22, 00, + A0, 0D, 06, 48, 43, A5, 64, 4C, AD, + A0, 0D, 06, 48, 40, 05, 77, 33, 3D, + A0, 0D, 06, 48, 4A, 00, 00, 00, 00, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 43, A5, 64, 4C, AD, + A0, 0D, 06, 49, 40, 05, 77, 33, 3D, + A0, 0D, 06, 49, 4A, 00, 00, 00, 00, + A0, 0D, 06, 49, 49, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, FA, 1C, + A0, 0D, 06, 4A, 8B, 48, 02, F0, 80, + A0, 0D, 06, 4A, 43, A5, 64, 4C, AD, + A0, 0D, 06, 4A, 40, 05, 77, 33, 3D, + A0, 0D, 06, 4A, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4B, 43, A5, 64, 4C, 6D, + A0, 0D, 06, 4C, 44, 00, 34, 52, 01, + A0, 0D, 06, 4C, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4D, 44, 00, 34, 52, 01, + A0, 0D, 06, 4D, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4E, 45, 31, 12, 00, 00, + A0, 0D, 03, 4E, 7C, 50, + A0, 0D, 06, 4E, 8D, 00, 00, 00, 06, + A0, 0D, 06, 4E, 8B, 00, A2, 24, 00, + A0, 0D, 06, 4E, 89, 7D, 84, 05, 08, + A0, 0D, 06, 4E, 44, 00, B0, 66, 01, + A0, 0D, 06, 4E, 43, A5, 64, 5C, AD, + A0, 0D, 06, 4E, 41, FD, FF, 5F, F0, + A0, 0D, 06, 4E, 40, 07, 77, 33, 3D, + A0, 0D, 06, 4F, 4A, 2A, 8E, 8D, 2A, + A0, 0D, 06, 4F, 49, 5D, 27, 27, 00, + A0, 0D, 06, 50, 4A, 00, 00, 00, 00, + A0, 0D, 06, 50, 49, 00, 00, 00, 00, + A0, 0D, 06, 52, 4A, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, FD, 1C, + A0, 0D, 06, 52, 49, 00, 00, 00, 00, + A0, 0D, 06, 53, 4A, 00, 00, 00, 00, + A0, 0D, 06, 53, 49, 00, 00, 00, 00, + A0, 0D, 06, 60, 4E, FF, FF, FF, 01, + A0, 0D, 06, 60, 4F, FF, FF, FF, 01, + A0, 0D, 06, 60, 50, FF, FF, FF, 3F, + A0, 0D, 06, 80, 7D, A0, 00, 9E, BB, + A0, 0D, 06, 80, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 80, C9, 30, 00, 00, 00, + A0, 0D, 06, 8C, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 90, 4F, FF, FF, FF, 01, + A0, 0D, 06, 90, 4E, FF, FF, FF, 01, + A0, 0D, 06, 90, 39, 3F, 00, 00, 7F, + A0, 0D, 06, 9B, A9, 84, 00, 00, 00, + A0, 0D, 06, 9B, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9B, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9B, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9B, 4E, FF, FF, FF, 01, + A0, 0D, 06, 91, D4, F8, 84, EF, 03, + A0, 0D, 06, 91, D2, 4A, 4A, 4B, 38, + A0, 0D, 06, 9C, A9, 84, 00, 00, 00, + A0, 0D, 06, 9C, A1, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 99, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 95, FF, 00, 0F, 00 +} + +NXP_RF_CONF_BLK_11={ + 20, 02, F5, 17, + A0, 0D, 06, 9C, A5, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 9D, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9C, 4F, 9F, 88, FF, 01, + A0, 0D, 06, 9C, 4E, 9F, 88, FF, 01, + A0, 0D, 06, 95, D4, F8, 84, 75, 00, + A0, 0D, 06, 95, D2, 4A, 4B, 4B, 58, + A0, 0D, 06, 9D, A9, 84, 00, 00, 00, + A0, 0D, 06, 9D, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9D, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9D, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9D, 4E, FF, FF, FF, 01, + A0, 0D, 06, 99, D4, F8, 04, E4, 01, + A0, 0D, 06, 99, D2, 4A, 4B, 4B, 48, + A0, AF, 09, 10, 5F, 00, 18, 10, 5F, 00, 18, 00, + A0, 92, 28, 37, 00, 1B, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 70, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 55, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 1F, 06, 63, 00, 42, 00, 14, 00, + A0, 9A, 02, 95, 01, + A0, 99, 0A, 03, 00, 80, 00, 00, 80, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_12={ + 20, 02, 3B, 03, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, D0, 07, 00, 0F, FF, 7F, 00, 0F, FF, 7F, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0D, 03, 61, 09, 7E, + A0, 85, 04, 58, 08, A8, AC +} + +## DLMA Enable | VDDPA 3.9 +## LMA (CLK) A+B - (CLK-LESS) A/B/F 32 - 57.7/28.2/55.3 | RSSI 0x134F | H 8A/m +## LPDET 150 | NFCLD 300 | Ratio 43 | GreenCar 600 +## Tx first entry 3/6 +NXP_RF_CONF_BLK_13={ + 20, 02, F2, 04, + A0, AF, 09, 11, 20, 00, 18, 11, 20, 00, 18, 00, + A0, 98, 08, 20, 4F, 13, 80, 18, 39, 1C, 37, + A0, 34, C8, 23, 04, 3D, 01, 04, 19, CB, 05, 00, 00, 3E, 07, 00, 00, B0, 08, 00, 00, B0, 08, 00, 00, E5, 09, 00, 00, E5, 09, 00, 00, 58, 0B, 00, 00, 58, 0B, 00, 00, E1, 0D, 00, 00, 4B, 10, 00, 00, 4B, 10, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 06, 19, B9, 00, 00, 00, 35, 01, 00, 00, CF, 01, 00, 00, 2C, 02, 00, 00, C7, 02, 00, 00, 23, 03, 00, 00, DD, 03, 00, 00, 30, 05, 00, 00, 00, 07, 00, 00, A8, 09, 00, 00, 7B, 0E, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, + A0, 9E, 0C, 07, 4F, 13, 96, 00, 2C, 01, 2B, 58, 02, 00, 00 +} +NXP_RF_CONF_BLK_14={ + 20, 02, F1, 01, + A0, A9, ED, 00, 2A, FF, 01, 24, FF, 02, 1F, FF, 03, 1A, FF, 04, 16, FF, 05, 12, FF, 06, 0F, FF, 07, 0C, FF, 08, 09, FF, 09, 07, FF, 0A, 05, FF, 0B, 03, FF, 0C, 01, FF, 0D, 00, F5, 0E, 00, DC, 0F, 00, C6, 10, 00, B3, 11, 00, A2, 12, 00, 92, 13, 00, 84, 14, 00, 77, 15, 00, 6B, 16, 00, 60, 17, 00, 57, 18, 00, 4E, 19, 00, 46, 1A, 00, 3F, 1B, 00, 39, 1C, 00, 33, 1D, 00, 2E, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A +} + + +NXP_RF_CONF_MAX_NUM=14 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3F, 05, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A1, 13, 01, 32, + A0, 80, 02, FA, 00 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x01 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-nxp-pnscr.conf b/proprietary/vendor/etc/libnfc-nxp-pnscr.conf new file mode 100644 index 0000000..fb651b5 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-nxp-pnscr.conf @@ -0,0 +1,780 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +## Modified by Motorola Mobility LLC +## Version : Cypfr.4 (2021/06/09) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +# *** RFBOARD30x20FN FW VERSION = 01.10.5B *** +NXP_RF_CONF_BLK_1={ + 20, 02, DB, 04, + A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 18, 18, 18, 18, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, FF, 07, 13, 07, 05, 13, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 03, 00, 06, 00, 0A, 00, 0D, 00, 10, 00, 14, 00, 17, 00, 1B, 00, 1E, 00, 21, 00, 25, 00, 28, 00, 2C, 00, 2F, 00, 32, 00, 36, 00, 39, 00, 3D, 00, 40, 00, 43, 00, 47, 00, 4A, 00, 4E, 00, 51, 00, 54, 00, 58, 00, 5B, 00, 5E, 00, 62, 00, 65, 00, 69, 00, 6C, 00, 6F, 00, 73, 00, 76, 00, 7A, 00, 7D, 00, 80, 00, 84, 00, 87, 00, 8B, 00, 8E, 00, 91, 00, 95, 00, 98, 00, 9C, 00, 9F, 00, A2, 00, A6, 00, A9, 00, AC, 00, B0, 00, B3, 00, B7, 00, BA, 00, BD, 00, C1, 00, C4, 00, C8, 00, CB, 00, CE, 00, D2, 00, D5, 00, + A0, A5, 0D, 3B, 3B, 3B, 3B, 3B, 3B, FF, 03, 1F, 00, 3B, 00, 00, + A0, 6A, 10, 28, 00, 28, 00, 28, 00, 28, 00, 80, 02, 80, 02, 80, 02, 80, 02 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 14, 08, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 2A, FF, 41, 24, FF, 42, 1F, FF, 43, 1A, FF, 44, 16, FF, 45, 12, FF, 46, 0F, FF, 47, 0C, FF, 07, 2A, F1, 48, 09, FF, 08, 23, F7, 49, 07, FF, 09, 1E, F7, 4A, 05, FF, 0A, 19, FA, 4B, 03, FF, 0B, 15, FA, 4C, 01, FF, 0C, 12, F5, 0D, 0F, F2, 0E, 0C, F2, 0F, 09, F5, 10, 06, FC, 11, 06, E2, 12, 02, FB, 13, 01, F0, 14, 00, E6, 15, 00, CF, 16, 00, BA, 17, 00, A7, 18, 00, 96, 19, 00, 87, 1A, 00, 79, 1B, 00, 6C, 1C, 00, 61, 1D, 00, 57, 1E, 00, 4E, 1F, 00, 46, 20, 00, 3F, 21, 00, 38, 22, 00, 32, 23, 00, 2D, 24, 00, 28, A5, 00, 48, A6, 00, 40, A7, 00, 39, A8, 00, 33, A9, 00, 2D, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, C5, 02, + A0, 0B, BB, 00, 1D, 01, 14, 6A, 2A, E8, 03, E8, 03, 06, 10, 0E, 2C, 01, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 00, 00, 00, 00, + A0, A6, 03, C0, 08, 08 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, E9, 05, + A0, AB, 82, 27, 1B, 33, 04, 42, 04, 55, 04, 75, 04, 9E, 04, C7, 04, F0, 04, 20, 05, 4F, 05, 7F, 05, B8, 05, F2, 05, 2B, 06, 72, 06, BA, 06, 02, 07, 49, 07, 91, 07, F0, 07, 50, 08, AF, 08, 0F, 09, 6E, 09, E1, 09, 54, 0A, C6, 0A, 56, 0B, E5, 0B, 74, 0C, 04, 0D, 93, 0D, 52, 0E, 11, 0F, D0, 0F, 8F, 10, 4F, 11, 0E, 12, 2C, 13, 4B, 14, 6A, 15, 88, 16, A7, 17, C6, 18, 44, 1A, C2, 1B, 41, 1D, BF, 1E, 9D, 20, 7B, 22, 58, 24, 96, 26, D3, 28, 11, 2B, 4E, 2D, 4B, 30, 47, 33, 44, 36, 40, 39, 3D, 3C, A2, 3F, 07, 43, 6C, 46, E6, 4A, 61, 4F, + A0, A7, 0B, 00, 02, 77, 17, 1F, 1F, 1F, 0A, FF, 19, 05, + A0, A8, 38, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 23, 44, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, + A0, 98, 08, 6E, D3, 16, 80, 2A, 6E, 6E, 6E, + A0, 9E, 0C, 0F, D3, 16, 96, 00, 2C, 01, 2B, 25, 02, 00, 00 +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FB, 14, + A0, C6, 5B, 00, 00, 04, 00, 00, 00, 3C, 00, 00, 00, 20, 80, FF, 01, 00, 00, 64, 00, 00, C0, 00, 00, 00, C0, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A0, 0D, 06, 10, C9, 30, 00, 40, 00, + A0, 0D, 03, 24, 29, 07, + A0, 0D, 03, 24, 30, 07, + A0, 0D, 03, 25, 29, 01, + A0, 0D, 03, 25, 30, 01, + A0, 0D, 06, 40, 42, F0, C1, 37, CC, + A0, 0D, 06, 41, 45, 31, 12, 00, 00, + A0, 0D, 03, 42, 7C, 54, + A0, 0D, 06, 42, 8D, 00, A0, A4, 64, + A0, 0D, 06, 42, 8B, 00, A2, 23, 00, + A0, 0D, 06, 42, 89, 7F, 12, BD, 01, + A0, 0D, 06, 42, 44, 00, B0, 66, 01, + A0, 0D, 06, 42, 43, 24, 24, 4D, ED, + A0, 0D, 06, 42, 41, FD, FF, 5F, F0, + A0, 0D, 06, 42, 40, 08, 77, 33, 3A, + A0, 0D, 06, 42, 4A, 00, 00, 00, 00, + A0, 0D, 06, 42, 49, 00, 00, 00, 00, + A0, 0D, 06, 51, 40, 12, 77, 33, 3A, + A0, 0D, 06, 43, 44, 00, 34, 52, 01 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1C, + A0, 0D, 06, 43, 43, A5, 64, 4C, AD, + A0, 0D, 06, 43, 40, 05, 77, 33, 3D, + A0, 0D, 06, 43, 4A, 00, 00, 00, 00, + A0, 0D, 06, 43, 49, 00, 00, 00, 00, + A0, 0D, 06, 44, 44, 00, 34, 52, 01, + A0, 0D, 06, 44, 43, A5, 64, 4C, AD, + A0, 0D, 06, 44, 40, 05, 77, 33, 3D, + A0, 0D, 06, 44, 4A, 00, 00, 00, 00, + A0, 0D, 06, 44, 49, 00, 00, 00, 00, + A0, 0D, 06, 45, 44, 00, 34, 52, 01, + A0, 0D, 06, 45, 43, A5, 64, 4C, AD, + A0, 0D, 06, 45, 40, 05, 77, 33, 3D, + A0, 0D, 06, 45, 4A, 00, 00, 00, 00, + A0, 0D, 06, 45, 49, 00, 00, 00, 00, + A0, 0D, 06, 46, 45, 39, 12, 00, 00, + A0, 0D, 06, 46, 44, 00, 34, 52, 01, + A0, 0D, 06, 47, 43, A5, 64, 4C, ED, + A0, 0D, 06, 47, 40, 05, 77, 33, 3D, + A0, 0D, 06, 47, 4A, 20, AA, 0B, 81, + A0, 0D, 06, 47, 49, B5, 44, 22, 00, + A0, 0D, 06, 48, 43, A5, 64, 4C, AD, + A0, 0D, 06, 48, 40, 05, 77, 33, 3D, + A0, 0D, 06, 48, 4A, 00, 00, 00, 00, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 43, A5, 64, 4C, AD, + A0, 0D, 06, 49, 40, 05, 77, 33, 3D, + A0, 0D, 06, 49, 4A, 00, 00, 00, 00, + A0, 0D, 06, 49, 49, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, FA, 1C, + A0, 0D, 06, 4A, 8B, 48, 02, F0, 80, + A0, 0D, 06, 4A, 43, A5, 64, 4C, AD, + A0, 0D, 06, 4A, 40, 05, 77, 33, 3D, + A0, 0D, 06, 4A, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4B, 43, A5, 64, 4C, 6D, + A0, 0D, 06, 4C, 44, 00, 34, 52, 01, + A0, 0D, 06, 4C, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4D, 44, 00, 34, 52, 01, + A0, 0D, 06, 4D, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4E, 45, 31, 12, 00, 00, + A0, 0D, 03, 4E, 7C, 50, + A0, 0D, 06, 4E, 8D, 00, 00, 00, 06, + A0, 0D, 06, 4E, 8B, 00, A2, 24, 00, + A0, 0D, 06, 4E, 89, 7D, 84, 05, 08, + A0, 0D, 06, 4E, 44, 00, B0, 66, 01, + A0, 0D, 06, 4E, 43, A5, 64, 5C, AD, + A0, 0D, 06, 4E, 41, FD, FF, 5F, F0, + A0, 0D, 06, 4E, 40, 07, 77, 33, 3D, + A0, 0D, 06, 4F, 4A, 2A, 8E, 8D, 2A, + A0, 0D, 06, 4F, 49, 5D, 27, 27, 00, + A0, 0D, 06, 50, 4A, 00, 00, 00, 00, + A0, 0D, 06, 50, 49, 00, 00, 00, 00, + A0, 0D, 06, 52, 4A, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, FD, 1C, + A0, 0D, 06, 52, 49, 00, 00, 00, 00, + A0, 0D, 06, 53, 4A, 00, 00, 00, 00, + A0, 0D, 06, 53, 49, 00, 00, 00, 00, + A0, 0D, 06, 60, 4E, FF, FF, FF, 01, + A0, 0D, 06, 60, 4F, FF, FF, FF, 01, + A0, 0D, 06, 60, 50, FF, FF, FF, 3F, + A0, 0D, 06, 80, 7D, A0, 00, 9E, BB, + A0, 0D, 06, 80, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 80, C9, 30, 00, 00, 00, + A0, 0D, 06, 8C, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 90, 4F, FF, FF, FF, 01, + A0, 0D, 06, 90, 4E, FF, FF, FF, 01, + A0, 0D, 06, 90, 39, 3F, 00, 00, 7F, + A0, 0D, 06, 9B, A9, 84, 00, 00, 00, + A0, 0D, 06, 9B, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9B, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9B, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9B, 4E, FF, FF, FF, 01, + A0, 0D, 06, 91, D4, F8, 84, EF, 03, + A0, 0D, 06, 91, D2, 4A, 4A, 4B, 38, + A0, 0D, 06, 9C, A9, 84, 00, 00, 00, + A0, 0D, 06, 9C, A1, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 99, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 95, FF, 00, 0F, 00 +} + +NXP_RF_CONF_BLK_11={ + 20, 02, F5, 17, + A0, 0D, 06, 9C, A5, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 9D, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9C, 4F, 9F, 88, FF, 01, + A0, 0D, 06, 9C, 4E, 9F, 88, FF, 01, + A0, 0D, 06, 95, D4, F8, 84, 75, 00, + A0, 0D, 06, 95, D2, 4A, 4B, 4B, 58, + A0, 0D, 06, 9D, A9, 84, 00, 00, 00, + A0, 0D, 06, 9D, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9D, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9D, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9D, 4E, FF, FF, FF, 01, + A0, 0D, 06, 99, D4, F8, 04, E4, 01, + A0, 0D, 06, 99, D2, 4A, 4B, 4B, 48, + A0, AF, 09, 10, 5F, 00, 18, 10, 5F, 00, 18, 00, + A0, 92, 28, 37, 00, 1B, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 70, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 55, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 1F, 06, 63, 00, 42, 00, 14, 00, + A0, 9A, 02, 95, 01, + A0, 99, 0A, 03, 00, 80, 00, 00, 80, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_12={ + 20, 02, 3B, 03, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, D0, 07, 00, 0F, FF, 7F, 00, 0F, FF, 7F, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0D, 03, 61, 09, 7E, + A0, 85, 04, 58, 08, A8, AC +} + +## DLMA Enable | VDDPA 3.9 +## LMA (CLK) A+B - (CLK-LESS) A/B/F 32 - 57.7/28.2/55.3 | RSSI 0x134F | H 8A/m +## LPDET 150 | NFCLD 300 | Ratio 43 | GreenCar 600 +## Tx first entry 3/6 +NXP_RF_CONF_BLK_13={ + 20, 02, F2, 04, + A0, AF, 09, 11, 20, 00, 18, 11, 20, 00, 18, 00, + A0, 98, 08, 20, 4F, 13, 80, 18, 39, 1C, 37, + A0, 34, C8, 23, 04, 3D, 01, 04, 19, CB, 05, 00, 00, 3E, 07, 00, 00, B0, 08, 00, 00, B0, 08, 00, 00, E5, 09, 00, 00, E5, 09, 00, 00, 58, 0B, 00, 00, 58, 0B, 00, 00, E1, 0D, 00, 00, 4B, 10, 00, 00, 4B, 10, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 06, 19, B9, 00, 00, 00, 35, 01, 00, 00, CF, 01, 00, 00, 2C, 02, 00, 00, C7, 02, 00, 00, 23, 03, 00, 00, DD, 03, 00, 00, 30, 05, 00, 00, 00, 07, 00, 00, A8, 09, 00, 00, 7B, 0E, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, + A0, 9E, 0C, 07, 4F, 13, 96, 00, 2C, 01, 2B, 58, 02, 00, 00 +} +NXP_RF_CONF_BLK_14={ + 20, 02, F1, 01, + A0, A9, ED, 00, 2A, FF, 01, 24, FF, 02, 1F, FF, 03, 1A, FF, 04, 16, FF, 05, 12, FF, 06, 0F, FF, 07, 0C, FF, 08, 09, FF, 09, 07, FF, 0A, 05, FF, 0B, 03, FF, 0C, 01, FF, 0D, 00, F5, 0E, 00, DC, 0F, 00, C6, 10, 00, B3, 11, 00, A2, 12, 00, 92, 13, 00, 84, 14, 00, 77, 15, 00, 6B, 16, 00, 60, 17, 00, 57, 18, 00, 4E, 19, 00, 46, 1A, 00, 3F, 1B, 00, 39, 1C, 00, 33, 1D, 00, 2E, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A +} + + +NXP_RF_CONF_MAX_NUM=14 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3F, 05, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A1, 13, 01, 32, + A0, 80, 02, FA, 00 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x01 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-qrd-SN100.conf b/proprietary/vendor/etc/libnfc-qrd-SN100.conf new file mode 100644 index 0000000..6054e76 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-qrd-SN100.conf @@ -0,0 +1,592 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} +NXP_EXT_TVDD_CFG_2={20, 02, 30, 01, A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 0F, 0F, 0F, 0F, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, 20, 07, 13, 07, 05, 13} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_1={ +#} + +############################################################################### +# By default, the LPCD shall be enabled. +# Please check the platform specific configuration and enable it. +# NXP_RF_CONF_BLK_1={ +# 20, 02, 2E, 01, +# A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, +# 83, 04, +# 00, +# C0, 00, C0, 00, +# 00, 01, 00, 01, +# A0, 00, A0, 00, +# 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, +# 05, +# 7F, 00, +# 00, 01,00, 03 +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_2={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_3={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_4={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_5={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_6={ +#} + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3A, 04, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0A, 01, 20 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x39 + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x00 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x00 +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# diff --git a/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf b/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf new file mode 100644 index 0000000..6054e76 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf @@ -0,0 +1,592 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} +NXP_EXT_TVDD_CFG_2={20, 02, 30, 01, A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 0F, 0F, 0F, 0F, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, 20, 07, 13, 07, 05, 13} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_1={ +#} + +############################################################################### +# By default, the LPCD shall be enabled. +# Please check the platform specific configuration and enable it. +# NXP_RF_CONF_BLK_1={ +# 20, 02, 2E, 01, +# A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, +# 83, 04, +# 00, +# C0, 00, C0, 00, +# 00, 01, 00, 01, +# A0, 00, A0, 00, +# 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, +# 05, +# 7F, 00, +# 00, 01,00, 03 +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_2={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_3={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_4={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_5={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_6={ +#} + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3A, 04, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0A, 01, 20 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x39 + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x00 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x00 +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# diff --git a/proprietary/vendor/etc/libnfc-sec-nci.conf b/proprietary/vendor/etc/libnfc-sec-nci.conf new file mode 100644 index 0000000..fd61cfc --- /dev/null +++ b/proprietary/vendor/etc/libnfc-sec-nci.conf @@ -0,0 +1,93 @@ +########################## Start of libnfc-nci.conf ########################### +############################################################################### +# Application options +NFC_DEBUG_ENABLED=0 + +############################################################################### +# File used for NFA storage +NFA_STORAGE="/data/nfc" +PRESERVE_STORAGE=0x01 + +# Force tag polling for the following technology(s). +# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h. +# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | +# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 | +# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO | +# NFA_TECHNOLOGY_MASK_ACTIVE +# +# Notable bits: +# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */ +# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */ +# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */ +# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */ +# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */ +# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */ +POLLING_TECH_MASK=0x6F + +############################################################################### +# Force P2P to only listen for the following technology(s). +# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h. +# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F | +# NFA_TECHNOLOGY_MASK_ACTIVE +# +# Notable bits: +# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */ +# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */ +# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */ +P2P_LISTEN_TECH_MASK=0x44 + +UICC_LISTEN_TECH_MASK=0x07 + +HOST_LISTEN_TECH_MASK=0x07 + + +#NFA_DM_CFG + +############################################################################### +# When screen is turned off, specify the desired power state of the controller. +# 0: power-off-sleep state; DEFAULT +# 1: full-power state +# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used) +SCREEN_OFF_POWER_STATE=1 +############################################################################### + +############################################################################### +# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h. +# The value is set assumeing discovery of 0x00(Host), 0xC0(Ese) and 0x80(UICC). +# If a platform will exclude and SE, this value can be reduced so that the stack +# will not wait any longer than necessary. +# Maximum EE supported number +NFA_MAX_EE_SUPPORTED=3 + +############################################################################### +# Default poll duration (in ms) +# The defualt is 500ms if not set (see nfc_target.h) +NFA_DM_DISC_DURATION_POLL=800 + +#POLL_FREQUENCY + +NFA_AID_BLOCK_ROUTE=1 + +#AID_FOR_EMPTY_SELECT + +############################################################################### +# Enable/Disable Block Route feature. +# Block Route will restrict routing to first matched rule +# Block Route enable 0x01 +# Block Route disable 0x00 +#NFA_BLOCK_ROUTE=0x00 + +############################################################################### +# AID_MATCHING constants +# AID_MATCHING_EXACT_ONLY 0x00 +# AID_MATCHING_EXACT_OR_PREFIX 0x01 +# AID_MATCHING_PREFIX_ONLY 0x02 +# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03 +AID_MATCHING_MODE=0 + +############################################################################### +# AID Route power state for OffHost +OFFHOST_AID_ROUTE_PWR_STATE=0x3B +############################################################################### + +LEGACY_MIFARE_READER=1 diff --git a/proprietary/vendor/etc/libnfc-sec-vendor.conf b/proprietary/vendor/etc/libnfc-sec-vendor.conf new file mode 100644 index 0000000..ce6e90e --- /dev/null +++ b/proprietary/vendor/etc/libnfc-sec-vendor.conf @@ -0,0 +1,44 @@ +#Target: SN4V +#MOTO: bangkk V1 20230314 + +#Vendor common +NFA_POLL_BAIL_OUT_MODE=0 +PRESENCE_CHECK_ALGORITHM=5 +NFA_PROPRIETARY_CFG={00, 81, 82, 80, 8A, 80, 70, 74, F4} + +DEFAULT_OFFHOST_ROUTE=0x83 +OFFHOST_ROUTE_ESE={82} +OFFHOST_ROUTE_UICC={83} +DEFAULT_NFCF_ROUTE=0x83 + +DEFAULT_SYS_CODE={FE:FF} +DEFAULT_ROUTE=0x83 +OFF_HOST_SIM_PIPE_ID=0x06 +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +DEFAULT_ISODEP_ROUTE=0x83 + +#LSI +DEFAULT_SIMSLOT=1 +FW_CFG_CLK_SPEED=0x11 +FW_BASE_ADDRESS=0x2000 +WAKEUP_DELAY=20 +FW_DIR_PATH="/vendor/firmware/" +FW_FILE_NAME="sec_s3nrn4v_firmware.bin" +RF_HW_DIR_PATH="/vendor/etc/" +RF_HW_FILE_NAME="sec_s3nrn4v_hwreg.bin" +RF_SW_DIR_PATH="/vendor/etc/" +RF_SW_FILE_NAME="sec_s3nrn4v_swreg.bin" +POWER_DRIVER="/dev/sec-nfc" +TRANS_DRIVER="/dev/sec-nfc" +TRACE_LEVEL=0 +DATA_TRACE=0 +SLEEP_TIMEOUT=1000 +FW_UPDATE_MODE=0 + +# Cold reset +ESE_DELAY=0x7D0 +CP_TRIGGER_TYPE=1 +CP_DEFAULT_TYPE=1 +COLDRESET_SUPPORT=1 +AP_COLDRESET_ENABLE=1 +CP_COLDRESET_ENABLE=1 diff --git a/proprietary/vendor/etc/nfc_calibration.txt b/proprietary/vendor/etc/nfc_calibration.txt new file mode 100644 index 0000000..599dfc3 --- /dev/null +++ b/proprietary/vendor/etc/nfc_calibration.txt @@ -0,0 +1,80 @@ +# ---------------------------------------------- +# Test name: SN1X0_SPC +# Description: runs SPC +# Revision: 2.00 +# Date: 27/07/2020 +# Tool rev: 1.12 or later +# ---------------------------------------------- + +version +interval 200 +reset 1 + +#// NCI CORE RESET CMD +send 20000100 +receive + +#// NCI CORE INIT CMD +send 2001020000 + +#// NCI CORE SETCONFIG CMD: +send 20020401850101 + +#// NCI SYSTEM ENABLE PROPRIETARY CMD +send 2F0200 + +#// READ OFFSET BEFORE SPC +send 20030301A017 + +#//SET Normal Polling +send 20022E01A0682A064060031900000000030400C009C00900010001A000A00003FA0000004C0014007D00057F0000010003 + +#// SET SPC 1RST STEP (SPC CALIBRATION) +#//send 2F3D0F3000E02E3251000000001D0000121F +#// COPY SPC CMD (2F3D0F3XXXXX) HERE +#//send 2F3D0F3000E02E3251760A28A27D0000121F +send 2F3D0F3000E02E3251A40C2EAA7D0000121F +#// send 2F3D0XXXXXXXXXXX + +#// SPC CMD [PLL sweep] input clock 19.2MHz +send 2F3D7E3001C08C0466C08C0366C08C0266C08C0166C08C0066008D0466008D0366008D0266008D0166008D0066408D0466408D0366408D0266408D0166408D0066808D0466808D0366808D0266808D0166808D0066C08D0466C08D0366C08D0266C08D0166C08D0066008E0466008E0366008E0266008E0166008E0066408E0466 +sleep 100 +send 2F3D7E3002408E0366408E0266408E0166408E0066808E0466808E0366808E0266808E0166808E0066C08E0466C08E0366C08E0266C08E0166C08E0066008F0466008F0366008F0266008F0166008F0066408F0466408F0366408F0266408F0166408F0066808F0466808F0366808F0266808F0166808F0066C08F0466C08F0366 +sleep 100 +send 2F3D4E3003C08F0266C08F0166C08F0066009004660090036600900266009001660090006640900466409003664090026640900166409000668090046680900366809002668090016680900066C0900466 +sleep 100 + +#// SPC CMD [PLL sweep] input clock 26MHz +#//send 2F3D7E300142A5046642A5016682A5036682A50066C2A5026602A6046602A6016642A6036642A6006682A60266C2A60466C2A6016602A7036602A7006642A7026682A7046682A70166C2A70366C2A7006602A8026642A8046642A8016682A8036682A80066C2A8026602A9046602A9016642A9036642A9006682A90266C2A90466 +#//sleep 100 +#//send 2F3D7E3002C2A9016602AA036602AA006642AA026682AA046682AA0166C2AA0366C2AA006602AB026642AB046642AB016682AB036682AB0066C2AB026602AC046602AC016642AC036642AC006682AC0266C2AC0466C2AC016602AD036602AD006642AD026682AD046682AD0166C2AD0366C2AD006602AE026642AE046642AE0166 +#//sleep 100 +#//send 2F3D4E300382AE036682AE0066C2AE026602AF046602AF016642AF036642AF006682AF0266C2AF0466C2AF016602B0036602B0006642B0026682B0046682B00166C2B00366C2B0006602B1026642B10466 +#//sleep 100 + +#// SPC CMD [PLL sweep] input clock 27.12MHz +#//send 2F3D7E300142A3006682A30266C2A30466C2A3016602A4036602A4006642A4026682A4046682A40166C2A40366C2A4006602A5026642A5046642A5016682A5036682A50066C2A5026602A6046602A6016642A6036642A6006682A60266C2A60466C2A6016602A7036602A7006642A7026682A7046682A70166C2A70366C2A70066 +#//sleep 100 +#//send 2F3D7E300202A8026642A8046642A8016682A8036682A80066C2A8026602A9046602A9016642A9036642A9006682A90266C2A90466C2A9016602AA036602AA006642AA026682AA046682AA0166C2AA0366C2AA006602AB026642AB046642AB016682AB036682AB0066C2AB026602AC046602AC016642AC036642AC006682AC0266 +#//sleep 100 +#//send 2F3D4E3003C2AC0466C2AC016602AD036602AD006642AD026682AD046682AD0166C2AD0366C2AD006602AE026642AE046642AE016682AE036682AE0066C2AE026602AF046602AF016642AF036642AF0066 +#//sleep 100 + +#// SPC CMD [PLL sweep] input clock 38.4MHz +#//send 2F3D7E3001C18C0466C18C0366C18C0266C18C0166C18C0066018D0466018D0366018D0266018D0166018D0066418D0466418D0366418D0266418D0166418D0066818D0466818D0366818D0266818D0166818D0066C18D0466C18D0366C18D0266C18D0166C18D0066018E0466018E0366018E0266018E0166018E0066418E0466 +#//sleep 100 +#//send 2F3D7E3002418E0366418E0266418E0166418E0066818E0466818E0366818E0266818E0166818E0066C18E0466C18E0366C18E0266C18E0166C18E0066018F0466018F0366018F0266018F0166018F0066418F0466418F0366418F0266418F0166418F0066818F0466818F0366818F0266818F0166818F0066C18F0466C18F0366 +#//sleep 100 +#//send 2F3D4E3003C18F0266C18F0166C18F0066019004660190036601900266019001660190006641900466419003664190026641900166419000668190046681900366819002668190016681900066C1900466 +#//sleep 100 + +#// SPC START +send 2F3D0131 + +trigger 6F3D07 + +#//SET LPCD +send 20022E01A0682A064060031900000000820400C005C00900010001A000A00003FA0000004C0014007D00057F0000010003 + +#// READ OFFSET AFTER SPC +send 20030301A017 diff --git a/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_csot_1080p_dsc_655.xml b/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_csot_1080p_dsc_655.xml new file mode 100644 index 0000000..38d7f7a --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_csot_1080p_dsc_655.xml @@ -0,0 +1,34 @@ + + + + + + 000000000000000000000000000000009DF0EDF18293E83F5EDA1ED455CCCD3F0375577922ACA13FE9E6E632957D2FBF1BC017C72ACEF5BE04C69B55DFCADEBE8FFA954FAD4AF9BE8190D742B070FE3E1F5E1905D47D1B3F77D48C4D1F10433E00000000000000003768743FFF3BA83FC55603233A50EF3F6DA01856BEFF903FE9F56EA3773FF5BEB365FF17739D3CBFE22DE19B30B7CB3E2D614A2B0271E33EAA24353F65762C3FCF204D4AF29BD13E0D2BE3F352418C3E00000000000000006178172EEE1A973F8EFA35476400B63F4F57E206F787ED3F215F31168B60ECBE5AD60FD114BDCC3EFC0FA0D90AC331BF82821EEA7BC293BE6CCD9EAB5A6D1C3FE2E32775E270123F4ACA331FEF504FBE + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002B0000003B00000047000000510000005A00000061000000680000006F000000750000007B00000080000000850000008A0000008F00000094000000980000009C000000A0000000A4000000A8000000AC000000B0000000B3000000B7000000BA000000BE000000C1000000C4000000C7000000CA000000CD000000D0000000D3000000D6000000D9000000DC000000DF000000E1000000E4000000E7000000E9000000EC000000EE000000F1000000F3000000F6000000F8000000FB000000FD000000FF000000020100000401000006010000080100000B0100000D0100000F010000110100001301000015010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002B0100002D0100002F01000031010000330100003501000037010000390100003A0100003C0100003E0100004001000042010000430100004501000047010000480100004A0100004C0100004E0100004F0100005101000053010000540100005601000057010000590100005B0100005C0100005E010000600100006101000063010000640100006601000067010000690100006A0100006C0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000800100008201000083010000850100008601000087010000890100008A0100008C0100008D0100008E01000090010000910100009201000094010000950100009601000098010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A3010000A5010000A6010000A7010000A9010000AA010000AB010000AC010000AE010000AF010000B0010000B1010000B2010000B4010000B5010000B6010000B7010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CB010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F02000010020000110200001202000013020000140200001502000016020000170200001802000018020000190200001A0200001B0200001C0200001D0200001E0200001F02000020020000210200002202000023020000240200002502000026020000270200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F02000030020000310200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F0200004002000041020000410200004202000043020000440200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004D0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000058020000590200005A0200005B0200005C0200005D0200005D0200005E0200005F0200006002000061020000620200006202000063020000640200006502000066020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006E0200006F020000700200007102000072020000720200007302000074020000750200007602000076020000770200007802000079020000790200007A0200007B0200007C0200007D0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008A0200008B0200008C0200008D0200008D0200008E0200008F02000090020000900200009102000092020000930200009302000094020000950200009602000096020000970200009802000099020000990200009A0200009B0200009B0200009C0200009D0200009E0200009E0200009F020000A0020000A1020000A1020000A2020000A3020000A3020000A4020000A5020000A6020000A6020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BC020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CD020000CD020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DE020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000E9020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F2020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FC020000FD020000FE020000FE020000FF02000000030000000300000103000001030000020300000303000003030000040300000503000005030000060300000603000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F0300000F030000100300001103000011030000120300001203000013030000140300001403000015030000150300001603000017030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002403000025030000250300002603000027030000270300002803000028030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000033030000340300003503000035030000360300003603000037030000370300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F0300004003000040030000410300004203000042030000430300004303000044030000440300004503000045030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F0300005003000051030000510300005203000052030000530300005303000054030000540300005503000055030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005D0300005D0300005E0300005E0300005F0300005F030000600300006003000061030000610300006203000062030000630300006403000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007303000074030000740300007503000075030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000082030000830300008303000084030000840300008503000085030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009103000091030000920300009203000093030000930300009403000094030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C8030000C9030000C9030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E6030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EF030000EF030000000000002900000039000000440000004D000000560000005D000000640000006A00000070000000750000007B0000008000000084000000890000008D0000009100000096000000990000009D000000A1000000A5000000A8000000AC000000AF000000B2000000B5000000B9000000BC000000BF000000C2000000C4000000C7000000CA000000CD000000D0000000D2000000D5000000D8000000DA000000DD000000DF000000E2000000E4000000E6000000E9000000EB000000ED000000F0000000F2000000F4000000F6000000F9000000FB000000FD000000FF00000001010000030100000501000007010000090100000B0100000D0100000F01000011010000130100001501000017010000190100001B0100001D0100001E0100002001000022010000240100002601000027010000290100002B0100002D0100002E0100003001000032010000330100003501000037010000380100003A0100003C0100003D0100003F0100004101000042010000440100004501000047010000480100004A0100004C0100004D0100004F010000500100005201000053010000550100005601000058010000590100005B0100005C0100005D0100005F010000600100006201000063010000650100006601000067010000690100006A0100006B0100006D0100006E01000070010000710100007201000074010000750100007601000078010000790100007A0100007C0100007D0100007E0100007F010000810100008201000083010000850100008601000087010000880100008A0100008B0100008C0100008D0100008F01000090010000910100009201000094010000950100009601000097010000980100009A0100009B0100009C0100009D0100009E0100009F010000A1010000A2010000A3010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FB010000FC010000FD010000FE010000FF01000000020000010200000202000003020000040200000502000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000E0200000F02000010020000110200001202000013020000140200001502000015020000160200001702000018020000190200001A0200001B0200001B0200001C0200001D0200001E0200001F0200002002000021020000210200002202000023020000240200002502000026020000260200002702000028020000290200002A0200002B0200002B0200002C0200002D0200002E0200002F020000300200003002000031020000320200003302000034020000340200003502000036020000370200003802000039020000390200003A0200003B0200003C0200003D0200003D0200003E0200003F020000400200004002000041020000420200004302000044020000440200004502000046020000470200004802000048020000490200004A0200004B0200004B0200004C0200004D0200004E0200004F0200004F020000500200005102000052020000520200005302000054020000550200005502000056020000570200005802000058020000590200005A0200005B0200005B0200005C0200005D0200005E0200005E0200005F02000060020000610200006102000062020000630200006402000064020000650200006602000067020000670200006802000069020000690200006A0200006B0200006C0200006C0200006D0200006E0200006F0200006F02000070020000710200007102000072020000730200007402000074020000750200007602000076020000770200007802000079020000790200007A0200007B0200007B0200007C0200007D0200007E0200007E0200007F0200008002000080020000810200008202000082020000830200008402000084020000850200008602000087020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F02000090020000910200009102000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A0020000A1020000A1020000A2020000A3020000A3020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C1020000C2020000C3020000C3020000C4020000C5020000C5020000C6020000C6020000C7020000C8020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000FF0200000003000000030000010300000203000002030000030300000303000004030000040300000503000006030000060300000703000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000011030000110300001203000012030000130300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F030000200300002003000021030000210300002203000022030000230300002303000024030000240300002503000026030000260300002703000027030000280300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F03000030030000300300003103000031030000320300003203000033030000330300003403000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003F0300003F03000040030000400300004103000041030000420300004203000043030000430300004403000044030000450300004503000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005D0300005E0300005E0300005F0300005F03000060030000600300006103000061030000620300006203000063030000630300006403000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F0300007003000070030000710300007103000072030000720300007303000073030000740300007403000075030000750300007603000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000090030000910300009103000092030000920300009303000093030000940300009403000095030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C2030000C3030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000400000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + FE06000000000000000000000000000000000000000000000000000000000000000000000000000003000000000030C100000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F00000000000000005A0000000A000000010000005A0000000A000000010000001E0000001E0000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 000000000000000000000000000000006309C4C7D8AAED3FB3D5F1A388DAB03FE2827C1A076BA13F4FFD5B6146CF36BFB6654A121C7500BFBEDE55A88250C8BEEB59937ECF65193F592EC93D17B7DE3E00F94A48EF2B223F2DED6BE1E85B5D3E0000000000000000FEEC60B24A3A923FC3D2F631181FF03F673426C037DC933FEF12DBB82E70FEBE0C67267B2A1240BFF48B3FA43435C33E12898B8159BD053F0BC9B8D11E582C3F8F03B66B0091D8BED1D6F1F3F187973E0000000000000000510F836668EE753F7D9BE1C3054F863F1417F5015F3CF03F4B87D6469F28F4BE6DE2AB791641CDBE88CFBF3B58CC35BF088F48F62202C4BE03AC82F41A7D243FE4C327CCB7FD193FD6A76C538621303E + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002B0000003B00000047000000510000005A00000061000000680000006F000000750000007B00000080000000850000008A0000008F00000094000000980000009C000000A0000000A4000000A8000000AC000000B0000000B3000000B7000000BA000000BE000000C1000000C4000000C7000000CA000000CD000000D0000000D3000000D6000000D9000000DC000000DF000000E1000000E4000000E7000000E9000000EC000000EE000000F1000000F3000000F6000000F8000000FB000000FD000000FF000000020100000401000006010000080100000B0100000D0100000F010000110100001301000015010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002B0100002D0100002F01000031010000330100003501000037010000390100003A0100003C0100003E0100004001000042010000430100004501000047010000480100004A0100004C0100004E0100004F0100005101000053010000540100005601000057010000590100005B0100005C0100005E010000600100006101000063010000640100006601000067010000690100006A0100006C0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000800100008201000083010000850100008601000087010000890100008A0100008C0100008D0100008E01000090010000910100009201000094010000950100009601000098010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A3010000A5010000A6010000A7010000A9010000AA010000AB010000AC010000AE010000AF010000B0010000B1010000B2010000B4010000B5010000B6010000B7010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CB010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F02000010020000110200001202000013020000140200001502000016020000170200001802000018020000190200001A0200001B0200001C0200001D0200001E0200001F02000020020000210200002202000023020000240200002502000026020000270200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F02000030020000310200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F0200004002000041020000410200004202000043020000440200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004D0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000058020000590200005A0200005B0200005C0200005D0200005D0200005E0200005F0200006002000061020000620200006202000063020000640200006502000066020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006E0200006F020000700200007102000072020000720200007302000074020000750200007602000076020000770200007802000079020000790200007A0200007B0200007C0200007D0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008A0200008B0200008C0200008D0200008D0200008E0200008F02000090020000900200009102000092020000930200009302000094020000950200009602000096020000970200009802000099020000990200009A0200009B0200009B0200009C0200009D0200009E0200009E0200009F020000A0020000A1020000A1020000A2020000A3020000A3020000A4020000A5020000A6020000A6020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BC020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CD020000CD020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DE020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000E9020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F2020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FC020000FD020000FE020000FE020000FF02000000030000000300000103000001030000020300000303000003030000040300000503000005030000060300000603000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F0300000F030000100300001103000011030000120300001203000013030000140300001403000015030000150300001603000017030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002403000025030000250300002603000027030000270300002803000028030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000033030000340300003503000035030000360300003603000037030000370300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F0300004003000040030000410300004203000042030000430300004303000044030000440300004503000045030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F0300005003000051030000510300005203000052030000530300005303000054030000540300005503000055030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005D0300005D0300005E0300005E0300005F0300005F030000600300006003000061030000610300006203000062030000630300006403000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007303000074030000740300007503000075030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000082030000830300008303000084030000840300008503000085030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009103000091030000920300009203000093030000930300009403000094030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C8030000C9030000C9030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E6030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EF030000EF030000000000002900000039000000440000004D000000560000005D000000640000006A00000070000000750000007B0000008000000084000000890000008D0000009100000096000000990000009D000000A1000000A5000000A8000000AC000000AF000000B2000000B5000000B9000000BC000000BF000000C2000000C4000000C7000000CA000000CD000000D0000000D2000000D5000000D8000000DA000000DD000000DF000000E2000000E4000000E6000000E9000000EB000000ED000000F0000000F2000000F4000000F6000000F9000000FB000000FD000000FF00000001010000030100000501000007010000090100000B0100000D0100000F01000011010000130100001501000017010000190100001B0100001D0100001E0100002001000022010000240100002601000027010000290100002B0100002D0100002E0100003001000032010000330100003501000037010000380100003A0100003C0100003D0100003F0100004101000042010000440100004501000047010000480100004A0100004C0100004D0100004F010000500100005201000053010000550100005601000058010000590100005B0100005C0100005D0100005F010000600100006201000063010000650100006601000067010000690100006A0100006B0100006D0100006E01000070010000710100007201000074010000750100007601000078010000790100007A0100007C0100007D0100007E0100007F010000810100008201000083010000850100008601000087010000880100008A0100008B0100008C0100008D0100008F01000090010000910100009201000094010000950100009601000097010000980100009A0100009B0100009C0100009D0100009E0100009F010000A1010000A2010000A3010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FB010000FC010000FD010000FE010000FF01000000020000010200000202000003020000040200000502000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000E0200000F02000010020000110200001202000013020000140200001502000015020000160200001702000018020000190200001A0200001B0200001B0200001C0200001D0200001E0200001F0200002002000021020000210200002202000023020000240200002502000026020000260200002702000028020000290200002A0200002B0200002B0200002C0200002D0200002E0200002F020000300200003002000031020000320200003302000034020000340200003502000036020000370200003802000039020000390200003A0200003B0200003C0200003D0200003D0200003E0200003F020000400200004002000041020000420200004302000044020000440200004502000046020000470200004802000048020000490200004A0200004B0200004B0200004C0200004D0200004E0200004F0200004F020000500200005102000052020000520200005302000054020000550200005502000056020000570200005802000058020000590200005A0200005B0200005B0200005C0200005D0200005E0200005E0200005F02000060020000610200006102000062020000630200006402000064020000650200006602000067020000670200006802000069020000690200006A0200006B0200006C0200006C0200006D0200006E0200006F0200006F02000070020000710200007102000072020000730200007402000074020000750200007602000076020000770200007802000079020000790200007A0200007B0200007B0200007C0200007D0200007E0200007E0200007F0200008002000080020000810200008202000082020000830200008402000084020000850200008602000087020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F02000090020000910200009102000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A0020000A1020000A1020000A2020000A3020000A3020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C1020000C2020000C3020000C3020000C4020000C5020000C5020000C6020000C6020000C7020000C8020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000FF0200000003000000030000010300000203000002030000030300000303000004030000040300000503000006030000060300000703000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000011030000110300001203000012030000130300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F030000200300002003000021030000210300002203000022030000230300002303000024030000240300002503000026030000260300002703000027030000280300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F03000030030000300300003103000031030000320300003203000033030000330300003403000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003F0300003F03000040030000400300004103000041030000420300004203000043030000430300004403000044030000450300004503000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005D0300005E0300005E0300005F0300005F03000060030000600300006103000061030000620300006203000063030000630300006403000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F0300007003000070030000710300007103000072030000720300007303000073030000740300007403000075030000750300007603000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000090030000910300009103000092030000920300009303000093030000940300009403000095030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C2030000C3030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_1080p_dsc_655.xml b/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_1080p_dsc_655.xml new file mode 100644 index 0000000..536a182 --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_1080p_dsc_655.xml @@ -0,0 +1,34 @@ + + + + + + 000000000000000000000000000000000E01ED4D3414E93FFFE52FD70A2BCD3FD2F556D9FA1AA53F9E43A730C71132BFFC3598FFA92101BFA9CA0A302B040CBFC3E2E81D6B0306BF8B94FF5114D1FB3E7F2C013AC834243FB9F3B9750B745D3E0000000000000000500182678939A63F6C90BE395818EF3FEB0822CA5265A33FAD6DF13739E4F7BE788F2FE99C4140BFEA186CE436B809BF2566B9ABD2B6153F627EFFF3D76E303F415B6DBC2434ACBE24A81704054D773E00000000000000006CF2737E0E199F3FD4631E8525F0B53FDC7DCD777A7CED3F3F06D789E5A901BF78CFC814DAE0DE3E30BBC2B5331333BFDBE634D22321E5BE5E20E7757935183F3B3251CBB3E8163F1BB468D58E2E553E + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002B0000003B00000047000000510000005900000061000000680000006F000000750000007A00000080000000850000008A0000008F00000093000000980000009C000000A0000000A4000000A8000000AB000000AF000000B3000000B6000000BA000000BD000000C0000000C3000000C7000000CA000000CD000000D0000000D3000000D5000000D8000000DB000000DE000000E1000000E3000000E6000000E8000000EB000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FE000000010100000301000005010000070100000A0100000C0100000E01000010010000120100001401000016010000180100001B0100001D0100001F01000021010000230100002401000026010000280100002A0100002C0100002E0100003001000032010000340100003501000037010000390100003B0100003D0100003E0100004001000042010000440100004501000047010000490100004B0100004C0100004E010000500100005101000053010000540100005601000058010000590100005B0100005D0100005E010000600100006101000063010000640100006601000067010000690100006A0100006C0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000800100008201000083010000850100008601000087010000890100008A0100008B0100008D0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009B0100009D0100009E0100009F010000A1010000A2010000A3010000A4010000A6010000A7010000A8010000A9010000AB010000AC010000AD010000AE010000B0010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BA010000BC010000BD010000BE010000BF010000C0010000C1010000C3010000C4010000C5010000C6010000C7010000C8010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F02000010020000110200001202000013020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F02000020020000210200002202000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002D0200002E0200002F02000030020000310200003202000033020000340200003502000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003D0200003E0200003F0200004002000041020000420200004302000043020000440200004502000046020000470200004802000049020000490200004A0200004B0200004C0200004D0200004E0200004F0200004F0200005002000051020000520200005302000054020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005D0200005E0200005F0200006002000061020000620200006202000063020000640200006502000066020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006E0200006F020000700200007102000071020000720200007302000074020000750200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F0200007F020000800200008102000082020000820200008302000084020000850200008502000086020000870200008802000089020000890200008A0200008B0200008C0200008C0200008D0200008E0200008E0200008F020000900200009102000091020000920200009302000094020000940200009502000096020000970200009702000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A1020000A2020000A3020000A4020000A4020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C8020000C8020000C9020000CA020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D2020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D8020000D8020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DE020000DE020000DF020000DF020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E7020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F8020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF02000000030000000300000103000001030000020300000303000003030000040300000403000005030000060300000603000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F0300000F03000010030000110300001103000012030000120300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001B0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F03000020030000210300002103000022030000220300002303000023030000240300002503000025030000260300002603000027030000270300002803000029030000290300002A0300002A0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300003003000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000370300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003D0300003D0300003E0300003E0300003F0300003F0300004003000040030000410300004203000042030000430300004303000044030000440300004503000045030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F0300005003000050030000510300005203000052030000530300005303000054030000540300005503000055030000560300005603000057030000570300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F030000600300006003000061030000610300006203000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F03000080030000800300008103000081030000820300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F0300009003000090030000910300009103000092030000920300009303000093030000940300009403000095030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E2030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E6030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EA030000EB030000000000002900000039000000440000004E000000560000005E000000640000006B00000070000000760000007B0000008000000085000000890000008E00000092000000960000009A0000009E000000A2000000A5000000A9000000AC000000B0000000B3000000B6000000B9000000BC000000BF000000C2000000C5000000C8000000CB000000CE000000D0000000D3000000D6000000D8000000DB000000DE000000E0000000E2000000E5000000E7000000EA000000EC000000EE000000F1000000F3000000F5000000F7000000FA000000FC000000FE00000000010000020100000401000006010000080100000A0100000C0100000E01000010010000120100001401000016010000180100001A0100001C0100001E0100002001000021010000230100002501000027010000290100002A0100002C0100002E0100003001000031010000330100003501000036010000380100003A0100003B0100003D0100003F0100004001000042010000430100004501000047010000480100004A0100004B0100004D0100004E010000500100005201000053010000550100005601000058010000590100005A0100005C0100005D0100005F010000600100006201000063010000650100006601000067010000690100006A0100006C0100006D0100006E01000070010000710100007201000074010000750100007701000078010000790100007B0100007C0100007D0100007E01000080010000810100008201000084010000850100008601000088010000890100008A0100008B0100008D0100008E0100008F01000090010000920100009301000094010000950100009601000098010000990100009A0100009B0100009C0100009E0100009F010000A0010000A1010000A2010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FE010000FF01000000020000010200000202000003020000040200000502000006020000070200000802000009020000090200000A0200000B0200000C0200000D0200000E0200000F0200001002000011020000110200001202000013020000140200001502000016020000170200001802000019020000190200001A0200001B0200001C0200001D0200001E0200001F0200001F02000020020000210200002202000023020000240200002502000025020000260200002702000028020000290200002A0200002A0200002B0200002C0200002D0200002E0200002F0200002F0200003002000031020000320200003302000034020000340200003502000036020000370200003802000038020000390200003A0200003B0200003C0200003C0200003D0200003E0200003F020000400200004102000041020000420200004302000044020000440200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200004F020000500200005102000052020000530200005302000054020000550200005602000056020000570200005802000059020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F0200005F020000600200006102000062020000620200006302000064020000650200006502000066020000670200006802000068020000690200006A0200006B0200006B0200006C0200006D0200006E0200006E0200006F02000070020000700200007102000072020000730200007302000074020000750200007502000076020000770200007802000078020000790200007A0200007B0200007B0200007C0200007D0200007D0200007E0200007F0200007F02000080020000810200008202000082020000830200008402000084020000850200008602000086020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F02000090020000910200009202000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A0020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A6020000A6020000A7020000A8020000A8020000A9020000AA020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AF020000AF020000B0020000B1020000B1020000B2020000B3020000B3020000B4020000B5020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BA020000BB020000BC020000BC020000BD020000BD020000BE020000BF020000BF020000C0020000C1020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000ED020000EE020000EF020000EF020000F0020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FC020000FD020000FD020000FE020000FF020000FF0200000003000000030000010300000103000002030000030300000303000004030000040300000503000005030000060300000703000007030000080300000803000009030000090300000A0300000A0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000011030000110300001203000012030000130300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F0300001F030000200300002003000021030000210300002203000022030000230300002403000024030000250300002503000026030000260300002703000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300002F030000300300003003000031030000310300003203000032030000330300003303000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F030000400300004003000041030000410300004203000042030000430300004403000044030000450300004503000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000620300006303000063030000640300006403000065030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F0300007003000070030000710300007103000072030000720300007303000073030000740300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007D0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000920300009303000093030000940300009403000095030000950300009603000096030000970300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C6030000C7030000 + FE06000000000000000000000000000000000000000000000000000000000000000000000000000002000000000030C100000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F00000000000000005A0000000A000000010000005A0000000A000000010000001E0000001E0000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000400000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + FE06000000000000000000000000000000000000000000000000000000000000000000000000000002000000000030C100000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F00000000000000005A0000000A000000010000005A0000000A000000010000001E0000001E0000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 0000000000000000000000000000000034B645FA1450EE3F019C2972CB8DAD3F38E3F31B9CAEA73F1991A3B2D9273BBFDA42F01DC6DA03BFF93A3CC3D39C11BF7A4C1D5B4918163F294FBB09CCE2A5BE6AD26511EAE12A3F4DAB69737985663E0000000000000000CD2D0B3B98FE863FB94406917805F03FCC01CE585B1BA63F9770AB1F09A604BF757BD9E27FF542BFCC890F55275411BF5998693535AE243FC13A634401D6323F2637049AB630E7BE3BEA8CF40A1E813E000000000000000001418671EE878E3F48789474BFEF843F6F41CA17734AF03F1BB7E4EDD4390ABF8BCC41908981963E938BFE39707737BFEE9E87E6CA44D9BEBA341C7BDE6B213F09C601545B9B203FC607C8A57EAC583E + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002B0000003B00000047000000500000005900000061000000680000006E000000740000007A0000007F00000084000000890000008E00000093000000970000009B0000009F000000A3000000A7000000AB000000AE000000B2000000B5000000B9000000BC000000BF000000C3000000C6000000C9000000CC000000CF000000D2000000D5000000D7000000DA000000DD000000E0000000E2000000E5000000E7000000EA000000ED000000EF000000F1000000F4000000F6000000F9000000FB000000FD00000000010000020100000401000006010000090100000B0100000D0100000F01000011010000130100001501000017010000190100001B0100001D0100001F01000021010000230100002501000027010000290100002B0100002D0100002F01000031010000320100003401000036010000380100003A0100003B0100003D0100003F0100004101000042010000440100004601000048010000490100004B0100004D0100004E0100005001000052010000530100005501000056010000580100005A0100005B0100005D0100005E010000600100006101000063010000640100006601000067010000690100006B0100006C0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007D0100007F010000800100008201000083010000840100008601000087010000880100008A0100008B0100008D0100008E0100008F010000910100009201000093010000950100009601000097010000980100009A0100009B0100009C0100009E0100009F010000A0010000A1010000A3010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B0010000B1010000B3010000B4010000B5010000B6010000B7010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001E0200001F02000020020000210200002202000023020000240200002502000026020000270200002802000029020000290200002A0200002B0200002C0200002D0200002E0200002F0200003002000031020000310200003202000033020000340200003502000036020000370200003802000038020000390200003A0200003B0200003C0200003D0200003E0200003F0200003F02000040020000410200004202000043020000440200004502000045020000460200004702000048020000490200004A0200004A0200004B0200004C0200004D0200004E0200004F020000500200005002000051020000520200005302000054020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005D0200005E0200005F020000600200006102000061020000620200006302000064020000650200006502000066020000670200006802000069020000690200006A0200006B0200006C0200006D0200006D0200006E0200006F020000700200007102000071020000720200007302000074020000740200007502000076020000770200007702000078020000790200007A0200007B0200007B0200007C0200007D0200007E0200007E0200007F020000800200008102000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008A0200008B0200008C0200008D0200008D0200008E0200008F02000090020000900200009102000092020000930200009302000094020000950200009502000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009D0200009D0200009E0200009F020000A0020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AC020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000BF020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C8020000C8020000C9020000CA020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DE020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E5020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EB020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000F0020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F6020000F7020000F8020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF02000000030000000300000103000001030000020300000303000003030000040300000403000005030000060300000603000007030000070300000803000009030000090300000A0300000A0300000B0300000C0300000C0300000D0300000D0300000E0300000F0300000F03000010030000100300001103000012030000120300001303000013030000140300001503000015030000160300001603000017030000170300001803000019030000190300001A0300001A0300001B0300001C0300001C0300001D0300001D0300001E0300001E0300001F0300002003000020030000210300002103000022030000230300002303000024030000240300002503000025030000260300002703000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002F0300002F0300003003000030030000310300003103000032030000330300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003D0300003D0300003E0300003E0300003F0300003F0300004003000040030000410300004203000042030000430300004303000044030000440300004503000045030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F030000500300005003000051030000510300005203000052030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F030000600300006003000061030000610300006203000062030000630300006303000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000720300007203000073030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F03000080030000800300008103000081030000820300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009103000091030000920300009203000093030000930300009403000094030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E2030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E6030000E7030000000000002900000039000000440000004D000000560000005D000000640000006A00000070000000750000007B0000008000000084000000890000008D0000009100000096000000990000009D000000A1000000A5000000A8000000AC000000AF000000B2000000B5000000B9000000BC000000BF000000C2000000C4000000C7000000CA000000CD000000D0000000D2000000D5000000D8000000DA000000DD000000DF000000E2000000E4000000E6000000E9000000EB000000ED000000F0000000F2000000F4000000F6000000F9000000FB000000FD000000FF00000001010000030100000501000007010000090100000B0100000D0100000F01000011010000130100001501000017010000190100001B0100001D0100001E0100002001000022010000240100002601000027010000290100002B0100002D0100002E0100003001000032010000330100003501000037010000380100003A0100003C0100003D0100003F0100004101000042010000440100004501000047010000480100004A0100004C0100004D0100004F010000500100005201000053010000550100005601000058010000590100005B0100005C0100005D0100005F010000600100006201000063010000650100006601000067010000690100006A0100006B0100006D0100006E01000070010000710100007201000074010000750100007601000078010000790100007A0100007C0100007D0100007E0100007F010000810100008201000083010000850100008601000087010000880100008A0100008B0100008C0100008D0100008F01000090010000910100009201000094010000950100009601000097010000980100009A0100009B0100009C0100009D0100009E0100009F010000A1010000A2010000A3010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FB010000FC010000FD010000FE010000FF01000000020000010200000202000003020000040200000502000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000E0200000F02000010020000110200001202000013020000140200001502000015020000160200001702000018020000190200001A0200001B0200001B0200001C0200001D0200001E0200001F0200002002000021020000210200002202000023020000240200002502000026020000260200002702000028020000290200002A0200002B0200002B0200002C0200002D0200002E0200002F020000300200003002000031020000320200003302000034020000340200003502000036020000370200003802000039020000390200003A0200003B0200003C0200003D0200003D0200003E0200003F020000400200004002000041020000420200004302000044020000440200004502000046020000470200004802000048020000490200004A0200004B0200004B0200004C0200004D0200004E0200004F0200004F020000500200005102000052020000520200005302000054020000550200005502000056020000570200005802000058020000590200005A0200005B0200005B0200005C0200005D0200005E0200005E0200005F02000060020000610200006102000062020000630200006402000064020000650200006602000067020000670200006802000069020000690200006A0200006B0200006C0200006C0200006D0200006E0200006F0200006F02000070020000710200007102000072020000730200007402000074020000750200007602000076020000770200007802000079020000790200007A0200007B0200007B0200007C0200007D0200007E0200007E0200007F0200008002000080020000810200008202000082020000830200008402000084020000850200008602000087020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F02000090020000910200009102000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A0020000A1020000A1020000A2020000A3020000A3020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C1020000C2020000C3020000C3020000C4020000C5020000C5020000C6020000C6020000C7020000C8020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000FF0200000003000000030000010300000203000002030000030300000303000004030000040300000503000006030000060300000703000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000011030000110300001203000012030000130300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F030000200300002003000021030000210300002203000022030000230300002303000024030000240300002503000026030000260300002703000027030000280300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F03000030030000300300003103000031030000320300003203000033030000330300003403000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003F0300003F03000040030000400300004103000041030000420300004203000043030000430300004403000044030000450300004503000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005D0300005E0300005E0300005F0300005F03000060030000600300006103000061030000620300006203000063030000630300006403000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F0300007003000070030000710300007103000072030000720300007303000073030000740300007403000075030000750300007603000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000090030000910300009103000092030000920300009303000093030000940300009403000095030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C2030000C3030000 + FE06000000000000000000000000000000000000000000000000000000000000000000000000000002000000000030C100000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F00000000000000005A0000000A000000010000005A0000000A000000010000001E0000001E0000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_u8_1080p_dsc_655.xml b/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_u8_1080p_dsc_655.xml new file mode 100644 index 0000000..640afa4 --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_mipi_moto_vid_tm_u8_1080p_dsc_655.xml @@ -0,0 +1,34 @@ + + + + + + 00000000000000000000000000000000D34E3D016D34E83FA6EEC225DD58CF3FC17E4DDF122FA83F54BCED1A33A330BF4CF82BE9E2BE0BBFEB594DBF8A9C02BFC1738E55CD3201BF7FF2FB6EB191043F298CF678B4BC243F789FB0E5FC94743E00000000000000004525CD4347A4AA3F302183E387B8EE3FD0681FB9E35A9D3F8D880FA07B5BF3BE9563E83A7C113EBF992B8552C3E90DBF2EA2C88445FD0C3F6904568747A2323F51551FF43C6ACF3E7757D319F5F87F3E0000000000000000B52F0769B47D9B3F892D07B158EBB53F92F451EA87CAEC3FFB8C2F286A16FABE99D608F50662D53EBA4A3C7E72432DBF87A5817D5F45E3BE3C8E05C5842E1D3FBB6AD2E5FCF7123F9DF423711729633E + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002B0000003B00000047000000510000005A00000062000000690000006F000000760000007B00000081000000860000008B0000009000000094000000990000009D000000A1000000A5000000A9000000AD000000B1000000B4000000B8000000BB000000BE000000C2000000C5000000C8000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000E0000000E2000000E5000000E8000000EA000000ED000000EF000000F2000000F4000000F7000000F9000000FC000000FE00000000010000030100000501000007010000090100000C0100000E01000010010000120100001401000017010000190100001B0100001D0100001F01000021010000230100002501000027010000290100002B0100002D0100002F01000030010000320100003401000036010000380100003A0100003C0100003D0100003F01000041010000430100004501000046010000480100004A0100004B0100004D0100004F0100005101000052010000540100005601000057010000590100005A0100005C0100005E0100005F0100006101000062010000640100006601000067010000690100006A0100006C0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000083010000850100008601000088010000890100008A0100008C0100008D0100008F01000090010000910100009301000094010000950100009701000098010000990100009B0100009C0100009D0100009F010000A0010000A1010000A3010000A4010000A5010000A6010000A8010000A9010000AA010000AC010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B5010000B7010000B8010000B9010000BA010000BC010000BD010000BE010000BF010000C0010000C2010000C3010000C4010000C5010000C6010000C7010000C9010000CA010000CB010000CC010000CD010000CE010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002B0200002C0200002D0200002E0200002F02000030020000310200003202000033020000340200003502000036020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003E0200003F02000040020000410200004202000043020000440200004502000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005202000053020000540200005502000056020000570200005702000058020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F0200006002000061020000610200006202000063020000640200006502000066020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006E0200006F0200007002000071020000720200007202000073020000740200007502000076020000760200007702000078020000790200007A0200007A0200007B0200007C0200007D0200007E0200007E0200007F020000800200008102000081020000820200008302000084020000850200008502000086020000870200008802000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008E0200008F020000900200009102000091020000920200009302000094020000940200009502000096020000970200009702000098020000990200009A0200009A0200009B0200009C0200009D0200009D0200009E0200009F020000A0020000A0020000A1020000A2020000A3020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AA020000AB020000AC020000AD020000AD020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BC020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CD020000CD020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EB020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000F0020000F0020000F1020000F2020000F2020000F3020000F4020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FA020000FB020000FC020000FC020000FD020000FE020000FE020000FF02000000030000000300000103000001030000020300000303000003030000040300000403000005030000060300000603000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000D0300000D0300000E0300000E0300000F03000010030000100300001103000011030000120300001303000013030000140300001403000015030000160300001603000017030000170300001803000019030000190300001A0300001A0300001B0300001C0300001C0300001D0300001D0300001E0300001F0300001F03000020030000200300002103000022030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002A0300002B0300002C0300002C0300002D0300002D0300002E0300002F0300002F03000030030000300300003103000031030000320300003303000033030000340300003403000035030000350300003603000037030000370300003803000038030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F0300004003000040030000410300004103000042030000430300004303000044030000440300004503000045030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F0300005003000051030000510300005203000052030000530300005303000054030000540300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006203000062030000630300006303000064030000640300006503000065030000660300006603000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F030000700300007003000071030000710300007203000072030000730300007303000074030000740300007503000075030000760300007603000077030000770300007803000078030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000082030000830300008303000084030000840300008503000085030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009103000091030000920300009203000093030000930300009403000094030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000DF030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E8030000E8030000E9030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000000000002A00000039000000450000004F000000570000005F000000660000006C00000072000000770000007D00000082000000870000008B0000009000000094000000980000009C000000A0000000A4000000A7000000AB000000AE000000B2000000B5000000B8000000BC000000BF000000C2000000C5000000C8000000CB000000CE000000D0000000D3000000D6000000D8000000DB000000DE000000E0000000E3000000E5000000E8000000EA000000ED000000EF000000F1000000F4000000F6000000F8000000FA000000FD000000FF000000010100000301000005010000070100000A0100000C0100000E01000010010000120100001401000016010000180100001A0100001C0100001D0100001F01000021010000230100002501000027010000290100002A0100002C0100002E0100003001000032010000330100003501000037010000390100003A0100003C0100003E0100003F0100004101000043010000440100004601000048010000490100004B0100004C0100004E0100004F0100005101000053010000540100005601000057010000590100005A0100005C0100005D0100005F010000600100006201000063010000650100006601000068010000690100006A0100006C0100006D0100006F010000700100007201000073010000740100007601000077010000780100007A0100007B0100007D0100007E0100007F010000810100008201000083010000850100008601000087010000880100008A0100008B0100008C0100008E0100008F01000090010000910100009301000094010000950100009701000098010000990100009A0100009B0100009D0100009E0100009F010000A0010000A2010000A3010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AC010000AD010000AF010000B0010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000A0200000B0200000C0200000D0200000E0200000F02000010020000110200001202000013020000140200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001D0200001E0200001F02000020020000210200002202000023020000240200002402000025020000260200002702000028020000290200002A0200002B0200002B0200002C0200002D0200002E0200002F0200003002000030020000310200003202000033020000340200003502000036020000360200003702000038020000390200003A0200003B0200003B0200003C0200003D0200003E0200003F020000400200004002000041020000420200004302000044020000440200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004D0200004D0200004E0200004F020000500200005102000051020000520200005302000054020000540200005502000056020000570200005802000058020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F0200005F020000600200006102000062020000620200006302000064020000650200006602000066020000670200006802000069020000690200006A0200006B0200006C0200006C0200006D0200006E0200006F0200006F020000700200007102000072020000720200007302000074020000750200007502000076020000770200007702000078020000790200007A0200007A0200007B0200007C0200007D0200007D0200007E0200007F02000080020000800200008102000082020000820200008302000084020000850200008502000086020000870200008702000088020000890200008A0200008A0200008B0200008C0200008C0200008D0200008E0200008F0200008F02000090020000910200009102000092020000930200009302000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A1020000A2020000A3020000A3020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AF020000AF020000B0020000B1020000B1020000B2020000B3020000B3020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CD020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D8020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E7020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EE020000EF020000F0020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F7020000F8020000F8020000F9020000FA020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000FF02000000030000010300000103000002030000020300000303000004030000040300000503000005030000060300000603000007030000080300000803000009030000090300000A0300000A0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300001003000010030000110300001103000012030000120300001303000014030000140300001503000015030000160300001603000017030000170300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F0300001F0300002003000020030000210300002203000022030000230300002303000024030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F030000300300003003000031030000310300003203000032030000330300003403000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F030000400300004003000041030000410300004203000042030000430300004303000044030000450300004503000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F03000060030000600300006103000061030000620300006203000063030000630300006403000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F03000070030000700300007103000071030000720300007203000073030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F0300007F03000080030000800300008103000081030000820300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F0300009003000090030000910300009103000092030000920300009303000093030000940300009403000094030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CB030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D2030000D3030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000400000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + FE06000000000000000000000000000000000000000000000000000000000000000000000000000003000000000040C100000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000204100000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F00000000000000005A0000000A000000010000005A0000000A000000010000001E0000001E0000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 00000000000000000000000000000000A206534CE1F5EC3F9953646DF565B53F08E784F355CCA83F426C541C8AEB38BF0311ADB6228910BF44676255C9F804BFF49EF952E6FC143FE509626EC28CE03EC3381A28D8FC2A3FD27AA7C376867A3E000000000000000030EBE76EE54C953FBA52A8F0D962EF3F9E4C362BDF07A03FA0109471FC6DFBBEAB06C9548C6940BF0045A8899ECD10BFF3F15182F0341E3F09A6B66F176E353F3818FF892B23D9BED3255D58F8EB843E000000000000000004B15C3A7F72863F8C6B5E40B67F883F5FAC5DE1D0C9EF3F8F911AAAAB0B03BFA4C42B7294BFC7BE8274047DED8431BF980CE07904E6E1BE184B864BE9F9223FF761316DFA9B1B3FFFC4B5160C7A6B3E + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002B0000003B00000047000000510000005900000061000000680000006F000000750000007A00000080000000850000008A0000008F00000093000000980000009C000000A0000000A4000000A8000000AB000000AF000000B3000000B6000000BA000000BD000000C0000000C3000000C7000000CA000000CD000000D0000000D3000000D5000000D8000000DB000000DE000000E1000000E3000000E6000000E8000000EB000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FE000000010100000301000005010000070100000A0100000C0100000E01000010010000120100001401000016010000180100001B0100001D0100001F01000021010000230100002401000026010000280100002A0100002C0100002E0100003001000032010000340100003501000037010000390100003B0100003D0100003E0100004001000042010000440100004501000047010000490100004B0100004C0100004E010000500100005101000053010000540100005601000058010000590100005B0100005D0100005E010000600100006101000063010000640100006601000067010000690100006A0100006C0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000800100008201000083010000850100008601000087010000890100008A0100008B0100008D0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009B0100009D0100009E0100009F010000A1010000A2010000A3010000A4010000A6010000A7010000A8010000A9010000AB010000AC010000AD010000AE010000B0010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BA010000BC010000BD010000BE010000BF010000C0010000C1010000C3010000C4010000C5010000C6010000C7010000C8010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F02000010020000110200001202000013020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F02000020020000210200002202000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002D0200002E0200002F02000030020000310200003202000033020000340200003502000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003D0200003E0200003F0200004002000041020000420200004302000043020000440200004502000046020000470200004802000049020000490200004A0200004B0200004C0200004D0200004E0200004F0200004F0200005002000051020000520200005302000054020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005D0200005E0200005F0200006002000061020000620200006202000063020000640200006502000066020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006E0200006F020000700200007102000071020000720200007302000074020000750200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F0200007F020000800200008102000082020000820200008302000084020000850200008502000086020000870200008802000089020000890200008A0200008B0200008C0200008C0200008D0200008E0200008E0200008F020000900200009102000091020000920200009302000094020000940200009502000096020000970200009702000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A1020000A2020000A3020000A4020000A4020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C8020000C8020000C9020000CA020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D2020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D8020000D8020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DE020000DE020000DF020000DF020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E7020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F8020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF02000000030000000300000103000001030000020300000303000003030000040300000403000005030000060300000603000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F0300000F03000010030000110300001103000012030000120300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001B0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F03000020030000210300002103000022030000220300002303000023030000240300002503000025030000260300002603000027030000270300002803000029030000290300002A0300002A0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300003003000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000370300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003D0300003D0300003E0300003E0300003F0300003F0300004003000040030000410300004203000042030000430300004303000044030000440300004503000045030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F0300005003000050030000510300005203000052030000530300005303000054030000540300005503000055030000560300005603000057030000570300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F030000600300006003000061030000610300006203000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F03000080030000800300008103000081030000820300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F0300009003000090030000910300009103000092030000920300009303000093030000940300009403000095030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E2030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E6030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EA030000EB030000000000002900000039000000440000004E000000560000005E000000640000006B00000070000000760000007B0000008000000085000000890000008E00000092000000960000009A0000009E000000A2000000A5000000A9000000AC000000B0000000B3000000B6000000B9000000BC000000BF000000C2000000C5000000C8000000CB000000CE000000D0000000D3000000D6000000D8000000DB000000DE000000E0000000E2000000E5000000E7000000EA000000EC000000EE000000F1000000F3000000F5000000F7000000FA000000FC000000FE00000000010000020100000401000006010000080100000A0100000C0100000E01000010010000120100001401000016010000180100001A0100001C0100001E0100002001000021010000230100002501000027010000290100002A0100002C0100002E0100003001000031010000330100003501000036010000380100003A0100003B0100003D0100003F0100004001000042010000430100004501000047010000480100004A0100004B0100004D0100004E010000500100005201000053010000550100005601000058010000590100005A0100005C0100005D0100005F010000600100006201000063010000650100006601000067010000690100006A0100006C0100006D0100006E01000070010000710100007201000074010000750100007701000078010000790100007B0100007C0100007D0100007E01000080010000810100008201000084010000850100008601000088010000890100008A0100008B0100008D0100008E0100008F01000090010000920100009301000094010000950100009601000098010000990100009A0100009B0100009C0100009E0100009F010000A0010000A1010000A2010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FE010000FF01000000020000010200000202000003020000040200000502000006020000070200000802000009020000090200000A0200000B0200000C0200000D0200000E0200000F0200001002000011020000110200001202000013020000140200001502000016020000170200001802000019020000190200001A0200001B0200001C0200001D0200001E0200001F0200001F02000020020000210200002202000023020000240200002502000025020000260200002702000028020000290200002A0200002A0200002B0200002C0200002D0200002E0200002F0200002F0200003002000031020000320200003302000034020000340200003502000036020000370200003802000038020000390200003A0200003B0200003C0200003C0200003D0200003E0200003F020000400200004102000041020000420200004302000044020000440200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200004F020000500200005102000052020000530200005302000054020000550200005602000056020000570200005802000059020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F0200005F020000600200006102000062020000620200006302000064020000650200006502000066020000670200006802000068020000690200006A0200006B0200006B0200006C0200006D0200006E0200006E0200006F02000070020000700200007102000072020000730200007302000074020000750200007502000076020000770200007802000078020000790200007A0200007B0200007B0200007C0200007D0200007D0200007E0200007F0200007F02000080020000810200008202000082020000830200008402000084020000850200008602000086020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F02000090020000910200009202000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A0020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A6020000A6020000A7020000A8020000A8020000A9020000AA020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AF020000AF020000B0020000B1020000B1020000B2020000B3020000B3020000B4020000B5020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BA020000BB020000BC020000BC020000BD020000BD020000BE020000BF020000BF020000C0020000C1020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000ED020000EE020000EF020000EF020000F0020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FC020000FD020000FD020000FE020000FF020000FF0200000003000000030000010300000103000002030000030300000303000004030000040300000503000005030000060300000703000007030000080300000803000009030000090300000A0300000A0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000011030000110300001203000012030000130300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F0300001F030000200300002003000021030000210300002203000022030000230300002403000024030000250300002503000026030000260300002703000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300002F030000300300003003000031030000310300003203000032030000330300003303000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F030000400300004003000041030000410300004203000042030000430300004403000044030000450300004503000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000620300006303000063030000640300006403000065030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F0300007003000070030000710300007103000072030000720300007303000073030000740300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007D0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000920300009303000093030000940300009403000095030000950300009603000096030000970300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C6030000C7030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/sensors/config/mot_camgest.json b/proprietary/vendor/etc/sensors/config/mot_camgest.json new file mode 100644 index 0000000..ea6ec4e --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/mot_camgest.json @@ -0,0 +1,19 @@ +{ + "config": + { + "hw_platform": ["HDK", "MTP", "Dragon", "Surf", "IDP"], + "soc_id": ["361", "339", "365", "454", "507"] + }, + "mot_camgest":{ + "owner": "mot_camgest", + ".params":{ + "owner": "mot_camgest", + "y_orient_down_thres":{ "type": "flt", "ver": "0", + "data": "-4.25" + }, + "y_orient_up_thres":{ "type": "flt", "ver": "0", + "data": "4.5" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_amd.json b/proprietary/vendor/etc/sensors/config/sns_amd.json new file mode 100644 index 0000000..5a95969 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_amd.json @@ -0,0 +1,18 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "340", "347", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "455", "456", "454", + "450", "476", "467", "468", "469", "470", "473", "474", "501", "502", "475", "496", "497", "498", "515", "507", "518", "523", "524", "575", + "576", "561", "562", "548", "578", "565", "585", "586"] + }, + "sns_amd": { + "owner": "sns_amd", + "param1": {"ver": "0","type": "flt","data": "0.06" + }, + "param2": {"ver": "0","type": "flt","data": "0.5" + }, + "sample_rate": {"ver": "0","type": "flt", "data": "10.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json b/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json new file mode 100644 index 0000000..2b529ea --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json @@ -0,0 +1,11 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "QRD", "HDK"], + "soc_id": ["339", "340", "361", "415", "439", "456", "501", "502"] + }, + "sns_amd": { + "owner": "sns_amd", + "enabled": {"ver": "0","type": "int", "data": "0" + } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json b/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json new file mode 100644 index 0000000..66c4f07 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json @@ -0,0 +1,13 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "347", "341", "355", "360", "365", "366", "393", "394", "400", "407", "417", "440", + "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "454", "450", "476", "467", "468", "469", "470", + "473", "474", "475", "497", "498", "515", "507", "518", "523", "524", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_amd": { + "owner": "sns_amd", + "enabled": {"ver": "0","type": "int", "data": "1" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_aont.json b/proprietary/vendor/etc/sensors/config/sns_aont.json new file mode 100644 index 0000000..02f615c --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_aont.json @@ -0,0 +1,10 @@ +{ + "config":{ + }, + "sns_aont": { + "owner": "sns_aont", + "aont_enable":{ "type": "int", "ver": "0", + "data": "1" + } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_basic_gestures.json b/proprietary/vendor/etc/sensors/config/sns_basic_gestures.json new file mode 100644 index 0000000..abaafae --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_basic_gestures.json @@ -0,0 +1,38 @@ +{ + "config":{ + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417","440", + "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "450", "476", "467", "468", "469", "470", "473", + "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_basic_gestures": { + "owner": "sns_basic_gestures", + "sample_rate": { "type": "flt", "ver": "0", + "data": "30.0" + }, + "push_threshold": { "type": "flt", "ver": "0", + "data": "14.7178" + }, + "pull_threshold": { "type": "flt", "ver": "0", + "data": "14.7178" + }, + "shake_threshold": { "type": "flt", "ver": "0", + "data": "14.7178" + }, + "sleep": { "type": "flt", "ver": "0", + "data": "0.3" + }, + "param1": { "type": "flt", "ver": "0", + "data": "0.1" + }, + "param2": { "type": "flt", "ver": "0", + "data": "4.9059" + }, + "param3": { "type": "flt", "ver": "0", + "data": "0.1" + }, + "param4": { "type": "flt", "ver": "0", + "data": "0.2618" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_bring_to_ear.json b/proprietary/vendor/etc/sensors/config/sns_bring_to_ear.json new file mode 100644 index 0000000..030ea56 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_bring_to_ear.json @@ -0,0 +1,38 @@ +{ + "config":{ + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "415", "439", "440", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "450", "476", "467", "468", "469", "470", + "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_bring_to_ear": { + "owner": "sns_bring_to_ear", + "sample_rate": { "type": "flt", "ver": "0", + "data": "30.0" + }, + "facing_angle_threshold": { "type": "flt", "ver": "0", + "data": "1.1345" + }, + "horiz_angle_threshold": { "type": "flt", "ver": "0", + "data": "0.3491" + }, + "vert_angle_threshold": { "type": "flt", "ver": "0", + "data": "0.3491" + }, + "proximity_enable": { "type": "int", "ver": "0", + "data": "0" + }, + "param1": { "type": "flt", "ver": "0", + "data": "2.943" + }, + "param2": { "type": "flt", "ver": "0", + "data": "0.2" + }, + "param3": { "type": "flt", "ver": "0", + "data": "0.2618" + }, + "param4": {"type": "flt", "ver": "0", + "data": "0.2" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_ccd.json b/proprietary/vendor/etc/sensors/config/sns_ccd.json new file mode 100644 index 0000000..bbe3b2e --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_ccd.json @@ -0,0 +1,150 @@ +{ + "config": { + "hw_platform": ["MTP","QRD","Dragon","Surf", "HDK"], + "soc_id": ["339", "340", "356", "361", "415", "439", "456", "501", "502"] + }, + "ccd_amd": { + "owner": "sns_ccd", + "h2": { "ver": "0","type": "int", + "data": "50"}, + "disable_flush_only": { "ver": "0","type": "int", + "data": "0"} + }, + "ccd_ttw": { + "owner": "sns_ccd", + "te0_ratecfg": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_xmd_win_len_samp": { "ver": "0","type": "int", + "data": "0x4" }, + "te0_xmd_threshhold1": { "ver": "0","type": "int", + "data": "0x4B00" }, + "te0_xmd_threshhold2": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_xmd_hysteresis1": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_xmd_hysteresis2": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_tilt_win_sum_shift": { "ver": "0","type": "int", + "data": "0x2" }, + "te0_tr_win_len_samples": { "ver": "0","type": "int", + "data": "0xD" }, + "te0_tr_angle_cosine_sq": { "ver": "0","type": "int", + "data": "0x327" }, + "te0_tr_decimate_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_tr_hysteresis": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_dt_angle_cosine_sq": { "ver": "0","type": "int", + "data": "0x2D0" }, + "te0_dt_ref_gravity_latch": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori0_x_th_lower": { "ver": "0","type": "int", + "data": "0x1DED" }, + "te0_ori0_x_th_upper": { "ver": "0","type": "int", + "data": "0x0213" }, + "te0_ori0_y_th_lower": { "ver": "0","type": "int", + "data": "0x1B1D" }, + "te0_ori0_y_th_upper": { "ver": "0","type": "int", + "data": "0x04E3" }, + "te0_ori0_z_th_lower": { "ver": "0","type": "int", + "data": "0x1B44" }, + "te0_ori0_z_th_upper": { "ver": "0","type": "int", + "data": "0x4D5" }, + "te0_ori0_x_th_lower_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_ori0_x_th_upper_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_ori0_y_th_lower_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_ori0_y_th_upper_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_ori0_z_th_lower_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_ori0_z_th_upper_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_ori0_delay": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_x_th_lower": { "ver": "0","type": "int", + "data": "0x1C88" }, + "te0_ori1_x_th_upper": { "ver": "0","type": "int", + "data": "0x377" }, + "te0_ori1_y_th_lower": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_y_th_upper": { "ver": "0","type": "int", + "data": "0xF00" }, + "te0_ori1_z_th_lower": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_z_th_upper": { "ver": "0","type": "int", + "data": "0xA00" }, + "te0_ori1_x_th_lower_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_x_th_upper_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_y_th_lower_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_y_th_upper_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_z_th_lower_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_z_th_upper_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_ori1_delay": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_xmd_cfg1_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd0_xmd_cfg2_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_tr_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd0_ori0_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd0_xmd_cfg1_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_xmd_cfg2_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_tr_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_ori_cfg1_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_xmd_cfg1_inv": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd0_xmd_cfg2_inv": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_tr_inv": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_ori0_inv": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_delay": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd0_output_inv": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_xmd_cfg1_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_xmd_cfg2_en": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_tr_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd1_ori1_en": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd1_xmd_cfg1_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_xmd_cfg2_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_tr_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_ori_cfg1_posthyst": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_xmd_cfg1_inv": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd1_xmd_cfg2_inv": { "ver": "0","type": "int", + "data": "0x1" }, + "te0_csd1_tr_inv": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_ori1_inv": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_delay": { "ver": "0","type": "int", + "data": "0x0" }, + "te0_csd1_output_inv": { "ver": "0","type": "int", + "data": "0x0" } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_ccd_v2_walk.json b/proprietary/vendor/etc/sensors/config/sns_ccd_v2_walk.json new file mode 100644 index 0000000..8e38bfd --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_ccd_v2_walk.json @@ -0,0 +1,17 @@ +{ + "config": { + "hw_platform": ["MTP","QRD","Dragon","Surf", "HDK"], + "soc_id": ["339", "340", "361"] + }, + "ccd_walk": { + "owner": "sns_ccd", + "xct": { "ver": "0","type": "int", + "data": "0xA" }, + "mls": { "ver": "0","type": "int", + "data": "0x6" }, + "mps": { "ver": "0","type": "int", + "data": "0x4" }, + "hmps": { "ver": "0","type": "int", + "data": "0x4" } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_ccd_v3_1_walk.json b/proprietary/vendor/etc/sensors/config/sns_ccd_v3_1_walk.json new file mode 100644 index 0000000..fac94e8 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_ccd_v3_1_walk.json @@ -0,0 +1,39 @@ +{ + "config": { + "hw_platform": ["MTP", "Surf", "RCM", "QRD", "HDK"], + "soc_id": ["415", "439", "456", "501", "502"] + }, + "ccd_walk": { + "owner": "sns_ccd", + "xct": { "ver": "0","type": "int", + "data": "0xA" }, + "mls": { "ver": "0","type": "int", + "data": "0x6" }, + "mps": { "ver": "0","type": "int", + "data": "0x4" }, + "hmps": { "ver": "0","type": "int", + "data": "0x4" }, + "hwln1": { "ver": "0","type": "int", + "data": "0xA" }, + "mwln3": { "ver": "0","type": "int", + "data": "0xA" }, + "hpe0": { "ver": "0","type": "int", + "data": "0x1" }, + "lcb0": { "ver": "0","type": "int", + "data": "0xD17E" }, + "lcb1": { "ver": "0","type": "int", + "data": "0x0889" }, + "lcb2": { "ver": "0","type": "int", + "data": "0x16C7" }, + "lcb3": { "ver": "0","type": "int", + "data": "0x0106" }, + "lcb4": { "ver": "0","type": "int", + "data": "0x0324" }, + "lcb5": { "ver": "0","type": "int", + "data": "0x3850" }, + "lcb6": { "ver": "0","type": "int", + "data": "0xfffede4b" }, + "ltt": { "ver": "0","type": "int", + "data": "0xFC9C" } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_ccd_v3_walk.json b/proprietary/vendor/etc/sensors/config/sns_ccd_v3_walk.json new file mode 100644 index 0000000..a6c1d8b --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_ccd_v3_walk.json @@ -0,0 +1,39 @@ +{ + "config": { + "hw_platform": ["MTP", "Surf", "RCM", "QRD"], + "soc_id": ["356"] + }, + "ccd_walk": { + "owner": "sns_ccd", + "xct": { "ver": "0","type": "int", + "data": "0xA" }, + "mls": { "ver": "0","type": "int", + "data": "0x2" }, + "mps": { "ver": "0","type": "int", + "data": "0x4" }, + "hmps": { "ver": "0","type": "int", + "data": "0x2" }, + "hwln1": { "ver": "0","type": "int", + "data": "0xA" }, + "mwln3": { "ver": "0","type": "int", + "data": "0xA" }, + "hpe0": { "ver": "0","type": "int", + "data": "0x1" }, + "lcb0": { "ver": "0","type": "int", + "data": "0xE832" }, + "lcb1": { "ver": "0","type": "int", + "data": "0x3F8" }, + "lcb2": { "ver": "0","type": "int", + "data": "0x8E1" }, + "lcb3": { "ver": "0","type": "int", + "data": "0x37B" }, + "lcb4": { "ver": "0","type": "int", + "data": "0x1E6" }, + "lcb5": { "ver": "0","type": "int", + "data": "0x2ADF" }, + "lcb6": { "ver": "0","type": "int", + "data": "0xF9A" }, + "ltt": { "ver": "0","type": "int", + "data": "0xFCFC" } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_cm.json b/proprietary/vendor/etc/sensors/config/sns_cm.json new file mode 100644 index 0000000..c191c8a --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_cm.json @@ -0,0 +1,21 @@ +{ + "config":{ + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "347", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "416", "417", "437", "440", "415", "439", "444", "445", "420", "424", "443", "459", "441", "471", "455", "456", "454", "450", "476", "467", + "468", "469", "470", "473", "474", "501", "502", "475", "496", "497", "498", "515", "507", "518", "523", "524", "575", "576", "561", "562", "548", + "578", "565", "585", "586"] + }, +"sns_cm":{ + "owner": "sns_cm", + "heap_size":{ "type": "int", "ver": "0", + "data": "1572864" + }, + "max_batch_disabled":{ "type": "int", "ver": "0", + "data": "0" + }, + "min_batch_period_thrshld_ms":{ "type": "int", "ver": "0", + "data": "10" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_dae.json b/proprietary/vendor/etc/sensors/config/sns_dae.json new file mode 100644 index 0000000..37f027f --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_dae.json @@ -0,0 +1,30 @@ +{ + "config":{ + "hw_platform": ["MTP","QRD","Dragon","Surf", "HDK"], + "soc_id": ["339", "356", "361", "415", "439", "456", "501", "502"] + }, + "dae":{ + "owner": "sns_dae", + "use_sdc":{ "type": "int", "ver": "0", + "data": "1" + }, + "debug_accel_values":{ "type": "int", "ver": "0", + "data": "0" + }, + "dd_msg_mask":{ "type": "int", "ver": "0", + "data": "0" + }, + "enable_qdss":{ "type": "int", "ver": "0", + "data": "0" + }, + "dbg_mask":{ "type": "int", "ver": "0", + "data": "0" + }, + "ulog_msg_mask":{ "type": "int", "ver": "0", + "data": "0x1F" + }, + "fwk_msg_mask":{ "type": "int", "ver": "0", + "data": "0" + } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_device_orient.json b/proprietary/vendor/etc/sensors/config/sns_device_orient.json new file mode 100644 index 0000000..d831436 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_device_orient.json @@ -0,0 +1,39 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", + "417", "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "450", "476", "467", "468", "469", + "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_device_orient_platform": { + "owner": "sns_device_orient", + ".config":{ + "owner": "sns_device_orient", + "param0": { + "type": "int", "ver": "0", "data": "4" + }, + "param1": { + "type": "flt", "ver": "0", "data": "20.0" + }, + "param2": { + "type": "flt", "ver": "0", "data": "0.25" + }, + "param3": { + "type": "flt", "ver": "0", "data": "70.0" + }, + "param4": { + "type": "flt", "ver": "0", "data": "45.0" + }, + "param5": { + "type": "flt", "ver": "0", "data": "2.0" + }, + "param6": { + "type": "flt", "ver": "0", "data": "15.0" + }, + "param7": { + "type": "int", "ver": "0", "data": "1" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_diag_filter.json b/proprietary/vendor/etc/sensors/config/sns_diag_filter.json new file mode 100644 index 0000000..c2ed744 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_diag_filter.json @@ -0,0 +1,381 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "347", "355", "356", "360", "361", "352", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "455", "456", "454", "450", "476", + "467", "468", "469", "470", "473", "474", "501", "502", "475", "496", "497", "498", "515", "507", "518", "523", "524", "575", "576", "561", "562", "548", + "578", "565", "585", "586"] + }, + + "sns_diag_config": + { + "owner":"diag_filter_sensor", + "qdss": + { + "type" : "int", + "ver" : "0", + "data" : "0" + } + }, + + "sns_diag_sensor_datatype": + { + "owner":"diag_filter_sensor", + + "geomag_rv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "game_rv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gravity": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "cm": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "accel": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "humidity": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ambient_temperature": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "sensor_temperature": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "motion_detect": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gyro": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ultra_violet": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "pressure": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "mag": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "offbody_detect": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "thermopile": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ambient_light": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "hall": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "proximity": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "rgb": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "test": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "flush_test": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "md_test": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "da_test": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "amd": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "rmd": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "facing": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gyro_cal": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "oem1": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "mag_cal": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "resampler": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "smd": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "basic_gestures": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "multishake": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "bring_to_ear": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "cmc": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "dpc": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "distance_bound": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gyro_rot_matrix": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "fmv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "rotv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "pedometer": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "device_orient": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "tilt": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "tilt_to_wake": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "heart_rate": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ppg": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "wrist_tilt_gesture": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "pedometer_wrist": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "data_acquisition_engine": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "ccd_walk": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ccd_ttw": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ccd_hw": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "threshold": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "sar": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "radar": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "activity_recognition": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "dae_datalog": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "location": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "step_detect": + { + "type" : "int", + "ver" : "0", + "data" : "1" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_direct_channel.json b/proprietary/vendor/etc/sensors/config/sns_direct_channel.json new file mode 100644 index 0000000..e48983b --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_direct_channel.json @@ -0,0 +1,11 @@ +{ + "config": { + }, + "sns_direct_channel": + { + "owner": "sns_direct_channel", + "latency_enable":{ "type": "int", "ver": "0", + "data": "0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_distance_bound.json b/proprietary/vendor/etc/sensors/config/sns_distance_bound.json new file mode 100644 index 0000000..5825940 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_distance_bound.json @@ -0,0 +1,29 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "450", "476", "467", "468", "469", + "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_distance_bound_speed_for_motion_states": { + "owner": "sns_distance_bound", + "unknown": {"ver": "0","type": "flt","data": "0.0" + }, + "stationary": {"ver": "0","type": "flt","data": "0.0" + }, + "move": {"ver": "0","type": "flt","data": "1.0" + }, + "fiddle": {"ver": "0","type": "flt","data": "0.0" + }, + "pedestrian": {"ver": "0","type": "flt","data": "1.0" + }, + "vehicle": {"ver": "0","type": "flt","data": "16.67" + }, + "walk": {"ver": "0","type": "flt","data": "1.1" + }, + "run": {"ver": "0","type": "flt","data": "2.5" + }, + "bike": {"ver": "0","type": "flt","data": "5.55" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_dpc.json b/proprietary/vendor/etc/sensors/config/sns_dpc.json new file mode 100644 index 0000000..40574a7 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_dpc.json @@ -0,0 +1,29 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "450", "476", "467", "468", "469", + "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_dpc": { + "owner": "sns_dpc", + "param1": { + "ver": "0", "type": "flt", "data": "0.5" + }, + "param2": { + "ver": "0", "type": "flt", "data": "0.02" + }, + "param3": { + "ver": "0", "type": "flt", "data": "0.04" + }, + "param4": { + "ver": "0", "type": "flt", "data": "7.5" + }, + "param5": { + "ver": "0", "type": "flt", "data": "0.1" + }, + "param6": { + "ver": "0", "type": "flt", "data": "0.1746" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_facing.json b/proprietary/vendor/etc/sensors/config/sns_facing.json new file mode 100644 index 0000000..3dac234 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_facing.json @@ -0,0 +1,26 @@ +{ + "config":{ + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "450", "476", "467", "468", "469", + "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_facing": { + "owner": "sns_facing", + "angle_threshold": { "type": "flt", "ver": "0", + "data": "0.3491" + }, + "report_neutral": { "type": "int", "ver": "0", + "data": "1" + }, + "sample_rate": { "type": "flt", "ver": "0", + "data": "30.0" + }, + "min_sample_rate": { "type": "flt", "ver": "0", + "data": "30.0" + }, + "max_sample_rate": { "type": "flt", "ver": "0", + "data": "100.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_fmv.json b/proprietary/vendor/etc/sensors/config/sns_fmv.json new file mode 100644 index 0000000..b4dcf17 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_fmv.json @@ -0,0 +1,52 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["415", "439", "456", "454","450", "469", "470", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_fmv_platform": { + "owner": "sns_fmv", + ".config":{ + "owner": "sns_fmv", + "accuracy_unknown": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_abs_rest": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_rel_rest": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_motion": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_fast_motion": { "type": "int", "ver": "0", + "data": "10000" + }, + "gyro_gap_thresh": { "type": "int", "ver": "0", + "data": "500" + }, + "mag_innov": { "type": "flt", "ver": "0", + "data": "9.0" + }, + "mag_sample_gap_fac": { "type": "flt", "ver": "0", + "data": "1.0" + }, + "tyro_thresh_for_zupt": { "type": "flt", "ver": "0", + "data": "0.001" + }, + "amd_int_cfg_param1": { "type": "flt", "ver": "0", + "data": "0.000061" + }, + "amd_int_cfg_param2": { "type": "flt", "ver": "0", + "data": "0.6" + }, + "amd_int_cfg_param3": { "type": "flt", "ver": "0", + "data": "0.4" + }, + "debug_mode": { "type": "int", "ver": "0", + "data": "0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json b/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json new file mode 100644 index 0000000..808ce77 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json @@ -0,0 +1,53 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "444", "445", "420", "424", "443", "434", "435", "459", "441", "467", "468", "471", "476", "473", "474", "515"] + }, + "sns_fmv_platform": { + "owner": "sns_fmv", + ".config":{ + "owner": "sns_fmv", + "accuracy_unknown": { "type": "int", "ver": "0", + "data": "3000" + }, + "accuracy_abs_rest": { "type": "int", "ver": "0", + "data": "250" + }, + "accuracy_rel_rest": { "type": "int", "ver": "0", + "data": "1500" + }, + "accuracy_motion": { "type": "int", "ver": "0", + "data": "3000" + }, + "gyro_gap_thresh": { "type": "int", "ver": "0", + "data": "501" + }, + "mag_innov": { "type": "flt", "ver": "0", + "data": "9.0" + }, + "mag_sample_gap_fac": { "type": "flt", "ver": "0", + "data": "1.0" + }, + "tyro_thresh_for_zupt": { "type": "flt", "ver": "0", + "data": "0.001" + }, + "sensor_rpt_rate": { "type": "flt", "ver": "0", + "data": "1.0" + }, + "def_sample_rate": { "type": "flt", "ver": "0", + "data": "5.0" + }, + "amd_int_cfg_param1": { "type": "flt", "ver": "0", + "data": "0.06" + }, + "amd_int_cfg_param2": { "type": "flt", "ver": "0", + "data": "0.5" + }, + "amd_int_cfg_param5": { "type": "flt", "ver": "0", + "data": "0.16" + } + } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json b/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json new file mode 100644 index 0000000..2ebcef8 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json @@ -0,0 +1,30 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "450", "476", "467", "468", "469", + "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_geomag_rv": { + "owner": "sns_geomag_rv", + ".config": { + "owner": "sns_geomag_rv", + "gamerv_cfg_param1": {"type": "int","ver": "0","data": "300" + }, + "gamerv_cfg_param2": {"type": "int","ver": "0","data": "300" + }, + "fusion_min_samp_rate": {"type": "flt","ver": "0","data": "1.0" + }, + "gamerv_def_rpt_rate": {"type": "flt","ver": "0","data": "1.0" + }, + "gamerv_def_sample_rate": {"type": "flt","ver": "0","data": "5.0" + }, + "amd_int_cfg_param1": {"type": "flt","ver": "0","data": "0.06" + }, + "amd_int_cfg_param2": {"type": "flt","ver": "0","data": "0.5" + }, + "game_rv_c_sys": {"type": "int","ver": "0","data": "0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json b/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json new file mode 100644 index 0000000..b90dc49 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json @@ -0,0 +1,27 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "347", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "455", "456", "454", "450", "476", "467", + "468", "469", "470", "473", "474", "501", "502", "475", "496", "497", "498", "515", "507", "518", "523", "524", "575", "576", "561", "562", "548", + "578", "565", "585", "586"] + }, + "sns_gyro_cal_config": { + "owner": "sns_gyro_cal", + "calibration_period": {"type": "int","ver": "0", + "data": "60" + }, + "num_samples": {"type": "int","ver": "0", + "data": "64" + }, + "variance_threshold": {"type": "flt","ver": "0", + "data": "0.00000085" + }, + "sample_rate": {"type": "flt","ver": "0", + "data": "10.0" + }, + "bias_threshold": {"type": "flt","ver": "0", + "data": "0.20" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_heart_rate.json b/proprietary/vendor/etc/sensors/config/sns_heart_rate.json new file mode 100644 index 0000000..3109270 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_heart_rate.json @@ -0,0 +1,136 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf","QRD","HDK" + ], + "soc_id": ["300", "301"] + }, + "sns_heart_rate": { + "owner": "sns_heart_rate", + "sample_rate_ppg":{"ver": "0","type": "flt", + "data": "20.0" + }, + "sample_rate_accel":{"ver": "0","type": "flt", + "data": "20.0" + }, + "update_flterval_in_fft_samples":{"ver": "0","type": "int", + "data": "20.0" + }, + "min_fft_fltervals_for_first_one_shot_update":{"ver": "0","type": "int", + "data": "7" + }, + "min_fft_fltervals_for_first_continuous_update":{"ver": "0","type": "int", + "data": "7" + }, + "max_bpm_age_for_warm_start":{"ver": "0","type": "int", + "data": "3276800" + }, + "max_alpha":{"ver": "0","type": "flt", + "data": "1.0" + }, + "min_alpha":{"ver": "0","type": "flt", + "data": "0.01" + }, + "min_o_h":{"ver": "0","type": "flt", + "data": "0.5" + }, + "max_o_h":{"ver": "0","type": "flt", + "data": "0.9" + }, + "max_del_b":{"ver": "0","type": "flt", + "data": "10.0" + }, + "acc_peak_distance":{"ver": "0","type": "int", + "data": "1" + }, + "ppg_peak_distance":{"ver": "0","type": "int", + "data": "2" + }, + "num_ppg_peaks":{"ver": "0","type": "int", + "data": "6" + }, + "num_acc_peaks":{"ver": "0","type": "int", + "data": "6" + }, + "peak_width_ppg":{"ver": "0","type": "int", + "data": "2" + }, + "peak_thresh_ppg":{"ver": "0","type": "flt", + "data": "0.1" + }, + "peak_thresh_acc":{"ver": "0","type": "flt", + "data": "0.1" + }, + "max_ind_diff":{"ver": "0","type": "int", + "data": "10" + }, + "max_acc_thr":{"ver": "0","type": "flt", + "data": "80" + }, + "harm_acc_thr":{"ver": "0","type": "flt", + "data": "0.6" + }, + "oneshot_max_acc_thr":{"ver": "0","type": "flt", + "data": "10.0" + }, + "oneshot_harm_acc_thr":{"ver": "0","type": "flt", + "data": "0.4" + }, + "continuous_max_acc_thr":{"ver": "0","type": "flt", + "data": "80.0" + }, + "continuous_harm_acc_thr":{"ver": "0","type": "flt", + "data": "0.6" + }, + "globalminhr":{"ver": "0","type": "flt", + "data": "40.0" + }, + "globalmaxhr":{"ver": "0","type": "flt", + "data": "250.0" + }, + "num_samples_to_skip_after_reset":{"ver": "0","type": "int", + "data": "40" + }, + "noaccel_thresh":{"ver": "0","type": "flt", + "data": "80000.0" + }, + "max_blanked_ppg_segments":{"ver": "0","type": "int", + "data": "51" + }, + "min_bad_spread_ratio_for_ppg_blanking":{"ver": "0","type": "flt", + "data": "2.3" + }, + "max_blanked_accel_segments":{"ver": "0","type": "int", + "data": "0" + }, + "min_bad_spread_ratio_for_accel_blanking":{"ver": "0","type": "flt", + "data": "2.3" + }, + "accuracy_decay_alpha":{"ver": "0","type": "flt", + "data": "0.98" + }, + "android_accuracy_low_thresh":{"ver": "0","type": "flt", + "data": "0.3" + }, + "android_accuracy_high_thresh":{"ver": "0","type": "flt", + "data": "0.7" + }, + "android_accuracy_medium_thresh":{"ver": "0","type": "flt", + "data": "0.45" + }, + "do_minppg":{"ver": "0","type": "int", + "data": "1" + }, + "do_mingoodppgtrack":{"ver": "0","type": "int", + "data": "0" + }, + "do_width_harm":{"ver": "0","type": "int", + "data": "1" + }, + "do_stride_is_hr_processing":{"ver": "0","type": "int", + "data": "0" + }, + "alpha_lowpass":{"ver": "0","type": "flt", + "data": "0.27" + } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_mag_cal.json b/proprietary/vendor/etc/sensors/config/sns_mag_cal.json new file mode 100644 index 0000000..b0de3be --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_mag_cal.json @@ -0,0 +1,17 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "HDK", "IDP", "QRD", "IOT"], + "soc_id": ["339", "355", "356", "361", "365", "366", "394", "400", "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", + "424", "443", "434", "435", "459", "441", "471", "456", "454", "455", "450", "476", "467", "468", "469", "470", "473", "474", "496", "501", "502", "475", + "497", "498", "515", "507", "518", "523", "524", "548", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_mag_cal_config": { + "owner": "sns_mag_cal", + "anomaly_threshold": {"type": "flt","ver": "0", + "data": "200.0" + }, + "sample_rate": { "type": "flt", "ver": "0", + "data": "25.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_mag_cal_legacy.json b/proprietary/vendor/etc/sensors/config/sns_mag_cal_legacy.json new file mode 100644 index 0000000..d846189 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_mag_cal_legacy.json @@ -0,0 +1,12 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "341", "360", "393"] + }, + "sns_mag_cal_config": { + "owner": "sns_mag_cal", + "anomaly_threshold": {"type": "flt","ver": "0", + "data": "200.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_multishake.json b/proprietary/vendor/etc/sensors/config/sns_multishake.json new file mode 100644 index 0000000..0aa236a --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_multishake.json @@ -0,0 +1,26 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454","450", "476", "467", "468", "469", + "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_multishake": { + "owner": "sns_multishake", + "min_shake_period": { + "ver": "0", "type": "flt", "data": "0.22" + }, + "max_shake_period": { + "ver": "0", "type": "flt", "data": "0.7" + }, + "sleep_time": { + "ver": "0", "type": "flt", "data": "0.12" + }, + "shake_thresh": { + "ver": "0", "type": "flt", "data": "1.5" + }, + "sample_rate": { + "ver": "0", "type": "flt", "data": "100.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_pedometer.json b/proprietary/vendor/etc/sensors/config/sns_pedometer.json new file mode 100644 index 0000000..899bc3a --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_pedometer.json @@ -0,0 +1,35 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454","450", "476", "467", "468", "469", + "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_pedometer": { + "owner": "sns_pedometer", + "param8": { + "ver": "0", "type": "flt", "data": "3.0" + }, + "param7": { + "ver": "0", "type": "flt", "data": "0.5" + }, + "param6": { + "ver": "0", "type": "flt", "data": "4.0" + }, + "param5": { + "ver": "0", "type": "flt", "data": "0.2" + }, + "param4": { + "ver": "0", "type": "flt", "data": "0.02" + }, + "param3": { + "ver": "0", "type": "flt", "data": "0.1" + }, + "param2": { + "ver": "0", "type": "flt", "data": "0.5" + }, + "param1": { + "ver": "0", "type": "flt", "data": "0.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_rmd.json b/proprietary/vendor/etc/sensors/config/sns_rmd.json new file mode 100644 index 0000000..a45127a --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_rmd.json @@ -0,0 +1,27 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", + "400", "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", + "454", "450", "476", "467", "468", "469", "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", + "561", "562", "578", "565", "585", "586"] + }, + "sns_rmd": { + "owner": "sns_rmd", + "param4": { + "ver": "0", "type": "flt", "data": "0.2" + }, + "param3": { + "ver": "0", "type": "flt", "data": "5" + }, + "param2": { + "ver": "0", "type": "flt", "data": "0.2" + }, + "param1": { + "ver": "0", "type": "flt", "data": "173" + }, + "sample_rate": { + "ver": "0", "type": "flt", "data": "30.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_rotv.json b/proprietary/vendor/etc/sensors/config/sns_rotv.json new file mode 100644 index 0000000..7cc71e9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_rotv.json @@ -0,0 +1,25 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454","450", + "476", "467", "468", "469", "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", + "565", "585", "586"] + }, + "sns_rotv_platform": { + "owner": "sns_rotv", + ".config":{ + "owner": "sns_rotv", + "min_report_rate": { + "type": "flt", "ver": "0", "data": "1.0" + }, + "debug_mode": { + "type": "int", "ver": "0", "data": "0" + }, + "sample_rate": { + "type": "flt", "ver": "0", "data": "5.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_smd.json b/proprietary/vendor/etc/sensors/config/sns_smd.json new file mode 100644 index 0000000..576039a --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_smd.json @@ -0,0 +1,41 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "347", "394", "400", + "407", "416", "417", "437", "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454","450", "476", + "467", "468", "469", "470", "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_smd": { + "owner": "sns_smd", + "sample_rate": { + "ver": "0", "type": "flt", "data": "10.0" + }, + "accel_window_time": { + "ver": "0", "type": "int", "data": "5" + }, + "detect_threshold": { + "ver": "0", "type": "flt", "data": "0.158113883" + }, + "self_transition_prob_sm": { + "ver": "0", "type": "flt", "data": "0.9" + }, + "variable_decision_latency": { + "ver": "0", "type": "int", "data": "1" + }, + "max_latency": { + "ver": "0", "type": "int", "data": "10" + }, + "step_count_thresh": { + "ver": "0", "type": "int", "data": "5" + }, + "step_window_time": { + "ver": "0", "type": "int", "data": "3" + }, + "eigen_thresh": { + "ver": "0", "type": "flt", "data": "6.0" + }, + "accel_norm_std_thresh": { + "ver": "0", "type": "flt", "data": "2.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_tilt.json b/proprietary/vendor/etc/sensors/config/sns_tilt.json new file mode 100644 index 0000000..c903590 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_tilt.json @@ -0,0 +1,19 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "HDK", "IDP", "QRD", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "339", "340", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454","450", "476", "467", "468", "469", "470", + "473", "474", "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_tilt": { + "owner": "sns_tilt", + "sample_rate": {"ver": "0","type": "flt","data": "10.0" + }, + "angle_threshold": {"ver": "0","type": "flt","data": "0.61086524" + }, + "init_accel_window_time": {"ver": "0","type": "flt", "data": "1.0" + }, + "accel_window_time": {"ver": "0","type": "flt", "data": "2.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_tilt_sw_disabled.json b/proprietary/vendor/etc/sensors/config/sns_tilt_sw_disabled.json new file mode 100644 index 0000000..f2c0fcc --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_tilt_sw_disabled.json @@ -0,0 +1,11 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "HDK", "QRD"], + "soc_id": ["339", "340", "356", "361", "415", "439", "456", "501", "502"] + }, + "sns_tilt": { + "owner": "sns_tilt", + "enabled": {"ver": "0","type": "int", "data": "0" + } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json b/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json new file mode 100644 index 0000000..9821579 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json @@ -0,0 +1,13 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "HDK", "IDP", "QRD", "IOT"], + "soc_id": ["291", "246", "305", "321", "336", "341", "355", "360", "365", "366", "393", "394", "400", "407", "417", "440", "444", "445", "420", "424", "443", + "434", "435", "459", "441", "471", "454","450", "476", "467", "468", "469", "470", "473", "474", "475", "497", "498", "515", "507", "518", "575", "576", "561", + "562", "578", "565", "585", "586"] + }, + "sns_tilt": { + "owner": "sns_tilt", + "enabled": {"ver": "0","type": "int", "data": "1" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json b/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json new file mode 100644 index 0000000..c156029 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json @@ -0,0 +1,48 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "IDP", "QRD", "IOT" + ], + "soc_id": ["291", "246", "305", "321", "336", "339", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", "440", + "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454","450", "476", "467", "468", "469", "470", "473", "474" + , "501", "502", "475", "497", "498", "515", "507", "518", "575", "576", "561", "562", "578", "565", "585", "586"] + }, + "sns_tilt_to_wake": { + "owner": "sns_tilt_to_wake", + "accel_sampling_rate":{"ver": "0","type": "flt", + "data": "25.0" + }, + "filter_window_seconds":{"ver": "0","type": "flt", + "data": "0.16" + }, + "accel_window_seconds":{"ver": "0","type": "flt", + "data": "1.1" + }, + "accel_sub_window_seconds":{"ver": "0","type": "flt", + "data": "0.55" + }, + "window_for_accel_stability_check_seconds":{"ver": "0","type": "flt", + "data": "0.16" + }, + "min_delta_pitch_threshold_deg":{"ver": "0","type": "flt", + "data": "45.0" + }, + "min_pitch_threshold_deg":{"ver": "0","type": "flt", + "data": "40.0" + }, + "min_abs_delta_z_threshold_deg":{"ver": "0","type": "flt", + "data": "10.0" + }, + "max_roll_threshold_deg":{"ver": "0","type": "flt", + "data": "25.0" + }, + "max_accel_spread_threshold":{"ver": "0","type": "flt", + "data": "4.8" + }, + "max_accel_norm_deviation_from_G_threshold":{"ver": "0","type": "flt", + "data": "2.7" + }, + "max_pitch_threshold_deg":{"ver": "0","type": "flt", + "data": "200.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json b/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json new file mode 100644 index 0000000..0892740 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json @@ -0,0 +1,28 @@ +{ + "config": { + "hw_platform": [ + "MTP", "Dragon", "Surf", "QRD" ], + "soc_id": ["300", "301"] + }, + "sns_wrist_pedo": { + "owner": "sns_wrist_pedo", + "default_disable": { + "ver": "0", "type": "int", "data": "0" + }, + "sample_rate": { + "ver": "0", "type": "flt", "data": "20.0" + }, + "step_count_threshold": { + "ver": "0", "type": "int", "data": "0" + }, + "step_threshold": { + "ver": "0", "type": "flt", "data": "10.1" + }, + "swing_threshold": { + "ver": "0", "type": "flt", "data": "10.5" + }, + "step_prob_threshold": { + "ver": "0", "type": "flt", "data": "0.49" + } + } +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/config/strait_default_sensors.json b/proprietary/vendor/etc/sensors/config/strait_default_sensors.json new file mode 100644 index 0000000..f1a3787 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/strait_default_sensors.json @@ -0,0 +1,185 @@ +{ + "config":{ + "hw_platform": ["QRD","MTP", "RCM", "Surf"], + "soc_id": ["507", "565", "578"] + }, + + "default_sensors": { + "owner": "suid", + ".accel": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gyro": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".mag": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".motion_detect": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".sensor_temperature": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + }, + ".attr_1": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "0" }, + "val": { "type": "str", "ver": "0", "data": "lsm6dst" } + } + }, + + ".proximity": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "16" }, + "val": { "type": "int", "ver": "0", "data": "1" } + } + }, + + ".ambient_light": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "16" }, + "val": { "type": "int", "ver": "0", "data": "1" } + } + }, + + ".sar": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "16" }, + "val": { "type": "int", "ver": "0", "data": "1" } + } + }, + + ".accel_cal": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gyro_cal": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".mag_cal": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".amd": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".tilt": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gyro_rot_matrix": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gravity": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".game_rv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".geomag_rv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".fmv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".rotv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/strait_dynamic_sensors.json b/proprietary/vendor/etc/sensors/config/strait_dynamic_sensors.json new file mode 100644 index 0000000..b0e5b0f --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/strait_dynamic_sensors.json @@ -0,0 +1,30 @@ +{ + "config":{ + "hw_platform": ["QRD","MTP", "RCM", "Surf"], + "soc_id": ["507", "565", "578"] + }, + + "sns_dynamic_libraries": + { + "owner": "dynamic_sensor", + "detect_on_every_boot":{ "type": "int", "ver": "0", + "data": "0" + }, + ".lib0": + { + "owner": "dynamic_sensor", + "name":{ "type": "str", "ver": "0", + "data": "lsm6dst_normal.so" + }, + "reg_fun":{ "type": "str", "ver": "0", + "data": "sns_register_lsm6dst" + }, + "reg_cnt":{ "type": "int", "ver": "0", + "data": "1" + }, + "detected":{ "type": "int", "ver": "0", + "data": "0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/strait_lsm6dso_0.json b/proprietary/vendor/etc/sensors/config/strait_lsm6dso_0.json new file mode 100644 index 0000000..132edfb --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/strait_lsm6dso_0.json @@ -0,0 +1,507 @@ +{ + "config":{ + "hw_platform": ["MTP"], + "soc_id": ["507"] + }, + "lsm6dso_0":{ + "owner": "lsm6dso", + ".accel":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "3" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".gyro":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "4" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".md":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".temp":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "2" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".ois_accel":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "3" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".ois_gyro":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "3" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "lsm6dso_0_platform":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "bus_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "1" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "106" + }, + "i3c_address":{ "type": "int", "ver": "0", + "data": "10" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "12500" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "95" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "1" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "min_odr":{ "type": "int", "ver": "0", + "data": "20" + }, + "max_odr":{ "type": "int", "ver": "0", + "data": "500" + } + }, + ".orient":{ + "owner": "lsm6dso", + "x":{ "type": "str", "ver": "0", + "data": "-x" + }, + "y":{ "type": "str", "ver": "0", + "data": "-y" + }, + "z":{ "type": "str", "ver": "0", + "data": "+z" + } + }, + ".gyro":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".accel":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".ois_gyro":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".odr_val": + { + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "600.0" + } + } + } + }, + ".ois_accel":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".odr_val": + { + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "700.0" + } + } + } + }, + ".temp":{ + "owner": "lsm6dso", + ".fac_cal": + { + "owner": "lsm6dso", + ".scale":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".md":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "thresh":{ "type": "flt", "ver": "0", + "data": "1.22" + }, + "disable":{ "type": "int", "ver": "0", + "data": "0" + }, + "win":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".dtp":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "thresh_x":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "thresh_y":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "thresh_z":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "priority":{ "type": "flt", "ver": "0", + "data": "0" + }, + "dur":{ "type": "flt", "ver": "0", + "data": "7" + }, + "quiet":{ "type": "flt", "ver": "0", + "data": "3" + }, + "shock":{ "type": "flt", "ver": "0", + "data": "3" + }, + "dur_sw":{ "type": "flt", "ver": "0", + "data": "7" + }, + "quiet_sw":{ "type": "flt", "ver": "0", + "data": "11" + } + } + }, + ".placement":{ + "owner": "lsm6dso", + "0":{ "type": "flt", "ver": "0", + "data": "0.1" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.1" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.1" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/strait_mmc56x3x_0.json b/proprietary/vendor/etc/sensors/config/strait_mmc56x3x_0.json new file mode 100644 index 0000000..a64e34f --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/strait_mmc56x3x_0.json @@ -0,0 +1,166 @@ +{ + "config":{ + "hw_platform": ["MTP"], + "soc_id": ["507"] + }, + "mmc56x3x_0":{ + "owner": "sns_mmc56x3x", + ".mag":{ + "owner": "sns_mmc56x3x", + ".config":{ + "owner": "sns_mmc56x3x", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "mmc56x3x_0_platform":{ + "owner": "sns_mmc56x3x", + ".config":{ + "owner": "sns_mmc56x3x", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "48" + }, + "i3c_address":{ "type": "int", "ver": "0", + "data": "20" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "100" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "1" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "1" + }, + + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".orient":{ + "owner": "sns_mmc56x3x", + "x":{ "type": "str", "ver": "0", + "data": "-x" + }, + "y":{ "type": "str", "ver": "0", + "data": "+y" + }, + "z":{ "type": "str", "ver": "0", + "data": "-z" + } + }, + ".mag":{ + "owner": "sns_mmc56x3x", + ".fac_cal":{ + "owner": "sns_mmc56x3x", + ".corr_mat":{ + "owner": "sns_mmc56x3x", + "0_0":{ "type": "flt", "ver": "0", + "data": "0.995646" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.092738" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "-0.009383" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.044638" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "0.905068" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "-0.062476" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.015024" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "-0.018037" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.201650" + } + }, + ".bias":{ + "owner": "sns_mmc56x3x", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".placement":{ + "owner": "sns_mmc56x3x", + "0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/strait_mn78xxx_0.json b/proprietary/vendor/etc/sensors/config/strait_mn78xxx_0.json new file mode 100644 index 0000000..1333e14 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/strait_mn78xxx_0.json @@ -0,0 +1,271 @@ +{ + "config":{ + "hw_platform": ["MTP"], + "soc_id": ["507"] + }, + "mn78xxx_0":{ + "owner": "sns_mn78xxx", + ".ambient_light":{ + "owner": "sns_mn78xxx", + ".config":{ + "owner": "sns_mn78xxx", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".proximity":{ + "owner": "sns_mn78xxx", + ".config":{ + "owner": "sns_mn78xxx", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "mn78xxx_0_platform":{ + "owner": "sns_mn78xxx", + ".config":{ + "owner": "sns_mn78xxx", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "65" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "60" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "1" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "2" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vdd_rail":{ "type": "str", "ver": "0", + "data": "/see/rail/eLDO" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".als":{ + "owner": "sns_mn78xxx", + ".fac_cal":{ + "owner": "sns_mn78xxx", + "scale":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "bias":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "target_lux":{ "type": "flt", "ver": "0", + "data": "400.0" + }, + "default_scale":{ "type": "flt", "ver": "0", + "data": "1000.0" + } + }, + ".config":{ + "owner": "sns_mn78xxx", + "als_lpc":{ "type":"flt", "ver":"0", "data":"230"}, + "als_ag_intt_ll":{ "type":"flt", "ver":"0", "data":"0x5"}, + "als_ag_cycle_ll":{ "type":"flt", "ver":"0", "data":"0x7"}, + "als_ag_gain0_ll":{ "type":"flt", "ver":"0", "data":"0x3"}, + "als_ag_gain1_ll":{ "type":"flt", "ver":"0", "data":"0x3"}, + "als_ag_l2ll_thd":{ "type":"flt", "ver":"0", "data":"60000"}, + "als_ag_ll2l_thd":{ "type":"flt", "ver":"0", "data":"250"}, + "als_offset_gain":{ "type":"flt", "ver":"0", "data":"210"}, + "als_scale_gain":{ "type":"flt", "ver":"0", "data":"450"}, + "als_lsrc_d65_factor":{ "type":"flt", "ver":"0", "data":"1370"}, + "als_lsrc_a_factor":{ "type":"flt", "ver":"0", "data":"1160"}, + "als_lsrc_hz_factor":{ "type":"flt", "ver":"0", "data":"800"}, + "als_lsrc_cwf_thd":{ "type":"flt", "ver":"0", "data":"100"}, + "als_lsrc_d65_thd":{ "type":"flt", "ver":"0", "data":"1588"}, + "als_lsrc_a_thd":{ "type":"flt", "ver":"0", "data":"2020"} + }, + ".ag_cfg":{ + "owner": "sns_mn78xxx", + "als_ag_en":{ "type":"flt", "ver":"0", "data":"1"}, + "als_ag_gain0_h":{ "type":"flt", "ver":"0", "data":"0x2"}, + "als_ag_gain0_m":{ "type":"flt", "ver":"0", "data":"0x3"}, + "als_ag_gain0_l":{ "type":"flt", "ver":"0", "data":"0x3"}, + "als_ag_gain1_h":{ "type":"flt", "ver":"0", "data":"0x1"}, + "als_ag_gain1_m":{ "type":"flt", "ver":"0", "data":"0x2"}, + "als_ag_gain1_l":{ "type":"flt", "ver":"0", "data":"0x3"}, + "als_ag_intt_h":{ "type":"flt", "ver":"0", "data":"0xf"}, + "als_ag_intt_m":{ "type":"flt", "ver":"0", "data":"0xf"}, + "als_ag_intt_l":{ "type":"flt", "ver":"0", "data":"0xd"}, + "als_ag_enh_h":{ "type":"flt", "ver":"0", "data":"0x2"}, + "als_ag_enh_m":{ "type":"flt", "ver":"0", "data":"0x0"}, + "als_ag_enh_l":{ "type":"flt", "ver":"0", "data":"0x0"}, + "als_ag_cycle_h":{ "type":"flt", "ver":"0", "data":"0x0"}, + "als_ag_cycle_m":{ "type":"flt", "ver":"0", "data":"0x2"}, + "als_ag_cycle_l":{ "type":"flt", "ver":"0", "data":"0x3"}, + "als_ag_h2m_thd":{ "type":"flt", "ver":"0", "data":"60000"}, + "als_ag_m2h_thd":{ "type":"flt", "ver":"0", "data":"2000"}, + "als_ag_m2l_thd":{ "type":"flt", "ver":"0", "data":"60000"}, + "als_ag_l2m_thd":{ "type":"flt", "ver":"0", "data":"1000"} + } + }, + ".ps":{ + "owner": "sns_mn78xxx", + ".fac_cal":{ + "owner": "sns_mn78xxx", + "near_threshold":{ "type": "flt", "ver": "0", + "data": "2300.0" + }, + "far_threshold":{ "type": "flt", "ver": "0", + "data": "1800.0" + }, + "ctir_config":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "cover":{ "type": "flt", "ver": "0", + "data": "2600.0" + }, + "uncover":{ "type": "flt", "ver": "0", + "data": "1600.0" + }, + "default_near_threshold":{ "type": "flt", "ver": "0", + "data": "2300" + }, + "default_far_threshold":{ "type": "flt", "ver": "0", + "data": "1800" + }, + "default_factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "delta2":{ "type": "flt", "ver": "0", + "data": "550.0" + }, + "delta3":{ "type": "flt", "ver": "0", + "data": "750.0" + }, + "factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "high_coeff":{ "type": "flt", "ver": "0", + "data": "0.91" + }, + "low_coeff":{ "type": "flt", "ver": "0", + "data": "0.43" + }, + "default_cover":{ "type": "flt", "ver": "0", + "data": "2600.0" + }, + "default_uncover":{ "type": "flt", "ver": "0", + "data": "1600.0" + } + }, + ".config":{ + "owner": "sns_mn78xxx", + "wait_time":{ "type":"flt", "ver":"0", "data":"0xa"}, + "ps_max_ct":{ "type":"flt", "ver":"0", "data":"10000"}, + "ps_intt":{ "type":"flt", "ver":"0", "data":"0x5"}, + "ps_gain0":{ "type":"flt", "ver":"0", "data":"0x1"}, + "ps_gain1":{ "type":"flt", "ver":"0", "data":"0x1"}, + "ps_pulse":{ "type":"flt", "ver":"0", "data":"0x4"}, + "ps_avg":{ "type":"flt", "ver":"0", "data":"0x6"}, + "ps_ir_drive":{ "type":"flt", "ver":"0", "data":"0x1"}, + "ps_ir_drive_tune":{ "type":"flt", "ver":"0", "data":"0x4"}, + "ps_persist":{ "type":"flt", "ver":"0", "data":"0x0"}, + "dynk_low_offset":{ "type":"flt", "ver":"0", "data":"260"}, + "dynk_high_offset":{ "type":"flt", "ver":"0","data":"570"}, + "ps_sun_intt":{ "type":"flt", "ver":"0","data":"0x5"}, + "ps_sun_gain0":{ "type":"flt", "ver":"0","data":"0x2"}, + "ps_sun_gain1":{ "type":"flt", "ver":"0","data":"0x2"}, + "ps_sun_pluse":{ "type":"flt", "ver":"0","data":"0x6"}, + "ps_sun_avg":{ "type":"flt", "ver":"0","data":"0x6"}, + "ps_sun_drive":{ "type":"flt", "ver":"0","data":"0x1"}, + "ps_sun_l2ll_thd":{ "type":"flt", "ver":"0","data":"30000"}, + "ps_sun_ll2l_thd":{ "type":"flt", "ver":"0","data":"1000"} + } + }, + ".placement":{ + "owner": "sns_mn78xxx", + "0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/strait_power_0.json b/proprietary/vendor/etc/sensors/config/strait_power_0.json new file mode 100644 index 0000000..38d0fb1 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/strait_power_0.json @@ -0,0 +1,15 @@ +{ + "config":{ + "hw_platform": ["MTP", "RCM", "Surf", "QRD"], + "soc_id": ["507", "565", "578"] + }, + "power":{ + "owner": "power_manager", + ".island":{ + "owner": "power_manager", + "enable_island":{ "type": "int", "ver": "0", + "data": "1" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/strait_qmc6308_0.json b/proprietary/vendor/etc/sensors/config/strait_qmc6308_0.json new file mode 100644 index 0000000..fa14f14 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/strait_qmc6308_0.json @@ -0,0 +1,238 @@ +{ + "config": + { + "hw_platform": ["MTP"], + "soc_id": ["507"] + }, + "qmc6308_0":{ + "owner": "qmc6308", + ".mag":{ + "owner": "qmc6308", + ".config":{ + "owner": "qmc6308", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".config_2":{ + "owner": "qmc6308", + "use_fifo":{ "type": "int", "ver": "0", + "data": "0" + }, + "nsf":{ "type": "int", "ver": "0", + "data": "0" + }, + "sdr":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "qmc6308_0_platform":{ + "owner": "qmc6308", + ".config":{ + "owner": "qmc6308", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "44" + }, + "i3c_address":{ "type": "int", "ver": "0", + "data": "50" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "113" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "2" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "1" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".orient":{ + "owner": "qmc6308", + "x":{ "type": "str", "ver": "0", + "data": "-x" + }, + "y":{ "type": "str", "ver": "0", + "data": "+y" + }, + "z":{ "type": "str", "ver": "0", + "data": "-z" + } + }, + ".mag":{ + "owner": "qmc6308", + ".fac_cal":{ + "owner": "qmc6308", + ".corr_mat":{ + "owner": "qmc6308", + "0_0":{ "type": "flt", "ver": "0", + "data": "0.998003333" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.062776667" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.000653333" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.063036667" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "0.921693333" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "-0.042003333" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "-0.024523333" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.024776667" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.16301" + } + }, + ".bias":{ + "owner": "qmc6308", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".fac_cal_2":{ + "owner": "qmc6308", + ".corr_mat":{ + "owner": "qmc6308", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "qmc6308", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".placement":{ + "owner": "qmc6308", + "0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/proto/descriptor.proto b/proprietary/vendor/etc/sensors/proto/descriptor.proto new file mode 100644 index 0000000..a2102d7 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/descriptor.proto @@ -0,0 +1,885 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). + + +syntax = "proto2"; + +package google.protobuf; + +option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DescriptorProtos"; +option csharp_namespace = "Google.Protobuf.Reflection"; +option objc_class_prefix = "GPB"; +option cc_enable_arenas = true; + +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. +option optimize_for = SPEED; + +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. +message FileDescriptorSet { + repeated FileDescriptorProto file = 1; +} + +// Describes a complete .proto file. +message FileDescriptorProto { + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. + repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. + repeated DescriptorProto message_type = 4; + repeated EnumDescriptorProto enum_type = 5; + repeated ServiceDescriptorProto service = 6; + repeated FieldDescriptorProto extension = 7; + + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field without harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; + + // The syntax of the proto file. + // The supported values are "proto2" and "proto3". + optional string syntax = 12; +} + +// Describes a message type. +message DescriptorProto { + optional string name = 1; + + repeated FieldDescriptorProto field = 2; + repeated FieldDescriptorProto extension = 6; + + repeated DescriptorProto nested_type = 3; + repeated EnumDescriptorProto enum_type = 4; + + message ExtensionRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + + optional ExtensionRangeOptions options = 3; + } + repeated ExtensionRange extension_range = 5; + + repeated OneofDescriptorProto oneof_decl = 8; + + optional MessageOptions options = 7; + + // Range of reserved tag numbers. Reserved tag numbers may not be used by + // fields or extension ranges in the same message. Reserved ranges may + // not overlap. + message ReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + } + repeated ReservedRange reserved_range = 9; + // Reserved field names, which may not be used by fields in the same message. + // A given name may only be reserved once. + repeated string reserved_name = 10; +} + +message ExtensionRangeOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +// Describes a field within a message. +message FieldDescriptorProto { + enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. + TYPE_DOUBLE = 1; + TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; + TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; + TYPE_FIXED64 = 6; + TYPE_FIXED32 = 7; + TYPE_BOOL = 8; + TYPE_STRING = 9; + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + TYPE_GROUP = 10; + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. + TYPE_BYTES = 12; + TYPE_UINT32 = 13; + TYPE_ENUM = 14; + TYPE_SFIXED32 = 15; + TYPE_SFIXED64 = 16; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. + } + + enum Label { + // 0 is reserved for errors + LABEL_OPTIONAL = 1; + LABEL_REQUIRED = 2; + LABEL_REPEATED = 3; + } + + optional string name = 1; + optional int32 number = 3; + optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). + optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. + optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + // TODO(kenton): Base-64 encode? + optional string default_value = 7; + + // If set, gives the index of a oneof in the containing type's oneof_decl + // list. This field is a member of that oneof. + optional int32 oneof_index = 9; + + // JSON name of this field. The value is set by protocol compiler. If the + // user has set a "json_name" option on this field, that option's value + // will be used. Otherwise, it's deduced from the field's name by converting + // it to camelCase. + optional string json_name = 10; + + optional FieldOptions options = 8; +} + +// Describes a oneof. +message OneofDescriptorProto { + optional string name = 1; + optional OneofOptions options = 2; +} + +// Describes an enum type. +message EnumDescriptorProto { + optional string name = 1; + + repeated EnumValueDescriptorProto value = 2; + + optional EnumOptions options = 3; + + // Range of reserved numeric values. Reserved values may not be used by + // entries in the same enum. Reserved ranges may not overlap. + // + // Note that this is distinct from DescriptorProto.ReservedRange in that it + // is inclusive such that it can appropriately represent the entire int32 + // domain. + message EnumReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Inclusive. + } + + // Range of reserved numeric values. Reserved numeric values may not be used + // by enum values in the same enum declaration. Reserved ranges may not + // overlap. + repeated EnumReservedRange reserved_range = 4; + + // Reserved enum value names, which may not be reused. A given name may only + // be reserved once. + repeated string reserved_name = 5; +} + +// Describes a value within an enum. +message EnumValueDescriptorProto { + optional string name = 1; + optional int32 number = 2; + + optional EnumValueOptions options = 3; +} + +// Describes a service. +message ServiceDescriptorProto { + optional string name = 1; + repeated MethodDescriptorProto method = 2; + + optional ServiceOptions options = 3; +} + +// Describes a method of a service. +message MethodDescriptorProto { + optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. + optional string input_type = 2; + optional string output_type = 3; + + optional MethodOptions options = 4; + + // Identifies if client streams multiple client messages + optional bool client_streaming = 5 [default = false]; + // Identifies if server streams multiple server messages + optional bool server_streaming = 6 [default = false]; +} + + +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Objective-C plugin) and your project website (if available) -- there's no +// need to explain how you intend to use them. Usually you only need one +// extension number. You can declare multiple options with only one extension +// number by putting them in a sub-message. See the Custom Options section of +// the docs for examples: +// https://developers.google.com/protocol-buffers/docs/proto#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + +message FileOptions { + + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. + optional string java_package = 1; + + + // If set, all the classes from the .proto file are wrapped in a single + // outer class with the given name. This applies to both Proto1 + // (equivalent to the old "--one_java_file" option) and Proto2 (where + // a .proto always translates to a single class, but you may want to + // explicitly choose the class name). + optional string java_outer_classname = 8; + + // If set true, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the outer class + // named by java_outer_classname. However, the outer class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. + optional bool java_multiple_files = 10 [default = false]; + + // This option does nothing. + optional bool java_generate_equals_and_hash = 20 [deprecated=true]; + + // If set true, then the Java2 code generator will generate code that + // throws an exception whenever an attempt is made to assign a non-UTF-8 + // byte sequence to a string field. + // Message reflection will do the same. + // However, an extension field still accepts non-UTF-8 byte sequences. + // This option has no effect on when used with the lite runtime. + optional bool java_string_check_utf8 = 27 [default = false]; + + + // Generated classes can be optimized for speed or code size. + enum OptimizeMode { + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. + } + optional OptimizeMode optimize_for = 9 [default = SPEED]; + + // Sets the Go package where structs generated from this .proto will be + // placed. If omitted, the Go package will be derived from the following: + // - The basename of the package import path, if provided. + // - Otherwise, the package statement in the .proto file, if present. + // - Otherwise, the basename of the .proto file, without extension. + optional string go_package = 11; + + + + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of google.protobuf. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default = false]; + optional bool java_generic_services = 17 [default = false]; + optional bool py_generic_services = 18 [default = false]; + optional bool php_generic_services = 42 [default = false]; + + // Is this file deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for everything in the file, or it will be completely ignored; in the very + // least, this is a formalization for deprecating files. + optional bool deprecated = 23 [default = false]; + + // Enables the use of arenas for the proto messages in this file. This applies + // only to generated classes for C++. + optional bool cc_enable_arenas = 31 [default = false]; + + + // Sets the objective c class prefix which is prepended to all objective c + // generated classes from this .proto. There is no default. + optional string objc_class_prefix = 36; + + // Namespace for generated classes; defaults to the package. + optional string csharp_namespace = 37; + + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + optional string swift_prefix = 39; + + // Sets the php class prefix which is prepended to all php generated classes + // from this .proto. Default is empty. + optional string php_class_prefix = 40; + + // Use this option to change the namespace of php generated classes. Default + // is empty. When this option is empty, the package name will be used for + // determining the namespace. + optional string php_namespace = 41; + + // Use this option to change the namespace of php generated metadata classes. + // Default is empty. When this option is empty, the proto file name will be + // used for determining the namespace. + optional string php_metadata_namespace = 44; + + // Use this option to change the package of ruby generated classes. Default + // is empty. When this option is not set, the package name will be used for + // determining the ruby package. + optional string ruby_package = 45; + + + // The parser stores options it doesn't recognize here. + // See the documentation for the "Options" section above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. + // See the documentation for the "Options" section above. + extensions 1000 to max; + + reserved 38; +} + +message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. + optional bool message_set_wire_format = 1 [default = false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". + optional bool no_standard_descriptor_accessor = 2 [default = false]; + + // Is this message deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the message, or it will be completely ignored; in the very least, + // this is a formalization for deprecating messages. + optional bool deprecated = 3 [default = false]; + + // Whether the message is an automatically generated map entry type for the + // maps field. + // + // For maps fields: + // map map_field = 1; + // The parsed descriptor looks like: + // message MapFieldEntry { + // option map_entry = true; + // optional KeyType key = 1; + // optional ValueType value = 2; + // } + // repeated MapFieldEntry map_field = 1; + // + // Implementations may choose not to generate the map_entry=true message, but + // use a native map in the target language to hold the keys and values. + // The reflection APIs in such implementations still need to work as + // if the field is a repeated message field. + // + // NOTE: Do not set the option in .proto files. Always use the maps syntax + // instead. The option should only be implicitly set by the proto compiler + // parser. + optional bool map_entry = 7; + + reserved 8; // javalite_serializable + reserved 9; // javanano_as_lite + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is not yet implemented in the open source + // release -- sorry, we'll try to include it in a future version! + optional CType ctype = 1 [default = STRING]; + enum CType { + // Default mode. + STRING = 0; + + CORD = 1; + + STRING_PIECE = 2; + } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. In proto3, only explicit setting it to + // false will avoid using packed encoding. + optional bool packed = 2; + + // The jstype option determines the JavaScript type used for values of the + // field. The option is permitted only for 64 bit integral and fixed types + // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + // is represented as JavaScript string, which avoids loss of precision that + // can happen when a large value is converted to a floating point JavaScript. + // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + // use the JavaScript "number" type. The behavior of the default option + // JS_NORMAL is implementation dependent. + // + // This option is an enum to permit additional types to be added, e.g. + // goog.math.Integer. + optional JSType jstype = 6 [default = JS_NORMAL]; + enum JSType { + // Use the default type. + JS_NORMAL = 0; + + // Use JavaScript strings. + JS_STRING = 1; + + // Use JavaScript numbers. + JS_NUMBER = 2; + } + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outer message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + optional bool lazy = 5 [default = false]; + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. + optional bool deprecated = 3 [default = false]; + + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default = false]; + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; + + reserved 4; // removed jtype +} + +message OneofOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumOptions { + + // Set this option to true to allow mapping different tag names to the same + // value. + optional bool allow_alias = 2; + + // Is this enum deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum, or it will be completely ignored; in the very least, this + // is a formalization for deprecating enums. + optional bool deprecated = 3 [default = false]; + + reserved 5; // javanano_as_lite + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumValueOptions { + // Is this enum value deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum value, or it will be completely ignored; in the very least, + // this is a formalization for deprecating enum values. + optional bool deprecated = 1 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message ServiceOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this service deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the service, or it will be completely ignored; in the very least, + // this is a formalization for deprecating services. + optional bool deprecated = 33 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MethodOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this method deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the method, or it will be completely ignored; in the very least, + // this is a formalization for deprecating methods. + optional bool deprecated = 33 [default = false]; + + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = 34 + [default = IDEMPOTENCY_UNKNOWN]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + + +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. +message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents + // "foo.(bar.baz).qux". + message NamePart { + required string name_part = 1; + required bool is_extension = 2; + } + repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. + optional string identifier_value = 3; + optional uint64 positive_int_value = 4; + optional int64 negative_int_value = 5; + optional double double_value = 6; + optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendant. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed = true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed = true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // leading_detached_comments will keep paragraphs of comments that appear + // before (but not connected to) the current element. Each paragraph, + // separated by empty lines, will be one comment element in the repeated + // field. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // // Detached comment for corge. This is not leading or trailing comments + // // to qux or corge because there are blank lines separating it from + // // both. + // + // // Detached comment for corge paragraph 2. + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + // + // // ignored detached comments. + optional string leading_comments = 3; + optional string trailing_comments = 4; + repeated string leading_detached_comments = 6; + } +} + +// Describes the relationship between generated code and its original source +// file. A GeneratedCodeInfo message is associated with only one generated +// source file, but may contain references to different source .proto files. +message GeneratedCodeInfo { + // An Annotation connects some span of text in generated code to an element + // of its generating .proto file. + repeated Annotation annotation = 1; + message Annotation { + // Identifies the element in the original source .proto file. This field + // is formatted the same as SourceCodeInfo.Location.path. + repeated int32 path = 1 [packed = true]; + + // Identifies the filesystem path to the original source .proto. + optional string source_file = 2; + + // Identifies the starting offset in bytes in the generated code + // that relates to the identified object. + optional int32 begin = 3; + + // Identifies the ending offset in bytes in the generated code that + // relates to the identified offset. The end offset should be one past + // the last relevant byte (so the length of the text = end - begin). + optional int32 end = 4; + } +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_barocal.proto b/proprietary/vendor/etc/sensors/proto/mot_barocal.proto new file mode 100644 index 0000000..8aca37c --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_barocal.proto @@ -0,0 +1,37 @@ +// @file mot_barocal.proto +// +// Defines message types for Motorola's barometer calibration +// +// Copyright (c) 2020 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_barocal" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - MOT_BAROCAL_MSGID_MOT_BAROCAL_REQ is used to enable the sensor + +// Message IDs for Mot Barocal +enum mot_barocal_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_BAROCAL_MSGID_MOT_BAROCAL_REQ = 998; +} + +message mot_barocal_req +{ + // Reference pressure + required float reference = 1; +} + +// Stream events: +// +// Emits one sns_cal_event on completion +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_camgest.proto b/proprietary/vendor/etc/sensors/proto/mot_camgest.proto new file mode 100644 index 0000000..8055f48 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_camgest.proto @@ -0,0 +1,50 @@ +// @file mot_camgest.proto +// +// Defines message types for the Motorola Camera Gesture Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_camgest detects the twist gesture to trigger the camera +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_camgest" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_camgest_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_CAMGEST_MSGID_MOT_CAMGEST_EVENT = 772; +} + +enum mot_camgest_y_orient { + option (nanopb_enumopt).long_names = false; + MOT_CAMGEST_Y_ORIENT_UNKNOWN = 0; + MOT_CAMGEST_Y_ORIENT_DOWN = 1; + MOT_CAMGEST_Y_ORIENT_FLAT = 2; + MOT_CAMGEST_Y_ORIENT_UP = 3; +} + +message mot_camgest_event +{ + // Event output + required uint32 duration_ms = 1; + optional mot_camgest_y_orient y_orient = 2; +} + +// Stream events: +// +// The mot_camgest_event message is used to publish updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto b/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto new file mode 100644 index 0000000..7aba87a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto @@ -0,0 +1,44 @@ +// @file mot_chopchop.proto +// +// Defines message types for the Motorola ChopChop Gesture Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_chopchop detects the double chop gesture to trigger the torch +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_chopchop" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_chopchop_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_CHOPCHOP_MSGID_MOT_CHOPCHOP_EVENT = 772; +} + +message mot_chopchop_event +{ + // Event output + required uint32 abort_count = 1; + required float peak1 = 2; + required float peak2 = 3; +} + +// Stream events: +// +// The mot_chopchop_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_devorient.proto b/proprietary/vendor/etc/sensors/proto/mot_devorient.proto new file mode 100644 index 0000000..0f4b1f5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_devorient.proto @@ -0,0 +1,106 @@ +// @file mot_devorient.proto +// +// Defines the API for Motorola DevOrient algorithm. +// +// Copyright (c) 2017, Motorola. +// All rights reserved. +// Confidential and Proprietary - Motorola, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Attribute requirements: +// The DevOrient algorithm publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value is "mot_devorient_core", +// "mot_disprot", "mot_flatup", or "mot_flatdown". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS is 1.0 +// 3. SNS_STD_SENSOR_ATTRID_RANGES are 0 to 16 or 0 to 2. These are enum +// values that correspond to mot_devorient_flat_state and +// mot_devorient_disp_state. +// 4. SNS_STD_SENSOR_ATTRID_RATES is 1.0 +// 5. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The DevOrient algorithm supports on-change mode +// 2. The DevOrient algorithm handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all stream enable/update requests. +// 3. The Sensor reports an initial sample for each request, +// followed by samples for each transition. + +// Message IDs for Motorola DevOrient Sensor +enum mot_devorient_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: mot_devorient_core_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_CORE_EVENT = 456; + + // Uses message: mot_devorient_disprot_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_DISPROT_EVENT = 457; + + // Uses message: mot_devorient_flatup_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_FLATUP_EVENT = 458; + + // Uses message: mot_devorient_flatdown_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_FLATDOWN_EVENT = 459; +} + +enum mot_devorient_flat_state { + option (nanopb_enumopt).long_names = false; + + // These values selected to match values used in DSP register + MOT_DEVORIENT_FLAT_UNKNOWN = 0; + MOT_DEVORIENT_FLAT_UP = 1; + MOT_DEVORIENT_FLAT_DOWN = 2; +} + +enum mot_devorient_disp_state { + option (nanopb_enumopt).long_names = false; + + MOT_DEVORIENT_DISP_PORTRAIT = 0; + MOT_DEVORIENT_DISP_CCW_LANDSCAPE = 1; + MOT_DEVORIENT_DISP_PORTRAIT_INV = 2; + MOT_DEVORIENT_DISP_CW_LANDSCAPE = 3; + MOT_DEVORIENT_DISP_UNKNOWN = 16; +} + +// Events types for DevOrient Sensor +message mot_devorient_core_event +{ + required mot_devorient_disp_state disp_state = 1 [default = MOT_DEVORIENT_DISP_UNKNOWN]; + required mot_devorient_flat_state flat_state = 2 [default = MOT_DEVORIENT_FLAT_UNKNOWN]; + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message mot_devorient_disprot_event +{ + required mot_devorient_disp_state disp_state = 1 [default = MOT_DEVORIENT_DISP_UNKNOWN]; + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message mot_devorient_flatup_event +{ + required bool flatup = 1 [default = false]; + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message mot_devorient_flatdown_event +{ + required bool flatdown = 1 [default = false]; + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Handling stream events: +// 1. The DevOrient algorithm publishes events +// using mot_devorient_core_event, mot_devorient_disprot_event, +// mot_devorient_flatup_event, and mot_devorient_flatdown_event messages. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. DevOrient algorithm does not publish configuration events. + +// Handling self-test requests: +// Not supported + +// Handling test events: +// Not Supported diff --git a/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto b/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto new file mode 100644 index 0000000..1df4e33 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto @@ -0,0 +1,37 @@ +// @file mot_dsp_usound.proto +// +// Defines message types for the Motorola DSP Ultrasound (approach) Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_dsp_usound detects the approach of the user via ultrasound. +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_dsp_usound" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_dsp_usound_msgid { + option (nanopb_enumopt).long_names = false; + + // This message has no payload + MOT_DSP_USOUND_MSGID_MOT_DSP_USOUND_APPROACH_EVENT = 772; +} + +// Stream events: +// +// The mot_dsp_usound_event message indicates a detected event +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_flip.proto b/proprietary/vendor/etc/sensors/proto/mot_flip.proto new file mode 100644 index 0000000..4631f18 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_flip.proto @@ -0,0 +1,54 @@ +// @file mot_flip.proto +// +// Defines message types for the Motorola Flip State Sensor. +// +// Copyright (c) 2018 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_flip detects the current state of the devices flip from an inductive sensor. +// This is an on-change sensor. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_flip" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_flip_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_FLIP_MSGID_MOT_FLIP_EVENT = 772; +} + +enum mot_flip_state { + option (nanopb_enumopt).long_names = false; + + MOT_FLIP_STATE_UNKNOWN = 0; + MOT_FLIP_STATE_OPEN = 1; + MOT_FLIP_STATE_CLOSED = 2; +} + +message mot_flip_event +{ + // Event output + required mot_flip_state flip_state = 1 [default = MOT_FLIP_STATE_UNKNOWN]; + + // Running count of open/closed events since registration at boot + optional uint32 event_count = 2 [default = 0]; + + // Integer representing the cause of the new event (see the driver for the enum) + optional int32 cause = 3 [default = 0]; +} + +// Stream events: +// +// The mot_flip_event message is used to publish updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_ftm.proto b/proprietary/vendor/etc/sensors/proto/mot_ftm.proto new file mode 100644 index 0000000..6d7a917 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_ftm.proto @@ -0,0 +1,51 @@ +// @file mot_ftm.proto +// +// Defines message types for the Motorola Flip-To-Mute Algorithm. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Flip-To-Mute +// Mutes notifications when the phone is motionless, flat down & stowed + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_ftm" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Mot FTM Algorithm +enum mot_ftm_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: mot_ftm_event + MOT_FTM_MSGID_MOT_FTM_EVENT = 927; +} + +enum mot_ftm_mute_state +{ + option (nanopb_enumopt).long_names = false; + + MOT_FTM_STATE_UNMUTED = 0; + MOT_FTM_STATE_MUTED = 1; + MOT_FTM_STATE_UNKNOWN = 2; +} + +message mot_ftm_event +{ + // Mot FTM state + required mot_ftm_mute_state state = 1 [default = MOT_FTM_STATE_UNKNOWN]; +} + +// Stream events: +// +// The mot_ftm_event message is used to publish the updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_glance.proto b/proprietary/vendor/etc/sensors/proto/mot_glance.proto new file mode 100644 index 0000000..40acc38 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_glance.proto @@ -0,0 +1,61 @@ +// @file mot_glance.proto +// +// Defines standard message types for the Mot_Glance +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; + +// Mot_Glance Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_glance" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Sensor output event: +// Mot_Glance use mot_glance_event for it's output event + +enum mot_glance_msgid +{ + option (nanopb_enumopt).long_names = false; + + // From client, name is string matched to "mot_glance_config" msg below + MOT_GLANCE_MSGID_MOT_GLANCE_CONFIG = 512; + + // From Algo, name is string matched to "mot_glance_event" msg below + MOT_GLANCE_MSGID_MOT_GLANCE_EVENT = 772; +} + +enum mot_glance_event_type +{ + option (nanopb_enumopt).long_names = false; + + MOT_GLANCE_EVENT_TYPE_UNKNOWN = 0x00; + MOT_GLANCE_EVENT_TYPE_EXIT_STOWED = 0x01; + MOT_GLANCE_EVENT_TYPE_EXIT_FLATUP = 0x02; + MOT_GLANCE_EVENT_TYPE_EXIT_FLATDOWN = 0x04; + MOT_GLANCE_EVENT_TYPE_IR_GESTURE = 0x08; + MOT_GLANCE_EVENT_TYPE_MOVEMENT_GESTURE = 0x10; + MOT_GLANCE_EVENT_TYPE_USOUND_GESTURE = 0x20; + MOT_GLANCE_EVENT_TYPE_USOUND_ON_REQ = 0x40; + MOT_GLANCE_EVENT_TYPE_USOUND_OFF_REQ = 0x80; +} + +message mot_glance_event +{ + // The state which generated the glance event + required mot_glance_event_type state = 1 [default = MOT_GLANCE_EVENT_TYPE_UNKNOWN]; +} + +// Configuration Message +// Used to either request for a new configuration of the Mot_Glance Sensor or +// alter an already existing configuration +message mot_glance_config +{ + // Bitmask of mot_glance_event_type(s) indicating which gestures are monitored for this request + required uint32 gestures_enabled = 1 [default = 0]; + +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_log.proto b/proprietary/vendor/etc/sensors/proto/mot_log.proto new file mode 100644 index 0000000..55ac8a3 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_log.proto @@ -0,0 +1,46 @@ +// @file mot_log.proto +// +// Defines message types for the Motorola Logging Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; + +// Mot mechanism for slpi code to send log messages through a logging sensor +// and QMI up to the standard Android logging mechanism + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_log" + +// Message IDs for Mot Log Sensor +enum mot_log_msgid { + option (nanopb_enumopt).long_names = false; + + // MSGID for sensors to send events to the mot_log sensor + MOT_LOG_MSGID_MOT_LOG_EVENT = 470; +} + +// Verb levels (same as sensors_log.h) +enum mot_log_verb { + option (nanopb_enumopt).long_names = false; + + MOT_LOG_VERB_E = 1; + MOT_LOG_VERB_I = 2; + MOT_LOG_VERB_D = 3; + MOT_LOG_VERB_V = 4; +} + +message mot_log_event +{ + // Verbosity + required mot_log_verb verb = 1 [default = MOT_LOG_VERB_V]; + + // Message + required string msg = 2; + + // Optional log tag (truncated to 15 chars) + optional string tag = 3; +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_lts.proto b/proprietary/vendor/etc/sensors/proto/mot_lts.proto new file mode 100644 index 0000000..d73ef49 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_lts.proto @@ -0,0 +1,40 @@ +// @file mot_lts.proto +// +// Defines message types for the Motorola Flip-To-Mute Algorithm. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Lift-To-Silence +// Mute the ringer when device exits flat & unstowed while device is ringing + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_lts" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Mot LTS Algorithm +enum mot_lts_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: mot_lts_event + MOT_LTS_MSGID_MOT_LTS_EVENT = 666; +} + +message mot_lts_event +{ + // Message is empty; we just need to notify that an LTS happened. +} + +// Stream events: +// +// The mot_lts_event message is used to publish the updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_ltv.proto b/proprietary/vendor/etc/sensors/proto/mot_ltv.proto new file mode 100644 index 0000000..32db33f --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_ltv.proto @@ -0,0 +1,52 @@ +// @file mot_ltv.proto +// +// Defines message types for the Motorola Lift to View Gesture Sensor. +// +// Copyright (c) 2017-2018 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_ltv detects the that the device was lifted into a viewing position +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_ltv" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_ltv_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_LTV_MSGID_MOT_LTV_EVENT = 772; +} + +enum mot_ltv_trig_type +{ + option (nanopb_enumopt).long_names = false; + MOT_LTV_TRIG_TYPE_NONE = 0; + MOT_LTV_TRIG_TYPE_LIFTED = 1; + MOT_LTV_TRIG_TYPE_RECALL = 2; +} + +message mot_ltv_event +{ + // Event output + required mot_ltv_trig_type trig_type = 1; // trigger type + required uint32 confidence = 2; // 0-100 percentage confidence of trigger + required uint32 landing_delta_ms = 3; // time diff of events in landing window +} + +// Stream events: +// +// The mot_ltv_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_movement.proto b/proprietary/vendor/etc/sensors/proto/mot_movement.proto new file mode 100644 index 0000000..7ec17f8 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_movement.proto @@ -0,0 +1,82 @@ +// @file mot_movement.proto +// +// Defines standard message types for the Mot_Movement +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; + +// Mot_Movement Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_movement" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Sensor output event: +// Mot_Movement use mot_movement_event for it's output event + +enum mot_movement_msgid +{ + option (nanopb_enumopt).long_names = false; + + // From client, name is string matched to "mot_movement_config" msg below + MOT_MOVEMENT_MSGID_MOT_MOVEMENT_CONFIG = 512; + + // From Algo, name is string matched to "mot_movement_event" msg below + MOT_MOVEMENT_MSGID_MOT_MOVEMENT_EVENT = 772; +} + +enum mot_movement_event_type +{ + option (nanopb_enumopt).long_names = false; + + // These values selected to match values used in DSP register + MOT_MOVEMENT_EVENT_TYPE_UNKNOWN = 0; + MOT_MOVEMENT_EVENT_TYPE_MOTION = 1; + MOT_MOVEMENT_EVENT_TYPE_STATIONARY = 2; +} + +message mot_movement_event +{ + // motion state + required mot_movement_event_type state = 1 [default = MOT_MOVEMENT_EVENT_TYPE_UNKNOWN]; +} + +// Configuration Message +// Used to either request for a new configuration of the Mot_Movement Sensor or +// alter an already existing configuration +message mot_movement_config +{ + /**< standard deviation threshold for motion, 9.8 m/s2 (1G) = 1024 */ + required float threshold = 1; + + /**< Continuous motion duration before event triggers. In s. */ + required uint32 startTime = 2; + + /**< Continuous non-motion duration before event triggers. In s. */ + required uint32 stopTime = 3; + + /**< A ratio (alpha coefficient) to apply when calculating the + * standard deviation running average. Must be a positive value in + * the (0, 1) interval. + * + * When motion is increasing, the average is adjusted as: + * runAvg = ratio * current + (1 - ratio) * runAvg + * When motion is decreasing, the average is adjusted as: + * runAvg = ratio * runAvg + (1 - ratio) * current + * + * When this optional field is not provided, the algorithm will not + * compute any running average. + */ + optional float runAvgRatio = 4; + + /**< The running average is capped at this value so that when there + * is extensive motion it doesn't take a long time to settle back + * down. This value is ignored if the runAvgRatio is not set. + */ + optional float runAvgCap = 5; + +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_offbody.proto b/proprietary/vendor/etc/sensors/proto/mot_offbody.proto new file mode 100644 index 0000000..89a8b6b --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_offbody.proto @@ -0,0 +1,55 @@ +// @file mot_offbody.proto +// +// Defines message types for the Motorola Off Body Sensor. +// +// Copyright (c) 2018 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_offbody monitors accelerometer variance. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_offbody" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_offbody_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_OFFBODY_MSGID_MOT_OFFBODY_EVENT = 783; +} + +enum mot_offbody_trig_type +{ + option (nanopb_enumopt).long_names = false; + MOT_OFFBODY_TRIG_TYPE_UNKNOWN = 0; + MOT_OFFBODY_TRIG_TYPE_ON_BODY = 1; + MOT_OFFBODY_TRIG_TYPE_OFF_BODY = 2; +} + +message mot_offbody_event +{ + // Event output + + // Trigger type + required mot_offbody_trig_type trig_type = 1; + + // Device angle at time of trigger (state change) + // The range is 0 degrees to 180 degrees + // 0 = Flat up, 180 = flat down + required float theta = 2; +} + +// Stream events: +// +// The mot_offbody_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_probe.proto b/proprietary/vendor/etc/sensors/proto/mot_probe.proto new file mode 100644 index 0000000..1b0ef40 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_probe.proto @@ -0,0 +1,62 @@ +// @file mot_probe.proto +// +// Defines message types for the Motorola's HW probing utilities +// +// Copyright (c) 2019 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; + +// mot_probe defines request and response types to be used by drivers so that +// users can probe sensor registers from the command line using sns_mot_client + +// Message IDs +enum mot_probe_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_PROBE_MSGID_MOT_PROBE_REQ = 778; + MOT_PROBE_MSGID_MOT_PROBE_RESP = 779; +} + +enum mot_probe_constants { + option (nanopb_enumopt).long_names = false; + + MOT_PROBE_MAX_RD_SIZE = 64; +} + +message mot_probe_req +{ + // Are we requesting a register read or write? + required bool is_read = 1 [default = true]; + + // What's the address of the register we want to read? + required uint32 reg_addr = 2; + + // What's the SUID of the sensor we're probing? + required uint64 suid_high = 3; + required uint64 suid_low = 4; + + // If this is a write: What value should we write? + optional uint32 wr_value = 5; + + // If the driver controls multiple physical sensors, we need to disambiguate + // which sensor we want. + // i2c: give the device's i2c address + // spi: give the device's chip select value + optional uint32 devaddr = 6; + + // How many registers should I read (starting at reg_addr)? + // Default is 1 + optional uint32 rd_size = 7; +} + +message mot_probe_resp +{ + // Did it work? + required bool success = 1; + + // If we're responding to a read, what did we get? + optional uint32 rd_value = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto b/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto new file mode 100644 index 0000000..35152a2 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto @@ -0,0 +1,47 @@ +// @file mot_proxcal.proto +// +// Defines message types for the Motorola Proximity Sensor Recalibration Algorithm. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Proximity Sensor Recalibration +// Sends a recalibrate request to the Proximity Sensor driver when it is +// requested by the AP or favorable conditions are detected + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_proxcal" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor +// - MOT_PROXCAL_MSGID_MOT_PROXCAL_CONFIG is used by the AP to trigger a +// recalibration (for In-Call Forced Proximity Recalibration AKA "Double Pump") +// - MOT_PROXCAL_MSGID_MOT_PROXCAL_UNLOCK_CONFIG is used by the AP to trigger a +// recalibration, but only if the device is in portrait mode (for Screen +// Unlock Proximity Recalibration) + +// Message IDs for Mot ProxCal Algorithm +enum mot_proxcal_msgid { + option (nanopb_enumopt).long_names = false; + + // From AP, no payload + MOT_PROXCAL_MSGID_MOT_PROXCAL_CONFIG = 693; + + // From AP, no payload + MOT_PROXCAL_MSGID_MOT_PROXCAL_UNLOCK_CONFIG = 694; +} + +// Stream events: +// +// Sends SNS_PROXIMITY_MSGID_SNS_PROXIMITY_RECAL_CONFIG messages to the prox +// driver (as defined in sns_proximity.proto) +// +// This sensor does not publish configuration events. +// +// This sensor does not support test events \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/proto/mot_stowed.proto b/proprietary/vendor/etc/sensors/proto/mot_stowed.proto new file mode 100644 index 0000000..e14a07f --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_stowed.proto @@ -0,0 +1,55 @@ +// @file mot_stowed.proto +// +// Defines message types for the Motorola Stowed Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Stowed monitors light and proximity events among possible other inputs +// and estimates if the device is in-pocket, purse etc, aka stowed. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_stowed" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Mot Stowed Sensor +enum mot_stowed_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_STOWED_MSGID_MOT_STOWED_FORCE_PROX_ON_REQ = 767; + + MOT_STOWED_MSGID_MOT_STOWED_EVENT = 772; + + // sent after being stowed for a period of time + MOT_STOWED_MSGID_MOT_DEL_STOWED_EVENT = 773; +} + +enum mot_stowed_event_type +{ + option (nanopb_enumopt).long_names = false; + + // These values selected to match values used in DSP register + MOT_STOWED_EVENT_TYPE_NOT_STOWED = 0; + MOT_STOWED_EVENT_TYPE_STOWED = 1; + MOT_STOWED_EVENT_TYPE_UNKNOWN = 3; +} + +message mot_stowed_event +{ + // Mot Stowed state + required mot_stowed_event_type state = 1 [default = MOT_STOWED_EVENT_TYPE_NOT_STOWED]; +} + +// Stream events: +// +// The mot_stowed_event message is used to publish the updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_vsync.proto b/proprietary/vendor/etc/sensors/proto/mot_vsync.proto new file mode 100644 index 0000000..847d304 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_vsync.proto @@ -0,0 +1,52 @@ +// @file mot_vsync.proto +// +// Defines message types for the Motorola Vsync State Sensor. +// +// Copyright (c) 2019 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_vsync detects the panel vsync and generates a delayed gpio output along with panel status. +// This is an on-change sensor. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_vsync" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_vsync_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_VSYNC_MSGID_MOT_VSYNC_EVENT = 772; +} + +enum mot_vsync_state { + option (nanopb_enumopt).long_names = false; + + MOT_VSYNC_STATE_PANEL_UNKNOWN = 0; + MOT_VSYNC_STATE_PANEL_ON = 1; + MOT_VSYNC_STATE_PANEL_OFF = 2; +} + +message mot_vsync_event +{ + // Event output + required mot_vsync_state vsync_state = 1 [default = MOT_VSYNC_STATE_PANEL_UNKNOWN]; + + // Panel frequency detected by driver + required uint32 det_freq_hz = 2 [default = 0]; +} + +// Stream events: +// +// The mot_vsync_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/nanopb.proto b/proprietary/vendor/etc/sensors/proto/nanopb.proto new file mode 100644 index 0000000..9b2f0fb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/nanopb.proto @@ -0,0 +1,97 @@ +// Custom options for defining: +// - Maximum size of string/bytes +// - Maximum number of elements in array +// +// These are used by nanopb to generate statically allocable structures +// for memory-limited environments. + +syntax = "proto2"; +import "google/protobuf/descriptor.proto"; + +option java_package = "fi.kapsi.koti.jpa.nanopb"; + +enum FieldType { + FT_DEFAULT = 0; // Automatically decide field type, generate static field if possible. + FT_CALLBACK = 1; // Always generate a callback field. + FT_POINTER = 4; // Always generate a dynamically allocated field. + FT_STATIC = 2; // Generate a static field or raise an exception if not possible. + FT_IGNORE = 3; // Ignore the field completely. +} + +enum IntSize { + IS_DEFAULT = 0; // Default, 32/64bit based on type in .proto + IS_8 = 8; + IS_16 = 16; + IS_32 = 32; + IS_64 = 64; +} + +// This is the inner options message, which basically defines options for +// a field. When it is used in message or file scope, it applies to all +// fields. +message NanoPBOptions { + // Allocated size for 'bytes' and 'string' fields. + optional int32 max_size = 1; + + // Allocated number of entries in arrays ('repeated' fields) + optional int32 max_count = 2; + + // Size of integer fields. Can save some memory if you don't need + // full 32 bits for the value. + optional IntSize int_size = 7 [default = IS_DEFAULT]; + + // Force type of field (callback or static allocation) + optional FieldType type = 3 [default = FT_DEFAULT]; + + // Use long names for enums, i.e. EnumName_EnumValue. + optional bool long_names = 4 [default = true]; + + // Add 'packed' attribute to generated structs. + // Note: this cannot be used on CPUs that break on unaligned + // accesses to variables. + optional bool packed_struct = 5 [default = false]; + + // Add 'packed' attribute to generated enums. + optional bool packed_enum = 10 [default = false]; + + // Skip this message + optional bool skip_message = 6 [default = false]; + + // Generate oneof fields as normal optional fields instead of union. + optional bool no_unions = 8 [default = false]; + + // integer type tag for a message + optional uint32 msgid = 9; + + // decode oneof as anonymous union + optional bool anonymous_oneof = 11 [default = false]; +} + +// Extensions to protoc 'Descriptor' type in order to define options +// inside a .proto file. +// +// Protocol Buffers extension number registry +// -------------------------------- +// Project: Nanopb +// Contact: Petteri Aimonen +// Web site: http://kapsi.fi/~jpa/nanopb +// Extensions: 1010 (all types) +// -------------------------------- + +extend google.protobuf.FileOptions { + optional NanoPBOptions nanopb_fileopt = 1010; +} + +extend google.protobuf.MessageOptions { + optional NanoPBOptions nanopb_msgopt = 1010; +} + +extend google.protobuf.EnumOptions { + optional NanoPBOptions nanopb_enumopt = 1010; +} + +extend google.protobuf.FieldOptions { + optional NanoPBOptions nanopb = 1010; +} + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_accel.proto b/proprietary/vendor/etc/sensors/proto/sns_accel.proto new file mode 100644 index 0000000..5255029 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_accel.proto @@ -0,0 +1,103 @@ +// @file sns_accel.proto +// +// Defines the API for Accelerometer Sensors. +// All Accelerometer Sensor drivers are required to comply with this API. +// Any new functionality for Accelerometer Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_std_event_gated_sensor.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Accelerometer Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "accel". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute values in (m/s2)/LSB unit. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in +/-m/s2 unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Accelerometer Sensor handles the sns_std_sensor_config +// message request with msgid SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG +// for all non-gated stream enable/update requests. +// 2. The Accelerometer Sensor handles the sns_std_sensor_config +// message request with msgid SNS_STD_EVENT_GATED_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG +// for all gated stream enable/update requests. +// a. Accelerometer stream is gated on the motion detection feature +// available on most accel hardware. This feature is published via the +// "motion_detect" Sensor by the same driver library as "accel" Sensor. +// b. If "motion_detect" is not supported then the Sensor does not support +// stream gating. Any gated client request is rejected in this case. +// 3. The Accelerometer Sensor uses batching_period item in +// sns_std_request as the requested batching rate to determine +// hardware FIFO watermark. + +// Handling stream events: +// 1. The Accelerometer Sensor publishes acceleration data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields where data is +// in m/s2 units and is factory calibrated. +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// This conforms to the mobile device axes orientation as specified by the +// Android Sensor API. +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 6. The Accelerometer Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 7. The Accelerometer Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and comp_matrix fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. +// 8. When all outstanding requests to the Sensor are gated requests and if the +// "motion_detect" Sensor is enabled then the accel Sensor stops generating +// output events. +// a. When motion detect interrupt fires: +// - All existing accel gated stream requests are converted to non-gated +// stream requests. +// The accel Sensor publishes an event with message ID +// SNS_STD_EVENT_GATED_SENSOR_MSGID_GATED_REQ_CONVERTED_TO_NON_GATED to +// to indicate this change to it's gated clients. +// - The accel Sensor resumes generating output to all clients. +// So in effect motion_detect Sensor and accel gated Sensor stream have +// a one shot behavior. +// b. The Sensor resumes generating output events if motion detect interrupt +// is disabled potentially due to a new non-gated accel stream request or +// the request to motion_detect Sensor is disabled. +// 9. When all outstanding requests to the Sensor are gated requests but if +// "motion_detect" Sensor is not enabled then the Sensor continues to generate +// output events. + +// Handling self-test requests: +// 1. The Accelerometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Accelerometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Accelerometer Sensor could implement other test types. + +// Handling test events: +// 1. The Accelerometer Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto new file mode 100644 index 0000000..4f7b806 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto @@ -0,0 +1,32 @@ +// @file sns_accel_cal.proto +// +// Defines message types for the Accel Calibration Sensor. +// +// Copyright (c) 2017, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_cal.proto"; + +// The Accel Calibration Sensor determines the calibration parameters +// for accel sensor + +// Accel Calibration Sensor Attributes: +// - SNS_STD_SENSOR_ATTRID_TYPE: "accel_cal" +// - SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG message ID is used to +// enable the sensor +// - SNS_CAL_MSGID_SNS_CAL_RESET message ID is used to reset the algorithm +// and any previously determined calibration parameters. + +// Stream Events: +// - SNS_CAL_MSGID_SNS_CAL_EVENT message ID is used to report calibration +// parameters to the client of the sensor. The sns_cal_event message as +// defined in sns_cal.proto is used to report this data event where the +// units for the bias field in the message are in m / s ^2 + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto b/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto new file mode 100644 index 0000000..63e1a02 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto @@ -0,0 +1,69 @@ +// @file sns_activity_recognition.proto +// +// Defines message types for the Activity Recognition (AR) Sensor. +// +// Copyright (c) 2019-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Acitivity Recognition Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "activity_recognition" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Acitivity Recognition Sensor +enum sns_activity_recognition_msgid { + option (nanopb_enumopt).long_names = false; + + // The sns_ar_event message is used to publish updated state. A new event + // will be generated upon any state change. + SNS_ACTIVITY_RECOGNITION_MSGID_SNS_AR_EVENT = 800; + // Configuration event generated at least once in response to enable request + SNS_ACTIVITY_RECOGNITION_MSGID_SNS_AR_CONFIG_EVENT = 801; +} + +// User activity states +enum sns_ar_motion_state +{ + option (nanopb_enumopt).long_names = false; + + // UNKNOWN is reported when the algorithm is unable to detect the current + // activity state. + SNS_AR_UNKNOWN = 0; + // User is relatively stationary. + SNS_AR_STATIONARY = 1; + // User is classified as a pedestrian + SNS_AR_PED = 2; + // User is in a non-motorized vehicle + SNS_AR_NMV = 3; + // User is in a motorized vehicle. + SNS_AR_MV = 4; + // User is walking + SNS_AR_WALK = 5; + // User is running + SNS_AR_RUN = 6; + // User is on a bicycle + SNS_AR_BICYCLE = 7; + // User is in a car + SNS_AR_CAR = 8; +} + +message sns_ar_config_event +{ + // List of supported motion states + repeated sns_ar_motion_state states = 1; +} + +message sns_ar_event +{ + // List of active states for this user + // Multiple states may be reported concurrently + // Any states not listed here are presumed to be inactive + repeated sns_ar_motion_state states = 1 [(nanopb).max_count = 4]; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto b/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto new file mode 100644 index 0000000..09cceff --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto @@ -0,0 +1,73 @@ +// @file sns_ambient_light.proto +// +// Defines the API for Ambient Light Sensors. +// All Ambient Light Sensor drivers are required to comply with this API. +// Any new functionality for Ambient Light Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Ambient Light Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ambient_light". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in Lux/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in Lux unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Ambient Light Sensor supports both streaming and on-change +// modes and the operating mode is configured in the Registry. +// 2. The streaming Ambient Light Sensor handles the sns_std_sensor_config +// request for all stream enable/update requests. +// 3. The on-change Ambient Light Sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all stream enable/update requests. +// 4. In on-change mode the Sensor uses interrupt operation and reports +// samples for only significant change in ambient light. +// Example: +/- 10% change. + +// Handling stream events: +// 1. The Ambient Light Sensor publishes current illumination data stream +// events using the sns_std_sensor_event message. +// 2. Each stream event contains two output data fields where data is +// factory calibrated and ordered as: +// data[0] = ambient light in Lux +// data[1] = raw ADC value associated with data[0] +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Ambient Light Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Ambient Light Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new request. + +// Handling self-test requests: +// 1. The Ambient Light Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Ambient Light Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for Ambient Light Sensor calibrates +// the sensor such that it's output Lux value is comparable to a standard +// Luxmeter output in any lighting condition. +// 3. The Ambient Light Sensor could implement other test types. + +// Handling test events: +// 1. The Ambient Light Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto b/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto new file mode 100644 index 0000000..69726b9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto @@ -0,0 +1,68 @@ +// @file sns_ambient_temperature.proto +// +// Defines the API for Ambient Temperature Sensors. +// All Ambient Temperature Sensor drivers are required to comply with this API. +// Any new functionality for Ambient Temperature Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Ambient Temperature Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ambient_temperature". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees Celsius/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees Celsius unit. +// 4. The ambient_temperature sensor is an on-change sensor. +// 5. The SNS_STD_SENSOR_ATTRID_RATES attribute is not applicable +// since this is an on-change sensor. +// 6. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Ambient Temperature Sensor handles the SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// message ID for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Ambient Temperature +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Ambient Temperature Sensor publishes data stream events using the +// sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Ambient Temperature data in degrees Celsius +// 3. Each stream event publishs an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Ambient Temperature Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Ambient Temperature Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Ambient Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Ambient Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Ambient Temperature Sensor could implement other test types. + +// Handling test events: +// 1. The Ambient Temperature Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_amd.proto b/proprietary/vendor/etc/sensors/proto/sns_amd.proto new file mode 100644 index 0000000..8583b82 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_amd.proto @@ -0,0 +1,51 @@ + +// @file sns_amd.proto +// +// Defines message types for the Absolute Motion Detector (AMD) Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// AMD calculates motion and stationary states. AMD will initially start in an +// unknown state, and later transition to motion or stationary. + +// AMD Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "amd" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for AMD Sensor +enum sns_amd_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_AMD_MSGID_SNS_AMD_EVENT = 772; +} + +enum sns_amd_event_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_AMD_EVENT_TYPE_UNKNOWN = 0; + SNS_AMD_EVENT_TYPE_STATIONARY = 1; + SNS_AMD_EVENT_TYPE_MOTION = 2; +} + +message sns_amd_event +{ + // AMD motion state + required sns_amd_event_type state = 1 [default = SNS_AMD_EVENT_TYPE_UNKNOWN]; +} + +// Stream events: +// +// The sns_amd_event message is used to publish updated state +// +// AMD does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_aont.proto b/proprietary/vendor/etc/sensors/proto/sns_aont.proto new file mode 100644 index 0000000..de4b136 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_aont.proto @@ -0,0 +1,37 @@ +// @file sns_aont.proto +// +// Defines message types for the AONT(Always On Test) Sensor. +// +// Copyright (c) 2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Always On Test Sensor runs an Always On sensors usecase for stability test coverage + +// Always On Test Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "always_on_test" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Stream Events: +enum sns_aont_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_AONT_MSGID_SNS_AONT_DATA = 1024; +} + +// Data Message +// Output data event generated by the aont sensor. +message sns_aont_data +{ + // AONT output - Accel data along axis x,y,z in m/s2 + repeated float aont = 1 [(nanopb).max_count = 3]; +} + diff --git a/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto b/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto new file mode 100644 index 0000000..dfec6ba --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto @@ -0,0 +1,101 @@ +// @file sns_basic_gestures.proto +// +// Defines message types for the the basic_gestures sensor +// +// Copyright (c) 2017 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Basic Gestures algorithm provides the ability to detect a Push, Pull, +// or Shake gesture. +// Basic Gestures reports "Axis Unknown", when the direction of a shake cannot +// be reliably determined. + +// Basic gestures Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "basic_gestures" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_BASIC_GESTURES_MSGID_SNS_BASIC_GESTURES_CONFIG is used to enable the sensor + +// Message IDs for Basic gestures Sensor +enum sns_basic_gestures_msgid +{ + option (nanopb_enumopt).long_names = false; + SNS_BASIC_GESTURES_MSGID_SNS_BASIC_GESTURES_CONFIG = 512; + SNS_BASIC_GESTURES_MSGID_SNS_BASIC_GESTURES_EVENT = 1024; +} +//To mask Basic gesture algorithm output states +enum sns_basic_gestures_event_mask +{ + option (nanopb_enumopt).long_names = false; + // For masking push and pull states + SNS_BASIC_GESTURES_EVENT_MASK_PUSH_AND_PULL = 1; + // For masking shake left and right states + SNS_BASIC_GESTURES_EVENT_MASK_SHAKE_LEFT_AND_RIGHT = 2; + // For masking shake top and bottom states + SNS_BASIC_GESTURES_EVENT_MASK_SHAKE_TOP_AND_BOTTOM = 4; + //For masking shake other state + SNS_BASIC_GESTURES_EVENT_MASK_SHAKE_OTHER = 8; +} +// Device Basic gesture detected by Basic gestures sensor +enum sns_basic_gestures_event_type +{ + option (nanopb_enumopt).long_names = false; + //Phone is pulled away from the user in a direction perpendicular to the screen + SNS_BASIC_GESTURES_EVENT_TYPE_PUSH = 1; + //Phone is pulled toward the user in a direction perpendicular to the screen + SNS_BASIC_GESTURES_EVENT_TYPE_PULL = 2; + //Phone is shaken toward the left + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_LEFT = 3; + //Phone is shaken toward the right + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_RIGHT = 4; + //Phone is shaken toward the top + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_TOP = 5; + //Phone is shaken toward the bottom + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_BOTTOM = 6; + //Phone is shaken, but phone shake direction cannot be clearly determined + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_OTHER = 7; +} +// Event Message +// Output data event generated by the basic_gestures sensor. +// Default values of optional fields added in registry +message sns_basic_gestures_config +{ + //Sleep time in seconds + optional float sleep = 1; + //Push threshold m/s/s(default = 1.5G),where G=9.81188 + //min_push_threshold:1G, max_push_threshold:5G + optional float push_threshold = 2; + //Pull threshold m/s/s (default = 1.5G) + //min_pull_threshold:1G, max_pull_threshold:5G + optional float pull_threshold = 3; + //Shake threshold m/s/s(default = 1.5G) + //min_shake_threshold:1G, max_shake_threshold:5G + optional float shake_threshold = 4; + //For masking output events. + //By default, All states reported. + //Client should use sns_basic_gestures_event_mask fields for masking, + //specific events + //Example: If client doesn't want push and pull events,then, + //client updates event_mask with SNS_BASIC_GESTURES_EVENT_MASK_PUSH_AND_PULL + //event_mask |= SNS_BASIC_GESTURES_EVENT_MASK_PUSH_AND_PULL; + optional bytes event_mask = 5; +} + +// Event Message +// Output data event generated by the basic_gestures sensor. +message sns_basic_gestures_event +{ + // basic_gestures sensor state info + required sns_basic_gestures_event_type state=1; +} + +// Stream events: +// +// The sns_basic_gestures_event message is used to publish updated state +// +// Basic_gestures sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto b/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto new file mode 100644 index 0000000..c610a2b --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto @@ -0,0 +1,40 @@ +// @file sns_bring_to_ear.proto +// +// Defines message types for the the Bring_To_Ear sensor +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Bring_to_ear sensor detects bring to ear event, +// When a device has been held in a face-up position, +// afterwhich the device is brought to the user's ear, with the top of the device facing upwards. + +// Bring to ear Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "bring_to_ear" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. + +// ## Event Message: SNS_BRING_TO_EAR_MSGID_SNS_BRING_TO_EAR_EVENT +// Reported upon new detection of bring_to_ear event + + +// Message IDs for Bring to ear Sensor +enum sns_bring_to_ear_msgid +{ + option (nanopb_enumopt).long_names = false; + // Empty Message + SNS_BRING_TO_EAR_MSGID_SNS_BRING_TO_EAR_EVENT = 1024; +} + +// Stream events: +// +// The sns_bring_to_ear_event message is used to publish updated state +// +// Bring_to_ear sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_cal.proto new file mode 100644 index 0000000..fe878b0 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_cal.proto @@ -0,0 +1,118 @@ +// @file sns_cal.proto +// +// Defines standard message types pertaining to calibration +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// For dynamic calibration supported by Calibration Sensors: +// Client will use the standard on change config message id to enable +// Calibration Sensor. Calibration algorithms are inherently on change in +// behavior. + +// For both dynamic calibration supported by Calibration Sensors & +// factory calibration supported by Physical Sensors: +// Client can send an empty request with the msg id for reset +// to reset the calibration parameters. +enum sns_cal_msgid +{ + option (nanopb_enumopt).long_names = false; + SNS_CAL_MSGID_SNS_CAL_RESET = 512; + SNS_CAL_MSGID_SNS_CAL_EVENT = 1022; +} + +// Calibration Event +// Used as an output data event by Calibration Sensors to convey +// dynamic calibration estimates and +// as a config event by Physical Sensors to convey factory calibration +// being applied +// +// A) The data field of the sns_cal_event message +// +// 1) float bias[] (Nx1 vector) +// The zero bias (B) correction subtracted to get calibrated sample.(Nx1 vector) +// +// 2) float scale_factor (Nx1 vector) +// The scaling (SF) to be done before doing any bias correction. +// +// 3) float comp_matrix (NxN matrix) +// The compensation matrix (CM). The matrix elements are in row major order ie: +// CM = CM0 CM1 CM2 +// CM3 CM4 CM5 +// CM6 CM7 CM8 +// +// The calibrated sample (Sc) is computed as following. +// +// if SF, B and CM are available, +// +// Sc = CM * ((S .* SF) - B) +// +// if only B and CM are available, +// +// Sc = CM * (S - B) +// +// if only SF and B are available, +// +// Sc = ((S .* SF) - B) +// +// if only SF is available, +// +// Sc = S .* SF +// +// if only B is available, +// +// Sc = (S - B) +// +// if only CM is available +// +// Sc = CM * S +// +// where: +// Sc = Calibrated sensor sample +// S = Sensor sample (Nx1 vector) +// SF = Scaling factor to be applied to S +// CM = compensation_matrix +// B = bias +// "*" represents matrix multiplication +// ".*" represents element-by-element multiplication +// +// +// B) The status field of the sns_std_sensor_event message contains +// the quality of calibration defined by sns_std_sensor_sample_status as +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE = 0; // Sample is unreliable. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_LOW = 1; // Sample is low accuracy. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_MEDIUM = 2;// Sample is medium accuracy. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH = 3; // Sample is high accuracy. + +message sns_cal_event +{ + //Optional bias value + //If no bias is being published this will be of size 0. + //Generic for different axes biases. + //Size is defined by axes value inherently. + repeated float bias = 1; + + //Optional scaling factor + //If no scaling factor is published this will be of size 0. + //Size if published is has to be equal to the axes of the data + repeated float scale_factor = 2; + + //If no CM is being published this will be of size 0. + //Optional CM values . + //Size if published should be equal to matrix of size [axes*axes] + repeated float comp_matrix = 3; + + // Event sample status. + required sns_std_sensor_sample_status status = 4 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; + + // Calibration ID, a unique identifier for the calibration set being used + // As an example, could be set when there are distinct calibration sets for different + // device modes being maintained + optional fixed32 cal_id = 5; +} + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_client.proto b/proprietary/vendor/etc/sensors/proto/sns_client.proto new file mode 100644 index 0000000..22497eb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_client.proto @@ -0,0 +1,116 @@ +// @file sns_client.proto +// +// Defines the interface between external clients and the Sensors QMI Client +// Manager. The Client Manager is the primary path for external clients +// to communicate with the SSC. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_type.proto"; + +// Message IDs +// +// Message IDs uniquely identify a particular message amongst all message +// supported by a Sensor, both requests and events; they need not be unique +// between different Sensors. IDs are subdivided into several reserved pools. +// These reservations are made so that Framework components can appropriately +// optimize their processing. +// +// Reserved for Framework use only: +// 0-127 - Request Messages +// 128-255 - Non-recurrent events (configuration updates, one-time events, etc) +// 256-511 - Recurrent and/or periodic events (e.g. sensor samples) +// +// Sensor use: +// 512-767 - Request messages +// 768-1023 - Non-recurrent events +// 1024-1536 - Recurrent events +// +// Note that messages serving as request messages can also be sent as +// configuration events back to the client (with the same ID). While batching +// data for a non-wakeup client, if the AP is in suspend and all batching space +// exhausted, the oldest recurrent events may be dropped. + +// Framework-defined message IDs: +enum sns_client_msgid { + option (nanopb_enumopt).long_names = false; + + // Disable request explicitly handled only on the client interface. + SNS_CLIENT_MSGID_SNS_CLIENT_DISABLE_REQ = 10; + + // NOTE: 120-127 Are reserved +} + +enum sns_client_delivery { + option (nanopb_enumopt).long_names = false; + + // Send events whenever available (at sample rate or batch period) + // - If a batch_period larger than system capacity is requested, all data + // will be sent upon capacity exhaustion. + // - The flush_period will be effectively ignored, as unsent batched + // data will not accrue in the buffer. + SNS_CLIENT_DELIVERY_WAKEUP = 0; + // Send events only when client processor is awake; batch otherwise. Once + // the target processor exits suspend, any/all pending events will be sent. + SNS_CLIENT_DELIVERY_NO_WAKEUP = 1; +} + + +// Request Message +message sns_client_request_msg { + // SUID associated with this request; intended destination + required sns_std_suid suid = 1; + + // See comment above + required fixed32 msg_id = 2; + + // Whether to wakeup the client processor (if it is in suspend), when an + // event is generated and ready to send. The Qualcomm Client Manager will + // enforce these criteria for all clients; this information is made available + // to sensors for optimization purposes only. + message suspend_config { + // Processor on which the client resides; If a flush occurs for one client + // on an external processor, all clients will receive a flush of data. + required sns_std_client_processor client_proc_type = 1 [default = SNS_STD_CLIENT_PROCESSOR_APSS]; + + // Whether to send events while the specified processor is in suspend. + required sns_client_delivery delivery_type = 2 [default = SNS_CLIENT_DELIVERY_WAKEUP]; + + //The client expects that, when the message with an id specified in this list + //is generated, the message should only be delivered to the client if data is already being delivered + //to the processor mentioned above. + repeated fixed32 nowakeup_msg_ids = 3; + } + required suspend_config susp_config = 3; + + // Base message payload; contents will be partially specified by Sensor developer + required sns_std_request request = 4; +} + +message sns_client_event_msg { + // SUID associated with this Event; source of data + required sns_std_suid suid = 1; + + // An event generated by a Sensor; used within sns_client_event_msg and SensorBatchMessage + message sns_client_event { + // See comment above + required fixed32 msg_id = 1; + + // Timestamp associated with this event + // For most events, this timestamp is specified by the Sensor. + // For events generated by the Framework (such as configuration updates or + // error events), this timestamp refers to the time at which the event was + // created. + required fixed64 timestamp = 2; + + // Dynamic length payload, containing the actual data/event + // This payload will need to be decoded separately, using the Sensor-specific + // header file + required bytes payload = 3; + } + repeated sns_client_event events = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_cmc.proto b/proprietary/vendor/etc/sensors/proto/sns_cmc.proto new file mode 100644 index 0000000..122da06 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_cmc.proto @@ -0,0 +1,81 @@ + +// @file sns_cmc.proto +// +// Defines message types for the Coarse Motion Classifier (CMC) Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + + +// CMC Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "coarse_motion_classifier" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for CMC Sensor +enum sns_cmc_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_CMC_MSGID_SNS_CMC_EVENT = 772; +} + +// Gives the state which the algorithm is capable +// of detecting +enum sns_cmc_motion_state +{ + option (nanopb_enumopt).long_names = false; + + // stated with 1 to match with algo where 0 + // is for UNKNOWN + SNS_CMC_STATIONARY = 1; + SNS_CMC_MOVE = 2; + SNS_CMC_FIDDLE = 3; + SNS_CMC_PEDESTRIAN = 4; + SNS_CMC_VEHICLE = 5; + SNS_CMC_WALK = 6; + SNS_CMC_RUN = 7; + SNS_CMC_BIKE = 8; +} + +// Gives the information about the states represented +// by sns_cmc_motion_state +enum sns_cmc_motion_state_event +{ + option (nanopb_enumopt).long_names = false; + // when any state of any of the motion state cannot + // be determined. The first event of first client will + // typically have all states as SNS_MS_UNKNOWN + SNS_MS_UNKNOWN = 0; + // A given motion state is ACTIVE + SNS_MS_ACTIVE = 1; + // A given motion state is INACTIVE + SNS_MS_INACTIVE = 2; +} + +message sns_cmc_event +{ + message data + { + // motion state by CMC + required sns_cmc_motion_state ms_state = 1; + + // gives UNKNOWN/ACTIVE/INACTIVE information for the motion state + required sns_cmc_motion_state_event ms_state_event = 2 [default = SNS_MS_UNKNOWN]; + } + + repeated data events = 1; +} + +// Stream events: +// +// The sns_cmc_event message is used to publish updated state +// +// CMC does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_da_test.proto b/proprietary/vendor/etc/sensors/proto/sns_da_test.proto new file mode 100644 index 0000000..b72a610 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_da_test.proto @@ -0,0 +1,65 @@ +// @file sns_da_test.proto +// +// Defines the API for communicating with the Driver acceptance +// test sensor. +// This is to used by the linux command line partner application +// to send string messages to the sns_da_test_sensor +// +// Copyright (c) 2017, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_da_test_msgid { + option (nanopb_enumopt).long_names = false; + SNS_DA_TEST_MSGID_SNS_DA_TEST_REQ = 512; + SNS_DA_TEST_MSGID_SNS_DA_TEST_LOG = 768; + SNS_DA_TEST_MSGID_SNS_DA_TEST_EVENT = 1024; +} + +//This message contains the test parameters as a single string in the format below +//-testcase= -sample_rate=< any +tive value > -sensor= +//-duration=< any +tive value in seconds> -batch_period=<+tive value in seconds> +message sns_da_test_req { + optional string test_args = 1; +} + +//This message contains any return data from the test driver including PASS/FAIL +//msg. and explainations if applicable +message sns_da_test_event { + optional string test_event = 1; +} + +// Sensor State log message +// This definition is used by da_test sensor to log test +// information when publishing sensor api event +message sns_da_test_log { + //Time elapsed between streaming start request time and first sample received + required uint64 time_to_first_event = 1; + + //Time elapsed between streaming stop request time and last sample received + required sfixed32 time_to_last_event = 2; + + //Time when last sample was received + required uint64 sample_ts = 3; + + //Total number of samples received + required uint32 total_samples = 4; + + //time delta between samples avegraged over number of samples + required uint32 avg_delta = 5; + + //configures sample rate received in the SNS_STD_SENSOR_PHYSICAL_CONFIG_EVENT + required sfixed32 recvd_phy_config_sample_rate = 6; + + //random seed used by the da_test instance + optional uint64 random_seed_used = 7; + + //The number of std_req sent out by this instance of da_test + optional uint32 num_request_sent = 8; + + //timestamp of first sample received on da_test + optional uint64 first_sample_timestamp = 9; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto b/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto new file mode 100644 index 0000000..66b5efd --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto @@ -0,0 +1,61 @@ +// @file sns_device_mode.proto +// +// Defines message types for the Device Mode Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// DEVICE_MODE determine the current mode of the device + +// DEVICE_MODE Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "device_mode" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor +// - Client must remove stream to disable the sensor + +// Message IDs for DEVICE_MODE Sensor +enum sns_device_mode_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_DEVICE_MODE_MSGID_SNS_DEVICE_MODE_EVENT = 772; +} + +enum sns_device_mode +{ + option (nanopb_enumopt).long_names = false; + SNS_DEVICE_MODE_UNKNOWN = 0; + SNS_DEVICE_MODE_FLIP_OPEN = 1; +} + +enum sns_device_state +{ + option (nanopb_enumopt).long_names = false; + SNS_DEVICE_STATE_INACTIVE = 0; + SNS_DEVICE_STATE_ACTIVE = 1; +} + +message sns_device_mode_event +{ + message mode_spec { + required sns_device_mode mode = 1; + + required sns_device_state state = 2; + } + // Device Mode + repeated mode_spec device_mode = 1; +} + +// Stream events: +// +// The sns_device_mode_event message is used to publish updated mode +// +// DEVICE_MODE does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto b/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto new file mode 100644 index 0000000..d57f922 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto @@ -0,0 +1,57 @@ +// @file sns_device_orient.proto +// +// Defines the API for the Device Orientation sensors +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A device orientation sensor reports the current orientation of the device. +// +// Minor or transient rotations should not cause a new event to be reported, +// and this sensor should only be implemented with the help of an accelerometer. +// Moving the device to an orientation where the Z axis is vertical (either up +// or down) should not cause a new event to be reported. + +// ## Device Orientation sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "device_orient" +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: SNS_DEVICE_ORIENT_MSGID_SNS_DEVICE_ORIENT_EVENT + +// Message IDs for Device Orientation Sensor +enum sns_device_orient_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_DEVICE_ORIENT_MSGID_SNS_DEVICE_ORIENT_EVENT = 776; +} + +enum sns_device_orient_event_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_DEVICE_ORIENT_EVENT_TYPE_UNKNOWN = -1; + // Device is in default orientation (Y axis is vertical and points up) + SNS_DEVICE_ORIENT_EVENT_TYPE_DEFAULT = 0; + // Device is rotated 90 degrees counter-clockwise from default orientation + // (X axis is vertical and points up) + SNS_DEVICE_ORIENT_EVENT_TYPE_POS_1 = 1; + // Device is rotated 180 degrees from default orientation (Y axis is + // vertical and points down) + SNS_DEVICE_ORIENT_EVENT_TYPE_POS_2 = 2; + // Device is rotated 90 degrees clockwise from default orientation (X axis + // is vertical and points down) + SNS_DEVICE_ORIENT_EVENT_TYPE_POS_3 = 3; +} + +message sns_device_orient_event +{ + // Detected state + required sns_device_orient_event_type state = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_diag.proto b/proprietary/vendor/etc/sensors/proto/sns_diag.proto new file mode 100644 index 0000000..0b02cbb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_diag.proto @@ -0,0 +1,433 @@ +// @file sns_diag.proto +// +// Defines log messages used by the sensors diag service +// +// Copyright (c) 2016-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; +import "sns_client.proto"; + +// Batch Sample Type +enum sns_diag_batch_sample_type +{ + option (nanopb_enumopt).long_names = false; + + // This is the only sample in the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_ONLY = 0; + + // This is the first sample of the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_FIRST = 1; + + // This is an intermediate sample of the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_INTERMEDIATE = 2; + + // This is the last sample of the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_LAST = 3; +} + +// Sensor Interrupts +enum sns_diag_interrupt +{ + option (nanopb_enumopt).long_names = false; + + // Interrupt caused by detection of a threshold being + // exceeded + SNS_DIAG_INTERRUPT_THRESHOLD = 0; + + // Interrupt caused by detection of movement of the device + SNS_DIAG_INTERRUPT_MOTION = 1; + + // Interrupt caused by detection of tilting of the device + SNS_DIAG_INTERRUPT_TILT = 2; + + // Interrupt caused by detection of free fall + SNS_DIAG_INTERRUPT_FREE_FALL = 3; + + // Interrupt caused by detection of double-tap + SNS_DIAG_INTERRUPT_DOUBLE_TAP= 4; + + // Interrupt caused by detection of acceleration shock + SNS_DIAG_INTERRUPT_SHOCK = 5; + + // Interrupt caused by CCD AMD + SNS_DIAG_INTERRUPT_CCD_AMD = 6; + + // Interrupt caused by CCD WALK + SNS_DIAG_INTERRUPT_CCD_WALK = 7; + + // Interrupt caused by CCD TILT + SNS_DIAG_INTERRUPT_CCD_TILT = 8; + + // Interrupt caused by CCD TE0 + SNS_DIAG_INTERRUPT_CCD_TE0 = 9; + + // Interrupt caused by CCD TE1 + SNS_DIAG_INTERRUPT_CCD_TE1 = 10; + + // Interrupt caused by CCD TE2 + SNS_DIAG_INTERRUPT_CCD_TE2 = 11; +} + +// Opaque Payload +// This message defines the fields used to log an undefined payload +message sns_diag_opaque_payload +{ + required bytes payload = 1; +} + +// Batch Sample +// This message defines the fields used to log batched data. +message sns_diag_batch_sample +{ + // Indicates if the sample is the first, intermediate, last or only + // sample of a batch + required sns_diag_batch_sample_type sample_type = 1 [default = SNS_DIAG_BATCH_SAMPLE_TYPE_ONLY]; + + // Timestamp of the sensor state data sample + required fixed64 timestamp = 2; + + // Sensor state data sample + repeated float sample = 3; + + // Data status. + required sns_std_sensor_sample_status status = 4 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Sensor State Hardware Interrupt Log Packet +// This message defines the fields used to log sensor state information +// pertaining to hardware interrupts +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_sensor_state_interrupt +{ + // Type of sensor hardware interrupt + required sns_diag_interrupt interrupt = 1; + + // Timestamp when the interrupt occurred + required fixed64 timestamp = 2; +} + +// Sensor State Raw +// This message defines the fields used to log sensor state information +// pertaining to raw uncalibrated physical sensor data. +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_sensor_state_raw +{ + repeated sns_diag_batch_sample sample = 1; +} + +// Client API Response Message +message sns_diag_client_resp_msg +{ + // The error response sent to the client + required sns_std_error error = 1; +} + +// Client API log packet +// This message defines the fields to log all +// Request, Response and Event messages at the Client API +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_client_api_log +{ + // The client id that identifies the client connection + required fixed64 client_id = 1; + + // Data type of the source sensor + required string src_sensor_type = 2; + + // The Client API log packet payload + oneof client_api_log_payload + { + // Client API Request message as defined in sns_client.proto + sns_client_request_msg request_payload = 100; + + // Client API Event message as defined in sns_client.proto + sns_client_event_msg event_payload = 101; + + // Client API Response message as defined in sns_diag.proto + sns_diag_client_resp_msg resp_payload = 102; + } +} + +// Sensor API log packet +// This message defines the fields to log all Request and +// Event messages at the Sensor API +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_sensor_api_log +{ + // The message id of the message being logged + required fixed32 message_id = 1; + + // Timestamp associated with this message + required fixed64 timestamp = 2; + + // Data stream associated with this message + optional fixed64 stream_id = 3; + + // The Sensor API log packet payload + oneof sensor_api_log_payload + { + // Sensor API Event message containing sensor specific event message + // as defined in the sensor's proto api file + sns_diag_opaque_payload opaque_payload = 100; + + // Sensor API Request message as defined in sns_std.proto + sns_std_request request_payload = 101; + } +} + +// Sensor log packet +// This message defines the fields to log all sensor specific +// messages. This includes Sensor API messages, Client API messages, +// HW Interrupt messages, Sensor State messages +message sns_diag_sensor_log +{ + // Log ID for the log packet + required fixed32 log_id = 1; + + // Timestamp when log packet.was generated + required fixed64 timestamp = 2; + + // Sensor UID for the log packet + required sns_std_suid suid = 3; + + // Data type provided by the Sensor UID + required string sensor_type = 4; + + // The instance id of the sensor to which this + // message was passed to or obtained from + required fixed64 instance_id = 5; + + // The log packet payload + oneof sensor_log_payload + { + // Sensor specific Sensor State Algo message + sns_diag_opaque_payload opaque_payload = 100; + + // Sensor API message + sns_diag_sensor_api_log sensor_api_payload = 101; + + // Client API message + sns_diag_client_api_log client_api_payload = 102; + + // Sensor State Raw message + sns_diag_sensor_state_raw sensor_state_raw_payload = 103; + + // Sensor State Hardware Interrupt message + sns_diag_sensor_state_interrupt sensor_state_interrupt_payload = 104; + } +} + +// Sensor Instance Mapping Log Packet +// This message defines the fields used to log sensor instance mapping +// information. This message is used as the payload field of sns_diag_fw_log +message sns_diag_instance_map_log +{ + // The instance id of the source sensor instance + required fixed64 src_instance_id = 1; + + // Array of destination Sensor Instance IDs or Sensor IDs that the + // source sensor instance is feeding to. + // If no destination instance ids are specified it signifies + // deletion of the source instance + repeated fixed64 dest_instance_id = 2; + + // Array of data stream ids that the + // source sensor instance is feeding to + repeated fixed64 stream_id = 3; +} + +// Island mode states +enum sns_diag_island_state +{ + option (nanopb_enumopt).long_names = false; + + // In Island mode + SNS_DIAG_ISLAND_STATE_IN_ISLAND_MODE = 0; + + // Not in Island Mode + SNS_DIAG_ISLAND_STATE_NOT_IN_ISLAND_MODE = 1; + + // Island mode disabled + SNS_DIAG_ISLAND_STATE_ISLAND_DISABLED = 2; +} + +// Island mode transition Log Packet +// This message defines the fields used to log +// transitions into and out of island mode +// +// This log packet is generated each time the system transitions into or out +// of island mode or when island mode is disabled or when triggered by +// a request to the diag sensor +// +// This message is used as the payload field of sns_diag_fw_log +message sns_diag_island_transition_log +{ + // Timestamp of the transition + // + // When logpacket is triggered, this timestamp will retain + // the timestamp when the current state became effective. + required fixed64 timestamp = 1; + + // Island state after transition is completed + required sns_diag_island_state island_state = 2; + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 3; + + // Total time system spent in island since device boot(micro seconds) + optional fixed64 total_island_time = 4; +} + +// Island exit vote Log Packet +// This message defines the fields used to log vote for island mode exits. +// +// This log packet is generated at each call to island_exit() +message sns_diag_island_exit_vote_log +{ + // Timestamp + required fixed64 timestamp = 1; + + // SUID of the Sensor responsible for the vote + optional sns_std_suid sensor = 2; +} + +// Heap IDs +enum sns_diag_heap_id +{ + option (nanopb_enumopt).long_names = false; + + // Primary Heap + SNS_DIAG_HEAP_ID_HEAP_MAIN = 0; + + // Island Heap + SNS_DIAG_HEAP_ID_HEAP_ISLAND = 1; + + // PRAM Heap + SNS_DIAG_HEAP_ID_HEAP_PRAM = 2; + + // EVENT Heap + SNS_DIAG_HEAP_ID_HEAP_EVENT = 3; + + // BATCH Heap + SNS_DIAG_HEAP_ID_HEAP_BATCH = 4; + + // Event buffer + SNS_DIAG_HEAP_ID_EVENT_BUFFER = 100; +} + +// Memory status Log Packet +// This message defines the fields used to log the memory utilization +// This log packet is generated when a request is sent to the diag sensor +message sns_diag_mem_utilization_log +{ + // Timestamp + required fixed64 timestamp = 1; + + // Heap ID + required sns_diag_heap_id heap_id = 2; + + // Total Memory + required fixed32 total_memory = 3; + + // Used Memory + required fixed32 used_memory = 4; + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 5; +} + +// Event Service status Log Packet +// This message defines the fields used to log the memory utilization and +// other statistics from the Event Service. +// Used only for SW debug; *not guaranteed to be backward compatible* +// This log packet is generated when a request is sent to the diag sensor +message sns_diag_event_service_log +{ + // Timestamp + required fixed64 timestamp = 1; + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 2; + + message heap_stats + { + enum sns_event_service_heap_id + { + SNS_EVENT_SERVICE_HEAP_ID_ISLAND = 0; + SNS_EVENT_SERVICE_HEAP_ID_MAIN = 1; + } + // Heap ID + required sns_event_service_heap_id heap_id = 1; + + // Total memory available in heap (in blocks) + required fixed32 total_memory = 2; + + // Current memory consumption (in blocks) + required fixed32 used_memory = 3; + + // Maximum memory consumption since last log packet (in blocks) + required fixed32 max_memory = 4; + + // Total clusters available + required fixed32 total_clusters = 5; + + // Current number of clusters in use + required fixed32 used_clusters = 6; + + // Maximum in-use clusters since last log packet + required fixed32 max_clusters = 7; + + // Number of allocation failues since the last DIAG log packet + // If Island will result in island exit; else causes dropped samples + required fixed32 alloc_failures = 8; + + // Largest event allocation since the last DIAG log packet (in bytes) + required fixed32 max_size = 9; + } + repeated heap_stats stats = 3; +} + +// Framework log packet +// This message defines the fields to log all framework messages. This +// includes memory, island, instance mapping messages. +message sns_diag_fw_log +{ + // Log ID for the log packet + required fixed32 log_id = 1; + + // Timestamp when log packet.was generated + required fixed64 timestamp = 2; + + // The log packet payload + oneof fw_log_payload + { + // Sensor Instance Map message + sns_diag_instance_map_log instance_map_payload = 100; + + // Sensor Island Mode + sns_diag_island_transition_log island_mode_payload = 101; + + // Sensors Island Exit vote + // NOT SUPPORTED YET. + sns_diag_island_exit_vote_log island_exit_vote_payload = 102; + + // Sensors Memory Utilization + sns_diag_mem_utilization_log memory_utilization_payload = 103; + + // Event Service status log + sns_diag_event_service_log event_service_payload = 104; + } +} + diff --git a/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto b/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto new file mode 100644 index 0000000..804e7e6 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto @@ -0,0 +1,51 @@ +// @file sns_diag_sensor.proto +// +// Defines standard message types to communicate with the +// diag service +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; + +enum sns_diag_sensor_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_DIAG_SENSOR_MSGID_SNS_DIAG_LOG_TRIGGER_REQ = 520; +} + +// Log packets that can be triggered by the diag sensor +enum sns_diag_triggered_log_type { + option (nanopb_enumopt).long_names = false; + + // Triggers generation of sns_diag_island_transition_log + // Only one log is generated per request + SNS_DIAG_TRIGGERED_LOG_TYPE_ISLAND_LOG = 1; + + // Triggers generation of sns_diag_mem_utilization_log + // A single request will generate a log for each separate memory + // pool in the system + SNS_DIAG_TRIGGERED_LOG_TYPE_MEMORY_USAGE_LOG = 2; +} + +// Trigger generation of log packets. Depending upon +// the type of log packet that is being triggered, +// multiple log packets can be triggered for each +// request. +// +// If the log packet that is triggered has been disabled +// no log will be generated. +message sns_diag_log_trigger_req { + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 1; + + // The type of log packets that the diag sensor must + // generate. + required sns_diag_triggered_log_type log_type = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto b/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto new file mode 100644 index 0000000..5601bb3 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto @@ -0,0 +1,124 @@ +// @file sns_direct_channel.proto +// +// Defines the Sensors Direct Channel interface that can be used by clients to get sensor data via direct channel +// +// Copyright (c) 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; +import "sns_std.proto"; + +// To activate a stream on a channel +// " get Channel first by sending sns_direct_channel_create_msg -> then send sns_direct_channel_set_ts_offset -> send sns_direct_channel_set_client_req for sns_direct_channel_stream_id" + +// To activate another stream on existing channel +// "Send sns_direct_channel_set_client_req on existing Channel for new sns_direct_channel_stream_id" + +// To update the existing request on the channel +// "Send updated sns_direct_channel_set_client_req on existing Channel with already added sns_direct_channel_stream_id" + +// To remove existing request on the channel +// "Send sns_direct_channel_remove_client_req on existing Channel for any added sns_direct_channel_stream_id" + +// To update time stamp offset on channel. +// "Send sns_direct_channel_set_ts_offset on existing Channel with ts_offset" + + +enum direct_channel_type { + option (nanopb_enumopt).long_names = false; + + // Sensor data from multiple streams can be multiplexed in one channel + // Samples are compatible to sensors_event_t format defined by Android Spec + // ref: SensorsEventFormatOffset( a.k.a sensors_event_t) at hardware/interfaces/sensors/1.0/types.hal + DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL = 0; + + // Sensors Data format expected in Raw bytes only. + // Sensors data format is not mandated in the API. + // This channel type can be used by clients who know how to interpret the sensor data from respective sensor source. + DIRECT_CHANNEL_TYPE_GENERIC_CHANNEL = 1; +} + +// stream id for different direct channel streams +message sns_direct_channel_stream_id { + // sensor responsible for data + required sns_std_suid suid = 1; + // if set to true, auto calibrated data is generated + // if set to false, factory calibrated data is generated + optional bool calibrated = 2 [default = true]; + // if set to true, resampled data is generated at rate which is at most twice the requested rate + // if set to false, data is generated at native rate supported by driver, advertised with attributes - SNS_STD_SENSOR_ATTRID_RATES and SNS_STD_SENSOR_ATTRID_ADDITIONAL_LOW_LATENCY_RATES + optional bool resampled = 3 [ default = true]; +} + + +// Direct channel Creation Request Message +message sns_direct_channel_create_msg { + // ION fd, size to get Virtual address that can be used by Q6 + message shared_buffer_config { + required fixed32 fd = 1; + required fixed32 size = 2; + } + + required shared_buffer_config buffer_config = 1; + + // Each channel can be either DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL or DIRECT_CHANNEL_TYPE_GENERIC_CHANNEL + // e.g Android Direct Report Channel for DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL + required direct_channel_type channel_type = 2 ; + + // Processor hosting the sensor data client + // Default processor is Application Processor + optional sns_std_client_processor client_proc = 3 [ default = SNS_STD_CLIENT_PROCESSOR_APSS]; +} + + +// Client request on Direct Channel +message sns_direct_channel_set_client_req { + // msg id for sns_std_request, see sns_std.proto for more information. + required fixed32 msg_id = 1; + + // unique id for each stream on the channel + required sns_direct_channel_stream_id stream_id = 2; + + // generic sns_std_request + required sns_std_request request = 3; + + // required attributes for DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL + message structured_mux_channel_stream_attributes { + // Unique handle per sensor, client has to supply for mapping in sensor hub to "sensor_event_t::sensor" variable + required fixed32 sensor_handle = 1; + // Corresponds to android sensor type, client has to supply for mapping in sensor hub to "sensor_event_t::type" variable + required fixed32 sensor_type = 2; + } + + optional structured_mux_channel_stream_attributes attributes = 4; +} + + +// Direct Channel remove client request message +message sns_direct_channel_remove_client_req { + required sns_direct_channel_stream_id stream_id = 1; +} + + +// Clients interested in Client Time Domain Time Stamp has to supply offset value +// direct channel in sensor hub adds this value to its own time domain time stamp to generate Client Time Domain Time Stamp +message sns_direct_channel_set_ts_offset { + required fixed64 ts_offset = 1; +} + + +// Direct Channel Configuration Message +message sns_direct_channel_config_msg { + + oneof channel_config_msg_payload + { + sns_direct_channel_set_client_req set_client_req = 100; + + sns_direct_channel_remove_client_req remove_client_req = 101; + + sns_direct_channel_set_ts_offset set_ts_offset = 102; + } +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_dpc.proto b/proprietary/vendor/etc/sensors/proto/sns_dpc.proto new file mode 100644 index 0000000..bbc27d7 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_dpc.proto @@ -0,0 +1,64 @@ +// @file sns_dpc.proto +// +// Defines message types for the DPC(Device Position Classifier) Sensor. +// +// Copyright (c) 2017-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The DPC Sensor provides device position information + +// DPC Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "device_position_classifier" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for DPC Sensor +enum sns_dpc_msgid { + option (nanopb_enumopt).long_names = false; + + //send to new client immediatly to inform current device position + SNS_DPC_MSGID_SNS_DPC_EVENT_CONFIG = 777; + + //send when detect device position change + SNS_DPC_MSGID_SNS_DPC_EVENT = 1030; +} + +// Stream events: +// +// The sns_dpc_event message is used to publish updated device position +// The sns_dpc_event_config message is sent immediately to new client to inform the current device position + +enum sns_dpc_state +{ + option (nanopb_enumopt).long_names = false; + + // when algo cannot identify other states + SNS_DPC_UNKNOWN = 1; + // User keeps the device steady with display at an angle within +/-15 deg with respect to the horizontal plane + SNS_DPC_FLAT_STATIC = 2; + // Device is not in FLAT_STATIC state and proximity sensor detects NEAR + SNS_DPC_HIDDEN = 3; + // User picks up the device + SNS_DPC_IN_HAND = 4; + // User keeps the device steady with display at an angle greater than +/-15 deg with respect to the horizontal plane + SNS_DPC_FACING = 5; +} + +// Events types from DPC Sensor +message sns_dpc_event +{ + required sns_dpc_state dpc_state = 1; +} + +message sns_dpc_event_config +{ + //current dpc state + required sns_dpc_state dpc_state = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto b/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto new file mode 100644 index 0000000..7e8370a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto @@ -0,0 +1,72 @@ +// @file sns_ext_svc.proto +// +// Sensor provides access to external QMI services. +// +// This Sensor will create a connection to the external service upon +// receipt of the first request. Subsequent requests will be sent upon the +// same connection. The connection will be closed after the client closes +// the data stream. +// +// An error event will be sent upon any received error, including upon +// the error callback. It is then the responsibility of the client to close +// the data stream, and re-open a new one if desired. +// +// Copyright (c) 2017, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_ext_svc_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Send a request message + SNS_EXT_SVC_MSGID_SNS_EXT_SVC_REQ = 512; + + // Asynchronously received response message + SNS_EXT_SVC_MSGID_SNS_EXT_SVC_RESP = 768; + + // Asynchronously received indication message + SNS_EXT_SVC_MSGID_SNS_EXT_SVC_IND = 1024; +} + +message sns_ext_svc_req +{ + required uint32 svc_id = 1; + + // QMI/IDL Message ID + required int32 msg_id = 2; + + // Client-specified transaction ID, to be returned in sns_ext_svc_resp + optional int32 transaction_id = 3; + + // Contains the QMI-decoded request message. + required bytes payload = 4; +} + +message sns_ext_svc_resp +{ + // QMI/IDL Message ID + required int32 msg_id = 1; + + // Transport error, as defined in qmi_client.h; Defaults to QMI_NO_ERR + required int32 transp_err = 2; + + // Client-specified transaction ID, as provided in sns_ext_svc_req + optional int32 transaction_id = 3; + + // Contains the QMI-decoded response message + // May be empty if transport_err != QMI_NO_ERR + required bytes payload = 4; +} + +message sns_ext_svc_ind +{ + // QMI/IDL Message ID + required int32 msg_id = 1; + + // Contains the QMI-decoded indication message. + required bytes payload = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_facing.proto b/proprietary/vendor/etc/sensors/proto/sns_facing.proto new file mode 100644 index 0000000..8decd9f --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_facing.proto @@ -0,0 +1,60 @@ +// @file sns_facing.proto +// +// Defines message types for the the facing sensor +// +// Copyright (c) 2017 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Facing calculates face up, down and neutral states. Facing will initially start in an +// unknown state, and later transition to face up, down and neutral. +// Neutral state reported to client on demand + +// Facing Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "facing" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Facing Sensor +enum sns_facing_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_FACING_MSGID_SNS_FACING_EVENT = 1024; +} + +// Device Facing state detected by Facing sensor +enum sns_facing_event_state +{ + option (nanopb_enumopt).long_names = false; + SNS_FACING_EVENT_STATE_UNKNOWN = 0; + //Phone has just moved to a facing-up phone posture + //which is defined as screen up. + SNS_FACING_EVENT_STATE_UP = 1; + //Phone has just moved to a facing-down phone posture, + //which is defined as screen down. + SNS_FACING_EVENT_STATE_DOWN = 2; + //Phone has just left either the facing-up + //or the facing-down phone posture + SNS_FACING_EVENT_STATE_NEUTRAL = 3; +} + +// Event Message +// Output data event generated by the facing sensor. +message sns_facing_event +{ + // Facing sensor state info + required sns_facing_event_state state = 1[default = SNS_FACING_EVENT_STATE_UNKNOWN]; +} + +// Stream events: +// +// The sns_facing_event message is used to publish updated state +// +// Facing sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_fmv.proto b/proprietary/vendor/etc/sensors/proto/sns_fmv.proto new file mode 100644 index 0000000..a6bdfb0 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_fmv.proto @@ -0,0 +1,40 @@ +// @file sns_fmv.proto +// +// Defines the API for Filtered Magnetic Vector. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A FMV sensor reports the filtered magnetic vector +// +// ## FMV sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "fmv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the FMV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// 1. Output of the FMV sensor will be populated in sns_std_sensor_event +// 2. Each stream event contains three output data fields in µT (micro Tesla) +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_formatter.proto b/proprietary/vendor/etc/sensors/proto/sns_formatter.proto new file mode 100644 index 0000000..5188558 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_formatter.proto @@ -0,0 +1,165 @@ +// @file sns_formatter.proto +// +// Defines standard message types for the Offset/Formatter sensor +// +// Copyright (c) 2018, 2020, 2022 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; +import "sns_std_sensor.proto"; + +enum sns_formatter_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_MSGID_SNS_FORMATTER_REQUEST = 512; + SNS_FORMATTER_MSGID_SNS_FORMATTER_METRIC_DATA_REQUEST = 513; + SNS_FORMATTER_MSGID_SNS_FORMATTER_BROADCAST_DATA_REQUEST = 514; + + SNS_FORMATTER_MSGID_SNS_FORMATTER_OUTPUT_EVENT = 1024; + SNS_FORMATTER_MSGID_SNS_FORMATTER_ACK_EVENT = 1025; + SNS_FORMATTER_MSGID_SNS_FORMATTER_OUTPUT_GOAL_EVENT = 1026; + SNS_FORMATTER_MSGID_SNS_FORMATTER_OUTPUT_THRESHOLD_EVENT = 1027; + } + +enum sns_formatter_request_values { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_REQUEST_INVALID = 0; + // Creates a new instance of a metric with given id. + SNS_FORMATTER_REQUEST_CREATE = 1; + // Starts or resumes the update of the metric instances. + SNS_FORMATTER_REQUEST_START = 2; + // Stops the update of the metric instances. + SNS_FORMATTER_REQUEST_STOP = 3; + // Resets metric instance state. + SNS_FORMATTER_REQUEST_RESET = 4; + // Destroys the metric instance. Release the resources for that instance. + SNS_FORMATTER_REQUEST_DESTROY = 5; + // Set the config data based on the group name. + SNS_FORMATTER_REQUEST_CONFIG_SET = 6; + // fetch the config data based on the group name. + SNS_FORMATTER_REQUEST_CONFIG_GET = 7; + // Updates the batch period at the client manager. + SNS_FORMATTER_REQUEST_BATCH = 8; + // Pauses the update of the metric instances + SNS_FORMATTER_REQUEST_PAUSE = 9; +} + +enum sns_formatter_status_values { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_STATUS_FAILURE = 0; + SNS_FORMATTER_STATUS_INVALID_PARAM = 1; + SNS_FORMATTER_STATUS_SUCCESS = 2; +} + +enum sns_formatter_client_id { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_CLIENT_BG = 0; + SNS_FORMATTER_CLIENT_APPS = 1; +} + +enum sns_formatter_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_OUTPUT_DATA_EVENT = 0; + SNS_FORMATTER_OUTPUT_BUFFER_EVENT = 1; + SNS_FORMATTER_CONFIG_DATA_EVENT = 2; +} + +// "UNUSED" is filled by clients for strings which are +// not applicable for a given sns_formatter-request_values id. +message sns_formatter_config_payload { + optional sns_std_suid metric_sensor_suid = 1; + required sns_std_suid formatter_suid = 2; + required float sample_rate = 3; + required string format_input_str = 4; + required string metric_name = 5; + required string group_name = 7; + required string sensor_config_data = 8; +} + +message sns_formatter_output_event_payload +{ + required bytes data = 1; + required sns_std_sensor_sample_status status = 2; + required sns_formatter_event_type event_type = 3; +} + +// Formatter config message +// Used by clients to configure the formatter for various metrics +message sns_formatter_request +{ + required sns_formatter_request_values msg_id = 1; + required fixed32 metric_id = 2; + required sns_formatter_client_id client_id = 3; + optional sns_formatter_config_payload payload = 4; + optional sns_formatter_output_event_payload event_payload = 5; +} + +message sns_formatter_metric_data_request +{ + required fixed32 metric_id = 1; + required bytes metric_data = 2; +} + +message sns_formatter_broadcast_data_request +{ + required bytes broadcast_data = 1; +} + +// Formatter output event +// This event contains the formatted string output corresponding to the +// metric requested by the client. +message sns_formatter_output_event +{ + required fixed32 metric_id = 1; + required string formatted_output = 2; + required sns_formatter_output_event_payload event_payload = 3; +} + +enum sns_formatter_goal_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_GOAL_VALUE = 1; + SNS_FORMATTER_GOAL_DURATION = 2; +} + + +message sns_formatter_output_goal_event +{ + required fixed32 metric_id = 1; + required sns_formatter_goal_type goal_type = 2; + oneof goal_data + { + fixed32 int_data =3; // Data can be goal value or duration. Goal_type is used to identify type of data. + float float_data =4; // This is for goal value of float type. Ex: Algos like distance may set float values + } +} + +enum sns_formatter_threshold_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_HIGH_THRESHOLD_ACHIEVED =1; + SNS_FORMATTER_LOW_THRESHOLD_ACHIEVED=2; +} + +message sns_formatter_output_threshold_event +{ + required fixed32 metric_id = 1; + required sns_formatter_threshold_type th_type = 2; +} + +// Formatter acknowledge event +// This event contains the status for the request sent from the client. +// Status indicates if the requested format string was valid or not. +message sns_formatter_ack_event +{ + required fixed32 metric_id = 1; + required sns_formatter_status_values status = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_formatter_notify.proto b/proprietary/vendor/etc/sensors/proto/sns_formatter_notify.proto new file mode 100644 index 0000000..81b781b --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_formatter_notify.proto @@ -0,0 +1,37 @@ +// @file sns_formatter_notify.proto +// +// Defines standard message types for the formatter_notify sensor +// +// Copyright (c) 2022 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +//Formatter notify sensor sends formatter notification event, +//And sports offload HAL is expected to trigger an action + +// Formatter_Notify Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "formatter_notify" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; +import "sns_std_sensor.proto"; + +enum sns_formatter_notify_msgid +{ + option (nanopb_enumopt).long_names = false; + SNS_FORMATTER_NOTIFY_MSGID_SNS_FORMATTER_NOTIFY_EVENT = 1028; +} + +enum sns_formatter_notify_event_type +{ + option (nanopb_enumopt).long_names = false; + SNS_FORMATTER_NOTIFY_EVENT_FLUSH = 1; +} + +message sns_formatter_notify_event +{ + // formatter_notify state + required sns_formatter_notify_event_type state = 1 [default = SNS_FORMATTER_NOTIFY_EVENT_FLUSH]; +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/proto/sns_fw.proto b/proprietary/vendor/etc/sensors/proto/sns_fw.proto new file mode 100644 index 0000000..c29a1af --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_fw.proto @@ -0,0 +1,23 @@ +// @file sns_fw.proto +// +// Defines Framework internal values. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Internal Framework message IDs +// Note: These message IDs must not conflict with those in sns_std_msgid +enum sns_fw_msgid { + option (nanopb_enumopt).long_names = false; + + // Special message only sent by the Framework; not processed by Sensors + // Empty Message + SNS_FW_MSGID_SNS_DESTROY_REQ = 120; + + // Special message only sent by the Framework; not processed by Sensors + // Empty Message + SNS_FW_MSGID_SNS_DESTROY_COMPLETE_EVENT = 250; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto b/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto new file mode 100644 index 0000000..6f0f3df --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto @@ -0,0 +1,48 @@ +// @file sns_game_rv.proto +// +// Defines the API for Game Rotation Vector sensors +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A GameRV sensor reports the orientation of the device relative to an +// unspecified coordinates frame. It is obtained by integration of +// accelerometer and gyroscope readings. Therefore the Y axis doesn't point +// north but instead to an arbitrary reference. +// +// ## GameRV sensor attributes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE is "game_rv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the GameRV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the GameRV sensor will be populated in sns_std_sensor_event +// +// The orientation is represented by the rotation necessary to align +// the coordinate frame with the device's coordinates. That is, +// applying the rotation to the world frame (X,Y,Z) would align them with +// the device coordinates (x,y,z). +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference device orientation to the current +// device orientation. The rotation is encoded as the four unitless x, y, z, w +// components of a unit quaternion: +// sns_std_sensor_event::data[0] = rot_axis.x*sin(theta/2) +// sns_std_sensor_event::data[1] = rot_axis.y*sin(theta/2) +// sns_std_sensor_event::data[2] = rot_axis.z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto b/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto new file mode 100644 index 0000000..98b2b18 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto @@ -0,0 +1,50 @@ +// @file sns_geomag_rv.proto +// +// Defines the API for Geomagnetic Rotation Vector sensors. +// This Sensor is similar to Rotation Vector, but uses a magnetometer instead +// of a gyroscope. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A GeoMagRV sensor reports the orientation of the device relative to the +// East-North-Up coordinates frame. It is obtained by integration of +// accelerometer and magnetometer readings. +// +// ## GeoMagRV sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "geomag_rv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the GeoMagRV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the GeoMagRV sensor will be populated in sns_std_sensor_event +// +// The East-North-Up coordinate system is defined as a direct orthonormal +// basis where: +// - X points east and is tangential to the ground. +// - Y points north and is tangential to the ground. +// - Z points towards the sky and is perpendicular to the ground. +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference device orientation to the current +// device orientation. The rotation is encoded as the four unitless x, y, z, w +// components of a unit quaternion: +// sns_std_sensor_event::data[0] = rot_axis.x*sin(theta/2) +// sns_std_sensor_event::data[1] = rot_axis.y*sin(theta/2) +// sns_std_sensor_event::data[2] = rot_axis.z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_gravity.proto b/proprietary/vendor/etc/sensors/proto/sns_gravity.proto new file mode 100644 index 0000000..6a04f14 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gravity.proto @@ -0,0 +1,30 @@ +// @file sns_gravity.proto +// +// Defines standard message types for the Gravity Sensor +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Configuration Message +// Used to either request for a certain configuration of the gravity sensor or +// alter an already existing configuration of the gravity sensor +// Uses sns_std_sensor_config defined in sns_std_sensor.proto +// The message field definitions are as follows: +// 1) float sample_rate +// containing the required sample rate of the gravity sensor in hertz + +// Data Message +// Data event generated by the gravity. +// Uses sns_std_sensor_event message defined in sns_std_sensor.proto +// The data field of the sns_std_sensor_event message +// contains a float array of length 6 with the following definition +// 1) float data[0] to data[2] +// Representing the gravity values along x,y,z axes in m/s2. +// 2) float data[3] to data[5] +// Representing the linear acceleration values along x,y,z axes in m/s2. +// Determined as the delta between the accel and the gravity values +// along that axis. diff --git a/proprietary/vendor/etc/sensors/proto/sns_gyro.proto b/proprietary/vendor/etc/sensors/proto/sns_gyro.proto new file mode 100644 index 0000000..03f1bc5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gyro.proto @@ -0,0 +1,74 @@ +// @file sns_gyro.proto +// +// Defines the API for Gyroscope Sensors. +// All Gyroscope Sensor drivers are required to comply with this API. +// Any new functionality for Gyroscope Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Gyroscope Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "gyro". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in (radians/sec)/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in radians/sec unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Gyroscope Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. The Gyroscope Sensor uses batching_period item in +// sns_std_request as the requested batching rate to determine +// hardware FIFO watermark. + +// Handling stream events: +// 1. The Gyroscope Sensor publishes device rotation data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields where data is +// in radians/sec units and is factory calibrated. +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// This conforms to the mobile device axes orientation as specified by the +// Android Sensor API. +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 6. The Gyroscope Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 7. The Gyroscope Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and comp_matrix fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. +// Handling self-test requests: +// 1. The Gyroscope Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Gyroscope Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Gyroscope Sensor could implement other test types. + +// Handling test events: +// 1. The Gyroscope Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto new file mode 100644 index 0000000..279c070 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto @@ -0,0 +1,32 @@ +// @file sns_gyro_cal.proto +// +// Defines message types for the Gyro Calibration Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_cal.proto"; + +// The Gyro Calibration Sensor determines the calibration parameters +// for gyro sensor + +// Gyro Calibration Sensor Attributes: +// - SNS_STD_SENSOR_ATTRID_TYPE: "gyro_cal" +// - SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG message ID is used to +// enable the sensor +// - SNS_CAL_MSGID_SNS_CAL_RESET message ID is used to reset the algorithm +// and any previously determined calibration parameters. + +// Stream Events: +// - SNS_CAL_MSGID_SNS_CAL_EVENT message ID is used to report calibration +// parameters to the client of the sensor. The sns_cal_event message as +// defined in sns_cal.proto is used to report this data event where the +// units for the bias field in the message are in rad / s + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto b/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto new file mode 100644 index 0000000..06a1c54 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto @@ -0,0 +1,50 @@ +// @file sns_gyro_rot_matrix.proto +// +// Defines standard message types for the Gyro Rotation Matrix +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +enum sns_gyro_rot_matrix_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_GYRO_ROT_MATRIX_MSGID_SNS_STD_SENSOR_EVENT = 1024; +} + +// Data Message +// Data event generated by the gyro rotation matrix. +// Uses sns_std_sensor_event message defined in sns_std_sensor.proto +// The data field of the sns_std_sensor_event message +// contains a float array of length 10 with the following definition +// 1) float data[0] to data[8] +// 3 by 3 Gyro Rotation Matrix output +// Representing the rotation from previously sampled gyro values +// to the current one. +// The matrix definition is as follows: +// curr_gyro_XYZ[3X1] = gyro_rot_matrix[3X3] * prev_gyro_XYZ[3X1] +// data[0] = gyro_rot_matrix[0,0] +// data[1] = gyro_rot_matrix[0,1] +// data[2] = gyro_rot_matrix[0,2] +// data[3] = gyro_rot_matrix[1,0] +// data[4] = gyro_rot_matrix[1,1] +// data[5] = gyro_rot_matrix[1,2] +// data[6] = gyro_rot_matrix[2,0] +// data[7] = gyro_rot_matrix[2,1] +// data[8] = gyro_rot_matrix[2,2] +// 2) float data[9] +// Gyro Norm of the currently sampled gyro data +// determined as the sum of squares of gyro on each of the axes +// i.e. curr_gyro_X^2 + curr_gyro_Y^2 + curr_gyro_Z^2 + +// Configuration Message +// Used to either request for a certain configuration of the Gyro Rotation Matrix Sensor or +// alter an already existing configuration of the Simulation Sensor +// Uses sns_std_sensor_config defined in sns_std_sensor.proto +// The message field definitions are as follows: +// 1) float sample_rate +// containing the required sample rate of the Gyro Rotation Matrix sensor in hertz diff --git a/proprietary/vendor/etc/sensors/proto/sns_hall.proto b/proprietary/vendor/etc/sensors/proto/sns_hall.proto new file mode 100644 index 0000000..a779844 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_hall.proto @@ -0,0 +1,82 @@ +// @file sns_hall.proto +// +// Defines the API for Hall Sensors. +// All Hall Sensor drivers are required to comply with this API. +// Any new functionality for Hall Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Hall Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "hall". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute is not applicable since this is an event +// sensor. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values as 0 and 1. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Hall Sensor handles the SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// message ID for all stream enable/update requests. +// 2. The Hall Sensor operates in on-change mode and report +// samples only for magnet NEAR/FAR transitions. + +// Message IDs for hall Sensor +enum sns_hall_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_hall_event + // Purpose: An output data event from the hall sensor to it's client. + SNS_HALL_MSGID_SNS_HALL_EVENT = 770; +} + +enum sns_hall_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_HALL_EVENT_TYPE_FAR = 0; + SNS_HALL_EVENT_TYPE_NEAR = 1; +} + +// Events types from hall Sensor +message sns_hall_event +{ + // Hall NEAR/FAR output event + required sns_hall_event_type hall_event_type = 1 [default = SNS_HALL_EVENT_TYPE_FAR]; + + // Hall sensor sample status + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Handling stream events: +// 1. The Hall Sensor publishes magnetic field proximity data stream +// events using the sns_hall_event message. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. The Hall Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + +// Handling self-test requests: +// 1. The Hall Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Hall Sensor could implement other test types. + +// Handling test events: +// 1. The Hall Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto b/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto new file mode 100644 index 0000000..3b0b2d1 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto @@ -0,0 +1,31 @@ +// @file sns_heart_beat.proto +// +// Defines the API for Heart Beat sensors +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A heart beat sensor reports everytime a heart beat peak is detected. +// +// Peak ideally corresponds to the positive peak in the QRS complex of +// an ECG signal, and the event timestamp should correspond to the time this +// peak occured. +// +// The sensor is not expected to be optimized for latency. As a guide, a +// receipt latency of up to 10 seconds is acceptable. +// +// ## Heart Beat sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "heart_beat" +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: sns_std_sensor_event +// Output of the Heart Beat sensor will be populated in sns_std_sensor_event. +// +// sns_std_sensor_event::data[0] = confidence in the detection of the peak +// where 0.0 represent no information at all, and 1.0 represents certainty. diff --git a/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto b/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto new file mode 100644 index 0000000..c6f90f5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto @@ -0,0 +1,55 @@ +// @file sns_heart_rate.proto +// +// Defines the API for Heart Rate Detection Sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A sensor of this type returns the current heart rate in beats per minute +// (BPM). Because this sensor is on-change, events must be generated when and +// only when BPM or status have changed since the last event. +// +// Upon the first activation, unless the device is known to not be on the +// body, the status field of the first event must be set to UNRELIABLE. +// +// ## Heart Rate sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "heart_rate" +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: sns_std_sensor_event +// Output of the Heart Rate sensor will be populated in sns_std_sensor_event. +// +// SNS_HEART_RATE_MSGID_SNS_HEART_RATE_EVENT::data[0] = current heart rate in beats per minute (BPM) +// +// SNS_HEART_RATE_MSGID_SNS_HEART_RATE_EVENT::status specifies the reliability of the sample value +// value is of type sns_heart_rate_event_type. + +enum sns_heart_rate_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_HEART_RATE_MSGID_SNS_HEART_RATE_EVENT = 779; +} + +enum sns_heart_rate_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_HR_STATUS_NO_CONTACT = -1; + SNS_HR_STATUS_UNRELIABLE = 0; + SNS_HR_STATUS_ACCURACY_LOW = 1; + SNS_HR_STATUS_ACCURACY_MEDIUM = 2; + SNS_HR_STATUS_ACCURACY_HIGH = 3; +} + +// Events types from heart_rate Sensor +message sns_heart_rate_event +{ + required float heart_rate = 1; + required sns_heart_rate_event_type heart_rate_event_type = 2 [default = SNS_HR_STATUS_NO_CONTACT]; +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto b/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto new file mode 100644 index 0000000..0e8e8eb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto @@ -0,0 +1,83 @@ + +// @file sns_hinge_angle.proto +// +// Defines message types for the Hinge Angle Sensor. +// +// Copyright (c) 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Hinge Angle Sensor detects the angle between two rigid bodies connected by a hinge +// around which rotation can occur. +// +// The reference position for Hinge Angle measurement constitues the two rigid bodies being +// parallel to the ground, with surfaces in contact with each other and hinge connecting +// the left edges of the two rigid bodies. +// The rigid body that is located below is defined to be the primary rigid body. +// The rigid body which is located above is defined to be the secondary rigid body. +// +// The Hinge Angle Sensor detects the angle going from the primary rigid body to the +// secondary rigid body, measured counter clockwise around the hinge. The maximum range of +// reported angles will be from 0 degrees to 360 degrees. +// +// A Hinge Angle of 0 degrees is reported when the two rigid bodies have the same surfaces, +// as described in the reference position, in contact with each other. +// +// A Hinge Angle of 360 degrees is reported when the two rigid bodies have the opposite +// surfaces, to those described in the reference position, in contact with each other. +// +// A Hinge Angle of 180 degrees is reported when the two rigid bodies are coplanar. + +// Attribute Requirements: +// Hingle Angle Sensor must support the following attributes +// SNS_STD_SENSOR_ATTRID_TYPE: "hinge_angle" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE +// SNS_STD_SENSOR_ATTRID_RESOLUTIONS: the smallest hinge angle in degrees that +// can be detected by the sensor +// SNS_STD_SENSOR_ATTRID_RANGES: the range of angles detected by the sensor, for +// example [0,360] + +// Request: +// A request message with message id SNS_HINGE_ANGLE_MSGID_SNS_HINGE_ANGLE_CONFIG +// and payload sns_hinge_angle_config is used to enable the Hinge Angle Sensor + +// Event: +// Hinge Angle sensor generates an event with message id +// SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_EVENT and payload sns_std_sensor_event +// when hinge angle change is detected + +// Message IDs for HINGE_ANGLE Sensor +enum sns_hinge_angle_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_HINGE_ANGLE_MSGID_SNS_HINGE_ANGLE_CONFIG = 512; +} + + +// Request Message +// Used to either request for a new configuration of the Hinge Angle Sensor or +// alter an already existing configuration +message sns_hinge_angle_config +{ + // Ids of the primary and secondary rigid bodies between which hinge angle + // is to be measured. Ids must match the SNS_STD_SENSOR_ATTRID_RIGID_BODY + // attributes of the sensors on these rigid bodies that are to be used. + repeated int32 rigid_body = 1 [(nanopb).max_count = 2]; +} + + +// Event Message +// Uses sns_std_sensor_event message defined in sns_std_sensor.proto +// The data field of the sns_std_sensor_event message contains a +// single floating point value representing the detected hinge angle +// in degrees +// The status field of the sns_std_sensor_event message contains the +// accuracy of the detected hinge angle + + + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_humidity.proto b/proprietary/vendor/etc/sensors/proto/sns_humidity.proto new file mode 100644 index 0000000..7ae47bc --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_humidity.proto @@ -0,0 +1,69 @@ +// @file sns_humidity.proto +// +// Defines the API for Humidity Sensors. +// All Humidity Sensor drivers are required to comply with this API. +// Any new functionality for Humidity Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Humidity Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "humidity". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in %RH/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in %RH unit. +// 4. The Humidity Sensor is an on-change sensor. +// 5. See sns_std_sensor.proto for other attributes. + + +// Handling stream requests: +// 1. The Humidity Sensor handles the SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// message ID for all stream enable/update requests. +// 2. The Humidity Sensor supports on-change mode of operation. +// 3. In on-change mode the Sensor could use interrupt operation and +// reports samples for only significant change in humidity. +// Example: +/- 5% change. + +// Handling stream events: +// 1. The Humidity Sensor publishes ambient relative humidity data stream +// events using the sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Humidity data in %RH (% Relative Humidity) +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Humidity Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Humidity Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Humidity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Humidity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Humidity Sensor could implement other test types. + +// Handling test events: +// 1. The Humidity Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_mag.proto b/proprietary/vendor/etc/sensors/proto/sns_mag.proto new file mode 100644 index 0000000..174bfa5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_mag.proto @@ -0,0 +1,75 @@ +// @file sns_mag.proto +// +// Defines the API for Magnetometer Sensors. +// All Magnetometer Sensor drivers are required to comply with this API. +// Any new functionality for Magnetometer Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Magnetometer Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "mag". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in µT/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in µT unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Magnetometer Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Magnetometer +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Magnetometer Sensor publishes ambient magnetic field data events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields where data is +// in µT (micro Tesla) units and is factory calibrated. +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// This conforms to the mobile device axes orientation as specified by the +// Android Sensor API. +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 6. The Magnetometer Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 7. The Magnetometer Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and comp_matrix fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Magnetometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Magnetometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Magnetometer Sensor could implement other test types. + +// Handling test events: +// 1. The Magnetometer Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto new file mode 100644 index 0000000..d6fc026 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto @@ -0,0 +1,32 @@ +// @file sns_mag_cal.proto +// +// Defines message types for the Mag Calibration Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_cal.proto"; + +// The Mag Calibration Sensor determines the calibration parameters +// for magnetometer sensor + +// Mag Calibration Sensor Attributes: +// - SNS_STD_SENSOR_ATTRID_TYPE: "mag_cal" +// - SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG message ID is used to +// enable the sensor +// - SNS_CAL_MSGID_SNS_CAL_RESET message ID is used to reset the algorithm +// and any previously determined calibration parameters. + +// Stream Events: +// - SNS_CAL_MSGID_SNS_CAL_EVENT message ID is used to report calibration +// parameters to the client of the sensor. The sns_cal_event message as +// defined in sns_cal.proto is used to report this data event where the +// units for the bias field in the message are in micro Tesla. + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto new file mode 100644 index 0000000..0476704 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto @@ -0,0 +1,63 @@ +// @file sns_mot_factory_cal.proto +// +// Defines test API message types for more test command. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_mot_factory_cal_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Test config request to a physical Sensor + SNS_MOT_FACTORY_CAL_MSGID_SNS_PHYSICAL_SENSOR_TEST_CONFIG = 575; + + // Test event message from a physical Sensor + SNS_MOT_FACTORY_CAL_MSGID_SNS_PHYSICAL_SENSOR_TEST_EVENT = 1055; +} + +// Supported mot_factory_cal types for physical sensors +enum sns_mot_factory_cal_type +{ + option (nanopb_enumopt).long_names = false; + + // read. + SNS_MOT_FACTORY_CAL_TYPE_RD= 0; + + // Set. + SNS_MOT_FACTORY_CAL_TYPE_SET = 1; + + // Read bias. + SNS_MOT_FACTORY_CAL_TYPE_RD_BIAS = 2; + + // Proximity sensor threshold calibration + SNS_MOT_FACTORY_CAL_TYPE_PROX_CAL = 3; + + // Restore calibration's golden value + SNS_MOT_FACTORY_CAL_TYPE_UNDO_CAL = 4; + + //Interrupt line test + SNS_MOT_FACTORY_IRQ_LINE_TEST = 5; +} + +message sns_mot_factory_cal_config +{ + // Requested test type. + required sns_mot_factory_cal_type test_type = 1; + repeated float target_val = 2 [(nanopb).max_count = 5]; +} + +message sns_mot_factory_cal_event +{ + // Result if the test execution was successful: + // true for success + // false for failure + required bool test_passed = 1 [default = true]; + required sns_mot_factory_cal_type test_type = 2 [default = SNS_MOT_FACTORY_CAL_TYPE_RD_BIAS]; + repeated float data_val = 3; +} + diff --git a/proprietary/vendor/etc/sensors/proto/sns_oem1.proto b/proprietary/vendor/etc/sensors/proto/sns_oem1.proto new file mode 100644 index 0000000..a331eb2 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_oem1.proto @@ -0,0 +1,39 @@ +// @file sns_oem1.proto +// +// Defines standard message types for the OEM1 +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +enum sns_oem1_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_OEM1_MSGID_SNS_OEM1_DATA = 1024; +} + + +// Configuration Message +// Used to either request for a certain configuration of the Sim Sensor or +// alter an already existing configuration of the Simulation Sensor +// Uses sns_std_sensor_config defined in sns_std_sensor.proto +// The message field definitions are as follows: +// 1) float sample_rate +// containing the required sample rate of the Sim sensor in hertz + +// Data Message +// Output data event generated by the oem1 sensor. +message sns_oem1_data +{ + // oem1 Vector along axis x,y,z in m/s2 + repeated float oem1 = 1 [(nanopb).max_count = 3]; + + // Accuracy of the data + required sns_std_sensor_sample_status accuracy = 2; +} + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto b/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto new file mode 100644 index 0000000..b198b6d --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto @@ -0,0 +1,56 @@ +// @file sns_offbody_detect.proto +// +// Defines the API for Offbody Detection Sensors. +// +// Copyright (c) 2017-2018,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; + +// An offbody detect sensor reports every time the device transitions from +// off-body to on-body and from on-body to off-body (e.g. a wearable device +// being removed from the wrist would trigger an event indicating an off-body +// transition). +// +// This sensor must be able to detect and report an on-body to off-body +// transition within 1 second of the device being removed from the body, +// and must be able to detect and report an off-body to on-body transition +// within 5 seconds of the device being put back onto the body. +// +// ## Offbody Detection sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "offbody_detect" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: SNS_OFFBODY_DETECT_MSGID_SNS_OFFBODY_DETECT_EVENT + +// Message IDs for Offbody Detection Sensor +enum sns_offbody_detect_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_OFFBODY_DETECT_MSGID_SNS_OFFBODY_DETECT_EVENT = 772; +} + +enum sns_offbody_detect_event_type +{ + option (nanopb_enumopt).long_names = false; + + // Current state is unknown: not yet detected + SNS_OFFBODY_DETECT_EVENT_TYPE_UNKNOWN = 0; + // Device has been detected to be on-body + SNS_OFFBODY_DETECT_EVENT_TYPE_ON = 1; + // Device has been detected to be off-body + SNS_OFFBODY_DETECT_EVENT_TYPE_OFF = 2; +} + +message sns_offbody_detect_event +{ + // Detected state + required sns_offbody_detect_event_type state = 1 [default = SNS_OFFBODY_DETECT_EVENT_TYPE_UNKNOWN]; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto b/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto new file mode 100644 index 0000000..4b1e1b1 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto @@ -0,0 +1,56 @@ +// @file sns_pedometer.proto +// +// Defines message types for the Pedometer Sensor. +// +// Copyright (c) 2017-2019 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Pedometer Sensor detects steps taken by the user +// +// The Pedometer step event includes the latest step count accumulated since +// activation. +// All clients to Pedometer get the same step event. +// The timestamp of the event indicates the time of the latest detected step. + +// Pedometer Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "pedometer" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Pedometer Sensor +enum sns_pedometer_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_PEDOMETER_MSGID_SNS_STEP_EVENT = 1028; + + SNS_PEDOMETER_MSGID_SNS_STEP_EVENT_CONFIG = 775; +} + +// Events types from Pedometer Sensor +message sns_step_event +{ + //an incrementing step count + required uint32 step_count = 1; +} + +message sns_step_event_config +{ + //current step count + required uint32 step_count = 1; +} + + +// Stream events: +// +// The sns_step_event message is used to publish updated step count +// +// The sns_step_event_config message is used to publish current step count +// to the client + diff --git a/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto b/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto new file mode 100644 index 0000000..65a6348 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto @@ -0,0 +1,56 @@ +// @file sns_pedometer_wrist.proto +// +// Defines message types for the Pedometer_wrist Sensor. +// +// Copyright (c) 2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Pedometer_wrist Sensor detects steps taken by the user +// +// The Pedometer_wrist Step event is generated when the user takes a step. +// The event includes the latest step count accumulated since activation. +// All clients to Pedometer_wrist get the same step event. +// The timestamp of the event indicates the time of the latest detected step. + +// Pedometer_wrist Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "pedometer_wrist" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Pedometer_wrist Sensor +enum sns_pedometer_wrist_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_PEDOMETER_WRIST_MSGID_SNS_PEDOMETER_STEP_EVENT = 1028; + //send to client immediatly to inform current step count + //msg body same as sns_step_event + SNS_PEDOMETER_WRIST_MSGID_SNS_PEDOMETER_STEP_EVENT_CONFIG = 775; +} + +// Events types from Pedometer_wrist Sensor +message sns_pedometer_step_event +{ + //an incrementing step count + required uint32 step_count = 1; +} + +message sns_pedometer_step_event_config +{ + //current step count + required uint32 step_count = 1; +} + + +// Stream events: +// +// The sns_step_event message is used to publish updated step count +// +// Pedometer_wrist does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto b/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto new file mode 100644 index 0000000..70e7638 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto @@ -0,0 +1,80 @@ +// @file sns_physical_sensor_test.proto +// +// Defines test API message types for physical sensors. +// +// All physical Sensor drivers are required to use this API to support +// self-test. SNS_PHYSICAL_SENSOR_TEST_TYPE_COM is a mandatory test type and must be +// implemented in all physical Sensor drivers. Any new or device-specific +// test type may be defined in the Sensor-specific API. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_physical_sensor_test_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Test config request to a physical Sensor + SNS_PHYSICAL_SENSOR_TEST_MSGID_SNS_PHYSICAL_SENSOR_TEST_CONFIG = 515; + + // Test event message from a physical Sensor + SNS_PHYSICAL_SENSOR_TEST_MSGID_SNS_PHYSICAL_SENSOR_TEST_EVENT = 1026; +} + +// Supported test types for physical sensors +enum sns_physical_sensor_test_type +{ + option (nanopb_enumopt).long_names = false; + + // Software test. + SNS_PHYSICAL_SENSOR_TEST_TYPE_SW = 0; + + // Sensor Hardware test. + SNS_PHYSICAL_SENSOR_TEST_TYPE_HW = 1; + + // Factory test used for Sensor calibration. + SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY = 2; + + // Communication bus test. + SNS_PHYSICAL_SENSOR_TEST_TYPE_COM = 3; +} + +// Physical Sensor test configuration request +message sns_physical_sensor_test_config +{ + // Requested test type. + required sns_physical_sensor_test_type test_type = 1; +} + +// Physical Sensor test event +message sns_physical_sensor_test_event +{ + // Result if the test execution was successful: + // true for success + // false for failure + required bool test_passed = 1 [default = true]; + + // test_type from sns_physical_sensor_test_config that + // this event corresponds to + required sns_physical_sensor_test_type test_type = 2 [default = SNS_PHYSICAL_SENSOR_TEST_TYPE_COM]; + + // Driver specific test data. This field can be used + // to pass additional information like failure codes, debug data, etc. + optional bytes test_data = 3; +} + +// Self-test and streaming concurrency requirements: +// 1. If the sensor is streaming and there is a client request to run +// self-test (any test type) then the driver: +// a. Pauses the stream +// b. Executes the self-test request to completion +// c. Resumes stream +// 2. If the self-test is running and there is a client request to start +// a sensor stream then the driver: +// a. Rejects the stream request +// b. Continues executing the self-test request to completion + diff --git a/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto b/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto new file mode 100644 index 0000000..3cb43e9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto @@ -0,0 +1,70 @@ +// @file sns_pose_6dof.proto +// +// Defines the API for Pose Six Degrees of Freedom sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A pose 6dof sensor events consists of a rotation expressed as a quaternion +// and a translation expressed in SI units. Pose of the device is defined as +// the orientation of the device from a Earth Centered Earth Fixed frame and +// the translation from an arbitrary point at subscription. +// +// ## Pose 6DOF sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "pose_6dof" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the Pose 6DOF sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the Pose 6DOF sensor will be populated in sns_std_sensor_event +// +// A Pose 6DOF sensor reports the orientation of the device relative +// to the East-North-Up coordinates frame. It is obtained by +// integration of accelerometer and gyroscope readings. +// The East-North-Up coordinate system is defined as a direct +// orthonormal basis where: +// +// - X points east and is tangential to the ground. +// - Y points north and is tangential to the ground. +// - Z points towards the sky and is perpendicular to the ground. +// +// The orientation is represented by the rotation necessary to align +// the East-North-Up coordinates with the device's coordinates. That is, +// applying the rotation to the world frame (X,Y,Z) would align them with +// the device coordinates (x,y,z). +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference (East-North-Up aligned) device +// orientation to the current device orientation. The rotation is encoded +// as the four unitless x, y, z, w components of a unit quaternion: +// +// sns_std_sensor_event::data[0] = x*sin(theta/2) +// sns_std_sensor_event::data[1] = y*sin(theta/2) +// sns_std_sensor_event::data[2] = z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// sns_std_sensor_event::data[4] = Translation along x axis from an arbitrary origin. +// sns_std_sensor_event::data[5] = Translation along y axis from an arbitrary origin. +// sns_std_sensor_event::data[6] = Translation along z axis from an arbitrary origin. +// sns_std_sensor_event::data[7] = Delta quaternion rotation x*sin(theta/2) +// sns_std_sensor_event::data[8] = Delta quaternion rotation y*sin(theta/2) +// sns_std_sensor_event::data[9] = Delta quaternion rotation z*sin(theta/2) +// sns_std_sensor_event::data[10] = Delta quaternion rotation cos(theta/2) +// sns_std_sensor_event::data[11] = Delta translation along x axis. +// sns_std_sensor_event::data[12] = Delta translation along y axis. +// sns_std_sensor_event::data[13] = Delta translation along z axis. +// sns_std_sensor_event::data[14] = Sequence number; ascending sequentially from 0 + +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_ppg.proto b/proprietary/vendor/etc/sensors/proto/sns_ppg.proto new file mode 100644 index 0000000..d34368a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ppg.proto @@ -0,0 +1,46 @@ +// @file sns_ppg.proto +// +// Defines the API for PPG Sensors. +// +// Copyright (c) 2017-2018,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; + +// Attribute requirements: +// The PPG Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ppg". +// 2. SNS_STD_SENSOR_ATTRID_RATES attribute values in Hz. + +// Handling stream requests: +// 1. The PPG Sensor handles the sns_std_sensor_config +// message request with msgid SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG +// for all stream enable/update requests. +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_STREAMING +// 2. The PPG Sensor uses batching_period item in +// sns_std_request as the requested batching rate to determine +// hardware FIFO watermark. + +// Handling stream events: +// 1. The PPG Sensor publishes PPG data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields +// data[0] => PPG ch1 +// data[1] => PPG ch2 +// data[2] => PPG ch3 +// data[3] => PPG ch4 +// data[4] => TOUCH_FLAG. 128 if onbody detect, 0 otherwise +// data[5] => WEAR_INDEX. 1 if wear loose, 0 otherwise +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The PPG Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_pressure.proto b/proprietary/vendor/etc/sensors/proto/sns_pressure.proto new file mode 100644 index 0000000..97262cd --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pressure.proto @@ -0,0 +1,65 @@ +// @file sns_pressure.proto +// +// Defines the API for Pressure Sensors. +// All Pressure Sensor drivers are required to comply with this API. +// Any new functionality for Pressure Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Pressure Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "pressure". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute values in hectoPascal/LSB unit. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in hectoPascal unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Pressure Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Pressure +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Pressure Sensor publishes atmospheric pressure data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Pressure data in hPa (hectoPascal) +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Pressure Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Pressure Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Pressure Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Pressure Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Pressure Sensor could implement other test types. + +// Handling test events: +// 1. The Pressure Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_proximity.proto b/proprietary/vendor/etc/sensors/proto/sns_proximity.proto new file mode 100644 index 0000000..04088da --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_proximity.proto @@ -0,0 +1,152 @@ +// @file sns_proximity.proto +// +// Defines the API for Proximity Sensors. +// All Proximity Sensor drivers are required to comply with this API. +// Any new functionality for Proximity Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2019 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Proximity Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "proximity". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute is not applicable since this +// is an event sensor. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in cm unit (proximity distance). +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Proximity Sensor supports both streaming and on-change +// modes and the operating mode is configured in the Registry. +// 2. The streaming Proximity Sensor handles the sns_std_sensor_config request +// for all stream enable/update requests. +// 3. The on-change Proximity Sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all on-change enable/update requests. +// 4. In on-change mode the Sensor uses interrupt operation and reports +// samples only for NEAR/FAR transitions. + +// Message IDs for proximity Sensor +enum sns_proximity_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_proximity_event + // Purpose: A non-recurring output data event from the proximity sensor to its client. + SNS_PROXIMITY_MSGID_SNS_PROXIMITY_EVENT = 769; + + // No payload + // Purpose: Send this message to force a recalibration + MOT_PROXIMITY_MSGID_SNS_PROXIMITY_RECAL_CONFIG = 870; + + // Uses message: mot_proximity_recal_event + // Purpose: This message is sent whenever a recalibration is complete + MOT_PROXIMITY_MSGID_SNS_PROXIMITY_RECAL_EVENT = 871; + + // Force a log dump of registers to debug a prox/als lockup + MOT_PROXIMITY_MSGID_SNS_PROXIMITY_REG_DUMP = 872; + + // To notify adsp that a new client comes from AP side + MOT_PROXIMITY_MSGID_AP_ENABLE_PROX_REQ = 873; + + // Uses message: sns_proximity_event_recurrent + // Purpose: A recurring output data event from the proximity sensor to its client. + SNS_PROXIMITY_MSGID_SNS_PROXIMITY_EVENT_RECURRENT = 1031; +} + +enum sns_proximity_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_PROXIMITY_EVENT_TYPE_FAR = 0; + SNS_PROXIMITY_EVENT_TYPE_NEAR = 1; +} + +// Events types from proximity Sensor +message sns_proximity_event +{ + // Proximity NEAR/FAR output event + required sns_proximity_event_type proximity_event_type = 1 [default = SNS_PROXIMITY_EVENT_TYPE_FAR]; + + // Proimity sensor raw data + required uint32 raw_adc = 2; + + // Proximity sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message sns_proximity_event_recurrent +{ + // Proximity NEAR/FAR output event + required sns_proximity_event_type proximity_event_type = 1 [default = SNS_PROXIMITY_EVENT_TYPE_FAR]; + + // Proimity sensor raw data + required uint32 raw_adc = 2; + + // Proximity sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +enum mot_proximity_recal_cause { + option (nanopb_enumopt).long_names = false; + + MOT_PROXIMITY_RECAL_CAUSE_COMMANDED = 0; + MOT_PROXIMITY_RECAL_CAUSE_STARTUP = 1; + MOT_PROXIMITY_RECAL_CAUSE_PDATA0 = 2; +} + +//Event for proximity sensor recalibration +message mot_proximity_recal_event +{ + //The reason the prox sensor was recalibrated + required mot_proximity_recal_cause proximity_recal_cause = 1 [default = MOT_PROXIMITY_RECAL_CAUSE_PDATA0]; + + //The new value for PDATA + required uint32 pdata = 2; + + //The new value for offset + required int32 offset = 3; + + //The new value for low threshold + required uint32 threshold_low = 4; + + //The new value for high threshold + required uint32 threshold_high = 5; +} + +// Handling stream events: +// 1. The Proximity Sensor publishes object proximity data stream events +// using sns_proximity_event message. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. The Proximity Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is a change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + +// Handling self-test requests: +// 1. The Proximity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Proximity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for Proximity Sensor calibrates +// the sensor to detect an object (including light and dark colored) +// at 5 cm distance from the physical sensor. +// 3. The Proximity Sensor could implement other test types. + +// Handling test events: +// 1. The Proximity Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_psmd.proto b/proprietary/vendor/etc/sensors/proto/sns_psmd.proto new file mode 100644 index 0000000..b926657 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_psmd.proto @@ -0,0 +1,59 @@ +// @file sns_psmd.proto +// +// Defines the API for Persistent Stationary/Motion Detection Sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A persistent stationary/motion sensor reports once +// - The device is moving/not still +// - The device is detected to be still/stationary +// The period of time to monitor for motion and stationarity should be greater +// than 5 seconds, and less than 10 seconds. After reporting, conceptually +// the algorithm's state is reset, and detection begins again. +// +// Motion here refers to any mechanism in which the device is causes to be +// moved in its inertial frame. eg: Picking up the device and walking with it +// to a nearby room may trigger motion whereas keeping the device on a table +// on a smooth train moving at constant velocity may not trigger motion. +// +// Stationarity here refers to absolute stationarity. eg: device on desk. +// +// ## Persistent Stationary/Motion Detect sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "psmd" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Message IDs for Persistent Stationary/Motion Sensor +enum sns_psmd_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Configuration Request + SNS_PSMD_MSGID_SNS_PSMD_CONFIG = 512; + + // Empty Event + // Indicates that the requested state has been detected + SNS_PSMD_MSGID_SNS_PSMD_EVENT = 768; +} + +// Detected states supported by the PSM Detector +enum sns_psmd_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_PSMD_TYPE_STATIONARY = 0; + SNS_PSMD_TYPE_MOTION = 1; +} + +// Configuration Message +// Used to specify the PSMD configuration +message sns_psmd_config +{ + // Which detector type to enable + required sns_psmd_type type = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_registry.proto b/proprietary/vendor/etc/sensors/proto/sns_registry.proto new file mode 100644 index 0000000..79acf7d --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_registry.proto @@ -0,0 +1,86 @@ +// @file sns_registry.proto +// +// Sensors Registry message definitions for internal and external clients +// +// Copyright (c) 2017,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Registry Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "registry" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_SINGLE_OUTPUT + +// Registry Sensor message IDs: +enum sns_registry_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_REGISTRY_MSGID_SNS_REGISTRY_READ_REQ = 512; + SNS_REGISTRY_MSGID_SNS_REGISTRY_WRITE_REQ = 513; + // The following event was mistakenly given an invalid message ID + SNS_REGISTRY_MSGID_SNS_REGISTRY_READ_EVENT = 514; + SNS_REGISTRY_MSGID_SNS_REGISTRY_WRITE_EVENT = 768; +} + +message sns_registry_data +{ + message item + { + option (nanopb_msgopt).no_unions = true; + + // Item name (i.e. Only item-specific name, sans group name) + required string name = 1; + optional fixed32 version = 2; + + oneof data + { + sns_registry_data subgroup = 10; + string str = 11; + float flt = 12; + sfixed64 sint = 13; + } + } + repeated item items = 3; +} + +// All read requests will be replied with a read event +message sns_registry_read_req +{ + // Full name of the item or group to be read + required string name = 1; +} + +message sns_registry_read_event +{ + // Full name of the group which was read + required string name = 1; + + // If the requested registry group was not found, data is empty + required sns_registry_data data = 2; +} + +// All write requests will be replied with a write event +message sns_registry_write_req +{ + // Full name of the group to be written + required string name = 1; + + required sns_registry_data data = 2; +} + +// Registry write status +enum sns_registry_write_status +{ + option (nanopb_enumopt).long_names = false; + + // The registry write was successful, and the data was stored on the FS + SNS_REGISTRY_WRITE_STATUS_SUCCESS = 0; + // An unspecified error has occurred; data may be lost + SNS_REGISTRY_WRITE_STATUS_ERROR_OTHER = 1; +} + +message sns_registry_write_event +{ + required sns_registry_write_status status = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_resampler.proto b/proprietary/vendor/etc/sensors/proto/sns_resampler.proto new file mode 100644 index 0000000..cd69bd9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_resampler.proto @@ -0,0 +1,90 @@ +// @file sns_resampler.proto +// +// Defines standard message types for the Resampler +// +// Copyright (c) 2016-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; +import "sns_std_event_gated_sensor.proto"; + +// Resampler Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "resampler" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_STREAMING + +// Sensor output event: +// Resampler use sns_std_sensor_event for it's output event + +enum sns_resampler_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_RESAMPLER_MSGID_SNS_RESAMPLER_CONFIG = 512; + SNS_RESAMPLER_MSGID_SNS_RESAMPLER_CONFIG_EVENT = 776; +} + +// Type of requested resampled rate +enum sns_resampler_rate +{ + option (nanopb_enumopt).long_names = false; + + // Requested resampled rate is fixed + SNS_RESAMPLER_RATE_FIXED = 0; + + // Requested resampled rate is the minimum required + SNS_RESAMPLER_RATE_MINIMUM = 1; +} + +// Resampler output quality +enum sns_resampler_quality +{ + option (nanopb_enumopt).long_names = false; + + // Resampler output is the same as input sensor data + SNS_RESAMPLER_QUALITY_CURRENT_SAMPLE = 0; + + // Resampler output is filtered down from input sensor data + SNS_RESAMPLER_QUALITY_FILTERED = 1; + + // Resampler output is interpolated and filtered down from input sensor data + SNS_RESAMPLER_QUALITY_INTERPOLATED_FILTERED = 2; + + // Resampler output is interpolated down from input sensor data + SNS_RESAMPLER_QUALITY_INTERPOLATED = 3; +} + +// Configuration Message +// Used to either request for a new configuration of the Resampler Sensor or +// alter an already existing configuration +message sns_resampler_config +{ + // UID of the Sensor to be resampled + required sns_std_suid sensor_uid = 1; + + // The requested resampled rate in Hz + required float resampled_rate = 2; + + // The requested rate type as defined in sns_resampler_rate + required sns_resampler_rate rate_type = 3; + + // Set to true to enable filtering, else false + required bool filter = 4; + + // Set to true if sensor to be resampled is event gated + optional bool event_gated = 5; + + // Number of axes of the sensor data + optional uint32 axis_cnt = 6; +} + +// Config event to inform client sample quality +// of all subsequent sns_std_sensor_event from resampler +message sns_resampler_config_event +{ + // Quality of the resampled sensor data as defined in + // sns_resampler_quality + required sns_resampler_quality quality = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_rgb.proto b/proprietary/vendor/etc/sensors/proto/sns_rgb.proto new file mode 100644 index 0000000..63a63ab --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_rgb.proto @@ -0,0 +1,78 @@ +// @file sns_rgb.proto +// +// Defines the API for RGB Sensors. +// All RGB Sensor drivers are required to comply with this API. +// Any new functionality for RGB Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The RGB Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "rgb". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute values in µW/cm2/LSB unit. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in µW/cm2 unit. +// 4. See sns_std_sensor.proto for other attributes. + + +// Handling stream requests: +// 1. The RGB Sensor supports both streaming and on-change +// modes and the operating mode is configured in the Registry. +// 2. The streaming RGB Sensor handles the sns_std_sensor_config +// request for all stream enable/update requests. +// 3. The on-change RGB Sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all stream enable/update requests. +// 4. In on-change mode the Sensor uses interrupt operation and reports +// samples for only significant change in R/G/B/clear channel irradiance. +// Example: +/- 10% change. + +// Handling stream events: +// 1. The RGB Sensor publishes color data in ambient light using the +// sns_std_sensor_event message. +// 2. Each stream event contains six output data fields where data is +// factory calibrated and ordered as: +// data[0] = Red channel irradiance in µW/cm2 +// data[1] = Green channel irradiance in µW/cm2 +// data[2] = Blue channel irradiance in µW/cm2 +// data[3] = Clear channel irradiance in µW/cm2 +// data[4] = Color Temperature in Kelvin +// data[5] = raw clear channel ADC value +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The RGB Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The RGB Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The RGB Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The RGB Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for RGB Sensor calibrates +// the sensor such that it's output is comparable to a standard Chromemeter +// output in any lighting condition. +// 3. The RGB Sensor could implement other test types. + +// Handling test events: +// 1. The RGB Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_rmd.proto b/proprietary/vendor/etc/sensors/proto/sns_rmd.proto new file mode 100644 index 0000000..052aeee --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_rmd.proto @@ -0,0 +1,51 @@ + +// @file sns_rmd.proto +// +// Defines message types for the Absolute Motion Detector (RMD) Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// RMD calculates motion and stationary states. RMD will initially start in an +// unknown state, and later transition to motion or stationary. + +// RMD Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "rmd" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for RMD Sensor +enum sns_rmd_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_RMD_MSGID_SNS_RMD_EVENT = 772; +} + +enum sns_rmd_event_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_RMD_EVENT_TYPE_UNKNOWN = 0; + SNS_RMD_EVENT_TYPE_STATIONARY = 1; + SNS_RMD_EVENT_TYPE_MOTION = 2; +} + +message sns_rmd_event +{ + // RMD motion state + required sns_rmd_event_type state = 1 [default = SNS_RMD_EVENT_TYPE_UNKNOWN]; +} + +// Stream events: +// +// The sns_rmd_event message is used to publish updated state +// +// RMD does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_rotv.proto b/proprietary/vendor/etc/sensors/proto/sns_rotv.proto new file mode 100644 index 0000000..abe0ff8 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_rotv.proto @@ -0,0 +1,53 @@ +// @file sns_rotv.proto +// +// Defines the API for Rotation Vector sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A ROTV sensor reports the orientation of the device relative to the +// East-North-Up coordinates frame. It is obtained by integration of +// accelerometer, gyroscope, and magnetometer readings. +// +// ## ROTV sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "rotv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the ROTV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the ROTV sensor will be populated in sns_std_sensor_event +// +// The East-North-Up coordinate system is defined as a direct orthonormal +// basis where: +// - X points east and is tangential to the ground. +// - Y points north and is tangential to the ground. +// - Z points towards the sky and is perpendicular to the ground. +// +// The orientation is represented by the rotation necessary to align +// the East-North-Up coordinates with the device's coordinates. That is, +// applying the rotation to the world frame (X,Y,Z) would align them with +// the device coordinates (x,y,z). +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference device orientation to the current +// device orientation. The rotation is encoded as the four unitless x, y, z, w +// components of a unit quaternion: +// sns_std_sensor_event::data[0] = rot_axis.x*sin(theta/2) +// sns_std_sensor_event::data[1] = rot_axis.y*sin(theta/2) +// sns_std_sensor_event::data[2] = rot_axis.z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_sar.proto b/proprietary/vendor/etc/sensors/proto/sns_sar.proto new file mode 100644 index 0000000..c832b4c --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_sar.proto @@ -0,0 +1,117 @@ +// @file sns_sar.proto +// +// Defines the API for Specific Absorption Rate (SAR) Sensors. +// SAR sensors typically detect human object proximity using change in capacitance +// levels of copper touch pads/buttons. +// All SAR Sensor drivers are required to comply with this API. +// Any new functionality for SAR Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2018,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The SAR Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "sar". +// Each SAR sensor (example individual capacitive button) shall be published +// as an independent sensor with a unique Sensor UID. +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute is not applicable since this +// is an event sensor. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in cm unit (proximity distance). +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream and on-change requests: +// 1. The SAR sensor can support both streaming and on-change +// modes, and the operating mode is configured in the Registry. +// 2. In streaming mode, the SAR sensor handles the sns_std_sensor_config +// client requests, for all stream enable/update request types. +// 3. In on-change mode, the SAR sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG client requests, +// for all on-change enable/update request types. +// In on-change mode, the SAR sensor reports samples only for +// NEAR/FAR transitions triggered by the detection of an object +// (typically human) in proximity to the SAR sensor. +// Also for this mode, the SAR sensor publishes an +// initial data event for each new, on-change client request. + +// Message IDs for SAR Sensor +enum sns_sar_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_sar_event + // Purpose: A non-recurrent output data event from the SAR sensor to its client. + SNS_SAR_MSGID_SNS_SAR_EVENT = 769; + + // Uses message: sns_sar_event_recurrent + // Purpose: A recurring output data event from the SAR sensor to its client. + SNS_SAR_MSGID_SNS_SAR_EVENT_RECURRENT = 1031; +} + +enum sns_sar_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_SAR_EVENT_TYPE_FAR = 0; + SNS_SAR_EVENT_TYPE_NEAR = 1; +} + +// Events types from SAR Sensor +message sns_sar_event +{ + // SAR NEAR/FAR output event + required sns_sar_event_type sar_event_type = 1 [default = SNS_SAR_EVENT_TYPE_FAR]; + + // SAR sensor raw data. + // Format of this data is driver specific. + optional bytes additional_sar_data = 2; + + // SAR sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message sns_sar_event_recurrent +{ + // SAR NEAR/FAR output event + required sns_sar_event_type sar_event_type = 1 [default = SNS_SAR_EVENT_TYPE_FAR]; + + // SAR sensor raw data. + // Format of this data is driver specific. + optional bytes additional_sar_data = 2; + + // SAR sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Handling stream events: +// 1. The SAR Sensor publishes human object proximity data events using sns_sar_event message. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. The SAR Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + +// Handling self-test requests: +// 1. The SAR Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The SAR Sensor may implement SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The SAR Sensor could implement other test types. + +// Handling test events: +// 1. The SAR Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto b/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto new file mode 100644 index 0000000..e614211 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto @@ -0,0 +1,66 @@ +// @file sns_sensor_temperature.proto +// +// Defines the API for physical Sensor Temperature Sensors. +// All Sensor Temperature Sensor drivers are required to comply with this API. +// Any new functionality for Sensor Temperature Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Sensor Temperature Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "sensor_temperature". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees Celsius/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees Celsius unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Sensor Temperature Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Sensor Temperature +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Sensor Temperature Sensor publishes physical sensor temperature data +// stream events using the sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = physical Sensor Temperature data in degrees Celsius +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Sensor Temperature Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Sensor Temperature Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + + +// Handling self-test requests: +// 1. The Sensor Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Sensor Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Sensor Temperature Sensor could implement other test types. + +// Handling test events: +// 1. The Sensor Temperature Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto b/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto new file mode 100644 index 0000000..d055d99 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto @@ -0,0 +1,32 @@ +// @file sns_sig_motion.proto +// +// Defines the API for Significant Motion Detection Sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A significant motion sensor reports once if "significant motion" +// is detected. +// +// ## Significant Motion sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "sig_motion" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_SINGLE_OUTPUT +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: SNS_SIG_MOTION_MSGID_SNS_SIG_MOTION_EVENT +// Reported upon new detection of significant motion. + +// Message IDs for Significant Motion Detect Sensor +enum sns_sig_motion_msgid { + option (nanopb_enumopt).long_names = false; + + // Empty Message + SNS_SIG_MOTION_MSGID_SNS_SIG_MOTION_EVENT = 772; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_std.proto b/proprietary/vendor/etc/sensors/proto/sns_std.proto new file mode 100644 index 0000000..b7a0630 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std.proto @@ -0,0 +1,145 @@ +// @file sns_std.proto +// +// Defines standard messages used across multiple Sensor API definitions +// +// Copyright (c) 2016-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import public "sns_std_type.proto"; + +// Framework-defined message IDs: +enum sns_std_msgid { + option (nanopb_enumopt).long_names = false; + + // Query a Sensor for all attributes + // @event sns_std_error_event + SNS_STD_MSGID_SNS_STD_ATTR_REQ = 1; + + // Flush a Sensor. + // When a sensor receives a flush request it publishes any unpublished + // samples. The sensor always publishes a SNS_STD_MSGID_SNS_STD_FLUSH_EVENT + // event to indicate completion of a flush request. + // All Sensors handle this flush request message. See special case handling below + // Empty Message + // @event sns_pb_flush_event + SNS_STD_MSGID_SNS_STD_FLUSH_REQ = 2; + + // NOTE: 10 - 20 Are reserved for Client Manager + // NOTE: 120-127 Are reserved + + // All published attributes for a Sensor + SNS_STD_MSGID_SNS_STD_ATTR_EVENT = 128; + + // Indicates no further events will be generated in response to a flush req. + // Empty Message + SNS_STD_MSGID_SNS_STD_FLUSH_EVENT = 129; + + // Indicates an error has occurred + SNS_STD_MSGID_SNS_STD_ERROR_EVENT = 130; + + // NOTE: 250-255 Are reserved +} +// Special case handling for flush request +// 1. No prior instance has been created, and a flush request is received, i.e. flush request is sent before an enable req +// Unexpected sequence, driver can ignore the flush request, and set_client_request returns NULL +// 2. When enable request is sent and while that is still ongoing ( phy cfg event not published yet) and a flush request is received, expected sequence below: +// a) sensor driver gets sns_std_sensor_config +// b) sensor driver gets sns_std_flush_req +// c) sensor driver sends sns_std_sensor_physical_config_event +// d) sensor driver sends sns_std_flush_event +// 3. When a previous flush request is still ongoing and another flush request comes +// a) sensor driver receives sns_std_flush_req +// b) sensor driver receives another sns_std_flush_req while first flush request is being handled, but no flush event is sent yet +// c) sensor driver can ignore the 2nd flush request +// d) sensor driver finishes processing the first flush request and sends sns_std_flush_event +// #1 and # 3 applies to algorithm as well. + + +// Base message payload, from which all other Request payloads must extend +// The message will be delivered decoded within the Sensor API +message sns_std_request { + message batch_spec { + // Logically a timer will be registered for this many microseconds. + // All events generated since the last timer expiration will be saved + // until the next timer has fired. This period is interpreted as a maximum + // period specified by the client; events may be delivered to client at a + // faster rate (smaller batch period). + // A batch period of 0 indicates that no batching shall occur. + required uint32 batch_period = 1; + + // Sensor supporting Data Acquisition Engine shall support flush_period. + // Sensor shall not drop data that is more recent than flush_period. + // Sensor may drop data that is older than the flush_period. + // Effective flush period may be smaller due to system constraints, + // or larger in the case of a concurrent client with a larger value. + // flush_period, if set, should be greater than or equal to batch_period. + // flush_period value defaults to UINT32_MAX; units in microseconds. + // If batch_period > 0 and flush period not specified, + // then flush_period = batch_period. + optional uint32 flush_period = 2; + + // If flush_only = true, the sensor should only send data to the client + // on receiving a flush request or if the sensor cannot accumulate flush + // period worth of data. + optional bool flush_only = 3 [default = false]; + + // If max_batch = true for all requests, the sensor should operate at + // maximum batching capacity. If a request has both max_batch = true + // and flush_only = true, flush_only takes precedence. + optional bool max_batch = 4 [default = false]; + } + // Batching is disabled by default + optional batch_spec batching = 1; + + // Dynamic length payload, containing the actual data/configuration request + // This payload will need to be decoded separately, using the Sensor-specific + // header file. If the request does not contain any message body then this + // field is not present. + optional bytes payload = 2; + + // Set to true if a client intends to be a passive client. Else it is an + // active client request. Absence of this field shall be treated as an active + // request. + // If all requests to the sensor are passive then it shall be in off + // state and stop streaming. + // If the sensor has at least one active request then it shall be enabled + // and configured according to all active and passive requests. + // When all active clients are flush_only then passive clients are also treated + // as flush_only. + // When all active clients are event gated then passive clients are also treated + // as event gated. + // delivery_type field in passive requests shall be configured as + // SNS_CLIENT_DELIVERY_NO_WAKEUP. + // Actively enabling one sensor shall not lead to enabling of another + // sensor having only passive requests. For example: enabling gyro shall not + // lead to enabling of sensor_temperature, and vice versa. + optional bool is_passive = 3 [default = false]; + +} + +// Query a Sensor for its list of attributes +message sns_std_attr_req { + // Register for updates when the attributes of a Sensor change + // This option is not presently supported + optional bool register_updates = 2; +} + +// Contains all Sensor attributes; sent in response to an sns_std_attr_req, +// or upon an attribute change to a registered Sensor +message sns_std_attr_event { + repeated sns_std_attr attributes = 1; +} + +// An Error Event generated by a Sensor/Instance or the Framework +message sns_std_error_event { + // SNS_STD_ERROR_NOT_AVAILABLE - Transitory error in the Sensor; some data + // may have been lost or dropped, but streaming should resume. + // SNS_STD_ERROR_INVALID_STATE - Catastrophic error in the Sensor; do not + // expect any further data. Client may try sending enable-request again. + // SNS_STD_ERROR_NOT_SUPPORTED - Sensor received an unsupported request; or a + // supported request at an unexpected time. Client may not expect any + // further data and may try sending valid request. + required sns_std_error error = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto b/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto new file mode 100644 index 0000000..7e49cb9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto @@ -0,0 +1,45 @@ +// @file sns_std_event_gated_sensor.proto +// +// Defines standard message types for Sensors with output streams that can be +// gated on an event from another Sensor. +// Example: "accel" Sensor can be gated by motion detect event published by +// the "motion_detect" Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +enum sns_std_event_gated_sensor_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Message ID to send a gated request to a Sensor. + // Note that the client is responsible to send separate + // requests to the Sensor that provides the gating event. + SNS_STD_EVENT_GATED_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG = 518; + + // An event gated Sensors uses this event message ID to indicate to it's + // clients that the gated stream is converted to a non-gated stream. + // This typically happens when the gating event occurs. + // Example: When "accel" is gated on "motion_detect" and if the + // motion detect interrupt fires then the "accel" Sensor publishes + // this event to it's clients before the accel data stream starts. + SNS_STD_EVENT_GATED_SENSOR_MSGID_GATED_REQ_CONVERTED_TO_NON_GATED = 772; +} + +// Request and Event messages: +// 1. An enable request to an event gated sensor uses message +// sns_std_sensor_config with message ID +// SNS_STD_EVENT_GATED_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG. +// 2. An event gated sensor publishes an output event to it's clients when +// the gated request is converted to a non-gated request. It uses event +// message ID SNS_STD_EVENT_GATED_SENSOR_MSGID_GATED_REQ_CONVERTED_TO_NON_GATED +// with no message payload. +// 3. An output data event from an event gated sensor uses message +// sns_std_sensor_event. See sns_std_sensor.proto and sensor-specific +// proto file for details. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto b/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto new file mode 100644 index 0000000..771354e --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto @@ -0,0 +1,412 @@ +// @file sns_std_sensor.proto +// +// Defines standard message types for all Sensors. All physical Sensors are +// required to implement this API as is or derive from it. For all other +// Sensors, these messages are highly recommended. That being said, Sensor +// developers may choose to define Sensor-specific message API for any +// new/Sensor-specific functionality. +// +// Copyright (c) 2016-2021 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_std_sensor_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_std_sensor_config + // Purpose: + // 1. A stream request from a client to a sensor. + // 2. A config/ack event from a sensor to the client. + SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG = 513; + + // Does not use any message body. + // Purpose: + // 1. An enable request from a client to an on-change sensor. + // Subsequent request from same client will be treated as NOP + // 2. A config/ack event from an on-change sensor to the client. + // Requirements for on-change sensors are listed in a section below. + SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG = 514; + + // Uses message: sns_std_sensor_physical_config_event + // Purpose: A configuration event from a Physical Sensor (streaming and event) + // to the client. + // Requirements for physical configuration events are listed in a section + // below. + SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_PHYSICAL_CONFIG_EVENT = 768; + + // Uses message: sns_std_sensor_event + // Purpose: A data event from a Sensor. + SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_EVENT = 1025; +} + +// Status for each sensor sample +enum sns_std_sensor_sample_status +{ + option (nanopb_enumopt).long_names = false; + + // Sample is unreliable. + SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE = 0; + + // Sample is low accuracy. + SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_LOW = 1; + + // Sample is medium accuracy. + SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_MEDIUM = 2; + + // Sample is high accuracy. + SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH = 3; +} + +// Attribute IDs available for use by Sensors +// Some are marked as REQUIRED, and must be published by every Sensor. Others +// are OPTIONAL, and may be only necessary for physical Sensors. +// +// Each Sensor may define their own custom attributes, using the form: +// _attr_id. Attribute IDs have the following reserved ranges: +// 0-511 : Held for sns_std_sensor_attr_id +// 512-1023 : Reserved for internal QTI use +// 1024-1535 : Available for use by Sensor developers +enum sns_std_sensor_attr_id +{ + option (nanopb_enumopt).long_names = false; + + // REQUIRED + // String + // Human-readable sensor name + SNS_STD_SENSOR_ATTRID_NAME = 0; + + // REQUIRED + // String + // Human-readable vendor name + SNS_STD_SENSOR_ATTRID_VENDOR = 1; + + // REQUIRED + // String + // Data Type used by this Sensor + SNS_STD_SENSOR_ATTRID_TYPE = 2; + + // REQUIRED + // Boolean + // Whether this Sensor is available for clients + SNS_STD_SENSOR_ATTRID_AVAILABLE = 3; + + // REQUIRED + // Integer 64-bit version number represented as major[31:16].minor[15:8].revision[7:0], [63:32] be 0 + // Example in hexadecimal: major:0x0002 minor:0x00 revision:0x36 #define DRIVER_VERSION 0x00020036 + // Sensor version + SNS_STD_SENSOR_ATTRID_VERSION = 4; + + // REQUIRED + // [String] + // .proto files specifying the incoming request and outgoing event messages + SNS_STD_SENSOR_ATTRID_API = 5; + + // OPTIONAL + // [Float] + // Supported sample rates in Hz + SNS_STD_SENSOR_ATTRID_RATES = 6; + + // OPTIONAL + // [Float] + // Supported resolutions + SNS_STD_SENSOR_ATTRID_RESOLUTIONS = 7; + + // OPTIONAL + // Integer + // Supported FIFO depth in number of samples + SNS_STD_SENSOR_ATTRID_FIFO_SIZE = 8; + + // OPTIONAL + // [Integer] + // Active currents in uA for all sns_attr_op_modes. Length of the array + // of active currents must match the length of the array of operation modes. + SNS_STD_SENSOR_ATTRID_ACTIVE_CURRENT = 9; + + // OPTIONAL + // Integer + // Inactive current in uA + SNS_STD_SENSOR_ATTRID_SLEEP_CURRENT = 10; + + // OPTIONAL + // [{float,float}] + // Supported operating ranges + SNS_STD_SENSOR_ATTRID_RANGES = 11; + + // OPTIONAL + // String + // Operating Modes ("LPM", "HIGH_PERF", "NORMAL", "OFF") + SNS_STD_SENSOR_ATTRID_OP_MODES = 12; + + // OPTIONAL + // Boolean + // Whether the Sensor supports Data Ready Interrupt (DRI) or IBI + // (In Band Interrupt). + SNS_STD_SENSOR_ATTRID_DRI = 13; + + // OPTIONAL + // Boolean + // Whether a Sensor support synchronized streaming. + SNS_STD_SENSOR_ATTRID_STREAM_SYNC = 14; + + // OPTIONAL + // Integer + // Encoded message size of the data event generated most often by the Sensor + SNS_STD_SENSOR_ATTRID_EVENT_SIZE = 15; + + // REQUIRED + // Integer: sns_std_sensor_stream_type + // Streaming Type + SNS_STD_SENSOR_ATTRID_STREAM_TYPE = 16; + + // OPTIONAL + // Boolean + // Whether this Sensor is dynamic (connected/disconnected at runtime) + SNS_STD_SENSOR_ATTRID_DYNAMIC = 17; + + // OPTIONAL + // Integer + // When multiple Sensors of the same hardware exist, this attribute differentiates. + SNS_STD_SENSOR_ATTRID_HW_ID = 18; + + // OPTIONAL + // Integer: sns_std_sensor_rigid_body_type + // The rigid body on which the Sensor is placed. + SNS_STD_SENSOR_ATTRID_RIGID_BODY = 19; + + // OPTIONAL + // float[12] + // Location and orientation of sensor element in the device frame. + SNS_STD_SENSOR_ATTRID_PLACEMENT = 20; + + // OPTIONAL + // Boolean + // Boolean: True for a physical sensor + SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR = 21; + + // OPTIONAL + // [Integer] + // List of supported self-test types from sns_physical_sensor_test_type. + SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR_TESTS = 22; + + // OPTIONAL + // Float + // Sensors chosen resolution in it's engineering units. + SNS_STD_SENSOR_ATTRID_SELECTED_RESOLUTION = 23; + + // OPTIONAL + // float[2] + // Sensors chosen {min, max} range in it's engineering units. + SNS_STD_SENSOR_ATTRID_SELECTED_RANGE = 24; + + // OPTIONAL + // [float] + // List of additional sample rates for low latency clients in Hz. + // These are additional rates for low latency clients extended from list + // of rates published in attribute SNS_STD_SENSOR_ATTRID_RATES. + // This is supported for internal clients only. External clients shall not use this API. + SNS_STD_SENSOR_ATTRID_ADDITIONAL_LOW_LATENCY_RATES = 25; + + // OPTIONAL + // Boolean + // Boolean: True if the sensor supports passive request, False otherwise. + // If this attribute is not supported, then the sensor does not support passive requests. + // Sensors that do not support passive requests, will service all requests as active requests. + SNS_STD_SENSOR_ATTRID_PASSIVE_REQUEST = 26; + + // OPTIONAL + // float + // direct channel supported max sample rate in Hz + SNS_STD_SENSOR_ATTRID_DIRECT_CHANNEL_MAX_SAMPLE_RATE = 27; + + // OPTIONAL + // float + // direct channel supported max report rate in Hz + SNS_STD_SENSOR_ATTRID_DIRECT_CHANNEL_MAX_REPORT_RATE = 28; +} + +// Sensor stream configuration request +// or configuration change message +message sns_std_sensor_config +{ + // Sample rate in Hz. + required float sample_rate = 1; +} + +// Sensor data event +message sns_std_sensor_event +{ + // Output data field for all Sensor. + repeated float data = 1; + + // Event sample status. + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Stream types +enum sns_std_sensor_stream_type +{ + option (nanopb_enumopt).long_names = false; + + // Used for Sensors that report data periodically. + // Example: accel, gyro, mag + SNS_STD_SENSOR_STREAM_TYPE_STREAMING = 0; + + // Used for Sensors that report data only on change in value. + // Example: proximity, hall + SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE = 1; + + // Used for Sensors that have a single data event in reponse to a request. + // Example: SUID, motion detect + SNS_STD_SENSOR_STREAM_TYPE_SINGLE_OUTPUT = 2; +} + +// Rigid body types +enum sns_std_sensor_rigid_body_type +{ + option (nanopb_enumopt).long_names = false; + + // Used for a Sensor mounted on the same rigid body as the display. + SNS_STD_SENSOR_RIGID_BODY_TYPE_DISPLAY = 0; + + // Used for a Sensor mounted on the same rigid body as a keyboard. + SNS_STD_SENSOR_RIGID_BODY_TYPE_KEYBOARD = 1; + + // Used for a Sensor that is mounted on an external device. + SNS_STD_SENSOR_RIGID_BODY_TYPE_EXTERNAL = 2; +} + +// Sensor stream configuration event +message sns_std_sensor_config_event +{ + // Current sample rate in Hz + required float sample_rate = 1; +} + +// Physical sensor stream configuration. This message reflects the current +// configuration of the physical sensor. +message sns_std_sensor_physical_config_event +{ + // Current sample rate in Hz for streaming sensors only, 0 if sensor is disabled + // ( ex: when event gated or in passive mode and not streaming ) + // Note: if stream will be synchronized via S4S or I3C, this is the sample + // rate after synchronization is complete. + optional float sample_rate = 1; + + // Current hardware water mark setting. 1 if FIFO not in use. + optional uint32 water_mark = 2; + + // Sensor sample value min and max range + repeated float range = 3 [(nanopb).max_count = 2]; + + // Sensor sample value Resolution + optional float resolution = 4; + + // Sensor operation mode + // If all requests to the sensor are passive then it shall use + // operating_mode = "OFF" + optional string operation_mode = 5; + + // Sensor active current in uA + optional uint32 active_current = 6; + + // Sensor streaming is synchronized via methods like S4S and/or I3C. + // Note: if the stream is not yet synchronized, this field should be + // false, and an additional config event sent with stream_is_synchronous + // set to true once the clocks have been synchronized. + optional bool stream_is_synchronous = 7; + + // Sensor has enabled Data Ready Interrupt (DRI) or In Band Interrupt (IBI) + optional bool dri_enabled = 8; + + // Current DAE water mark setting. 0 if non-DAE sensor. + optional uint32 DAE_watermark = 9; + + // The sync anchor is only valid for synchronized sensors. + // If used, "stream_is_synchronous" should eventually be set to true when the clocks are synchronized. + // It is a timestamp of a future (or past) sns_std_sensor_event. + // This may be used by clients to determine the synchronized timeline before it is synchronized. + optional uint64 sync_ts_anchor = 10; +} + +// Attribute requirements: +// The Physical Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_AVAILABLE attribute value (bool) as true when it's dependencies +// are met and the hardware is present and responsive. +// 2. SNS_STD_SENSOR_ATTRID_NAME attribute value (string) as the name of the sensor model. +// 3. SNS_STD_SENSOR_ATTRID_VENDOR attribute value (string) as the name of the sensor vendor. +// 4. SNS_STD_SENSOR_ATTRID_VERSION attribute value (decimal) as the version of the driver. +// 5. SNS_STD_SENSOR_ATTRID_RATES attribute as a float array of supported sample rates in Hz +// for streaming sensors. On-change sensors publish the highest rate of value change. +// 6. SNS_STD_SENSOR_ATTRID_FIFO_SIZE attribute value (decimal) as the maximum FIFO depth in +// number of sensor samples available to it when enabled standalone. +// The value can be zero if FIFO is not supported. +// 7. SNS_STD_SENSOR_ATTRID_ACTIVE_CURRENT attribute as an integer array representing active +// currents in uA corresponding to the sns_attr_op_modes attribute. +// 8. SNS_STD_SENSOR_ATTRID_SLEEP_CURRENT attribute value (float) as the current in uA when +// the sensor is in power down mode. +// 9. SNS_STD_SENSOR_ATTRID_OP_MODES attribute value as an array of string values +// representing different hardware operating modes. +// 10. SNS_STD_SENSOR_ATTRID_DRI attribute value (bool) as true when it supports +// interrupt based streaming else false when polling. +// The source of data ready interrupt (DRI) could be completion of measurement +// cycle, FIFO water mark (if sns_attr_fifo_size value is greater than 0), +// threshold, etc. +// If the sensor is capable of streaming in both polling and DRI modes then +// it publishes separate Sensors for each mode such that the one with DRI +// publishes SNS_STD_SENSOR_ATTRID_DRI value as true and the one with polling +// publishes SNS_STD_SENSOR_ATTRID_DRI as false. +// 11. SNS_STD_SENSOR_ATTRID_STREAM_SYNC attribute value (bool) as true when it +// it supports a synchronous streaming mechanism like S4S and/or I3C. +// 12. SNS_STD_SENSOR_ATTRID_EVENT_SIZE attribute value (decimal) as number of bytes in the +// output data event for the Sensor. +// 13. SNS_STD_SENSOR_ATTRID_STREAM_TYPE attribute value (sns_std_sensor_stream_type) as the +// supported stream type. +// 14. SNS_STD_SENSOR_ATTRID_DYNAMIC attribute value (bool) to indicate whether the sensor +// can be added at runtime. +// 15. SNS_STD_SENSOR_ATTRID_HW_ID attribute value (string) to uniquely identify multiple +// sensor hardware of the same model on a platform. +// 16. SNS_STD_SENSOR_ATTRID_RIGID_BODY attribute value (sns_std_sensor_rigid_body_type) as the rigid +// body on which the sensor is mounted. +// 17. SNS_STD_SENSOR_ATTRID_PLACEMENT attribute value as the location and orientation of +// the sensor hardware. +// 18. SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR attribute value (bool) to indicate if the sensor is +// a physical sensor +// 19. SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR_TESTS attribute value as array of supported +// sns_physical_sensor_test_type test types. +// 20. SNS_STD_SENSOR_ATTRID_SELECTED_RESOLUTION attribute value chosen from the +// SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute array. +// 21. SNS_STD_SENSOR_ATTRID_SELECTED_RANGE attribute value chosen from the +// SNS_STD_SENSOR_ATTRID_RANGES array. +// 22. SNS_STD_SENSOR_ATTRID_ADDITIONAL_LOW_LATENCY_RATES attribute as a float array of supported +// sample rates in Hz additional to rates in SNS_STD_SENSOR_ATTRID_RATES, this is only for low +// latency clients like direct report mode. +// See sensor specific .proto files for sensor specific attribute information. + +// Recommendation for device drivers to select configuration: +// 1. Choose fastest sample_rate among all client requests. +// 2. Choose fastest batch rate (using batch_period) among all client requests. For streaming clients, +// treat batch rate equal to requested sample rate for that request. +// 3. If HW FIFO is supported then: +// a. If all requests are max_batch then the driver configures highest FIFO watermark. +// If DAE is supported, the DAE watermark should be INT_MAX. +// b. Else FIFO watermark is determined based on sample_rate from #1 and batch rate from #2. + +// Requirements for on-change sensors: +// 1. Timestamp in data events. When a second (or subsequent) client request +// is processed, by a given sensor, an initial data event must be generated. +// The timestamp in this event must be equal to the timestamp of the most +// recent state transition. The timestamp of the last occurring state +// transition can be latched (e.g. in a state structure), per on-change +// sensor SUID. + +// Requirements for physical configuration events: +// 1. Timestamp in physical configuration events. When a second (or subsequent) +// client request is processed, by a given sensor, a physical configuration +// event must be generated. The timestamp, in the physical configuration +// event, must be equal to the timestamp of the most recent physical +// configuration change. The timestamp of the last occurring physical +// configuration change can be latched (e.g. in a state structure). diff --git a/proprietary/vendor/etc/sensors/proto/sns_std_type.proto b/proprietary/vendor/etc/sensors/proto/sns_std_type.proto new file mode 100644 index 0000000..0438235 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std_type.proto @@ -0,0 +1,79 @@ +// @file sns_std_type.proto +// +// Defines standard data types used across multiple Sensor API definitions +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Represents an unique Sensor +message sns_std_suid { + required fixed64 suid_low = 1; + required fixed64 suid_high = 2; +} + +// Represents an attribute value +// Attribute values may be a single value, array of simple values, or +// an array of complex tuples +message sns_std_attr_value { + // "data" submessage required to support recursion + message data { + option (nanopb_msgopt).no_unions = true; + oneof value { + sns_std_attr_value subtype = 1; + string str = 2; + float flt = 3; + sfixed64 sint = 4; + bool boolean = 5; + } + } + repeated data values = 1; +} + +// An individual attribute from a Sensor +message sns_std_attr { + // A standard list of attributes is available within sns_std_sensor_attr_id + // Additional attributes may be defined by sensors, using the format: + // _ATTRID_ (e.g. SNS_ACCEL_ATTRID_ODR) + // Additional IDs must fall within the range of 1024-2047 + required int32 attr_id = 1; + // Attribute value + required sns_std_attr_value value = 2; +} + +// Error codes +enum sns_std_error { + option (nanopb_enumopt).long_names = false; + + /* No error occurred; success. */ + SNS_STD_ERROR_NO_ERROR = 0; + /* Unfixable or internal error occurred. */ + SNS_STD_ERROR_FAILED = 1; + /* This API is not supported or is not implemented. */ + SNS_STD_ERROR_NOT_SUPPORTED = 2; + /* Message contains invalid data type, + * e.g., unknown message ID, unknown registry group, or unexpected + * Sensor UID. */ + SNS_STD_ERROR_INVALID_TYPE = 3; + /* Catastrophic error; expect no further data */ + SNS_STD_ERROR_INVALID_STATE = 4; + /* One or more argument values were outside of the valid range */ + SNS_STD_ERROR_INVALID_VALUE = 5; + /* This operation is not available at this time */ + SNS_STD_ERROR_NOT_AVAILABLE = 6; + /* This action was rejected due to the current policy settings */ + SNS_STD_ERROR_POLICY = 7; +} + +//The enum contains all the processor types supported. +enum sns_std_client_processor { + option (nanopb_enumopt).long_names = false; + + SNS_STD_CLIENT_PROCESSOR_SSC = 0; + SNS_STD_CLIENT_PROCESSOR_APSS = 1; + SNS_STD_CLIENT_PROCESSOR_ADSP = 2; + SNS_STD_CLIENT_PROCESSOR_MDSP = 3; + SNS_STD_CLIENT_PROCESSOR_CDSP = 4; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto b/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto new file mode 100644 index 0000000..e5fa164 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto @@ -0,0 +1,38 @@ +// @file sns_step_detect.proto +// +// Defines message types for the Step Detect Sensor. +// +// Copyright (c) 2019 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Step Detect Sensor detects steps taken by the user +// +// The Step Detect event is generated when the user takes a step. +// All clients to Step Detect get the same step detect event. +// The timestamp of the event indicates the time of the latest detected step. + +// Step Detect Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "step_detect" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Step Detect Sensor +enum sns_step_detect_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_STEP_DETECT_MSGID_SNS_STEP_DETECT_EVENT = 1029; +} + +// Stream events: +// +// An event with SNS_STEP_DETECT_MSGID_SNS_STEP_DETECT_EVENT as the message id +// is used to publish a step detect event +// +// Step detect sensor does not publish configuration events. \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/proto/sns_suid.proto b/proprietary/vendor/etc/sensors/proto/sns_suid.proto new file mode 100644 index 0000000..b83f431 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_suid.proto @@ -0,0 +1,54 @@ +// @file sns_suid.proto +// +// Defines standard message types to request and receive SUIDs. +// +// Copyright (c) 2016-2017,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; + +enum sns_suid_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_SUID_MSGID_SNS_SUID_REQ = 512; + SNS_SUID_MSGID_SNS_SUID_EVENT = 768; +} + +// Well-known SUID for use by all clients. +// All other Sensor UIDs must be discovered dynamically +message sns_suid_sensor { + required fixed64 suid_low = 1 [default = 0xabababababababab]; + required fixed64 suid_high = 2 [default = 0xabababababababab]; +} + +// Request sent by internal or external client for the list of SUIDs that +// advertise the specified Data Type +// Note: Additional requests arriving on the same connection, will not result +// in a replaced request, but instead the new request will be appended to any +// active registrations. +message sns_suid_req { + required string data_type = 1; + // Register for updates to the list of SUIDs advertising data_type + optional bool register_updates = 2; + + // Each data type may or may not have one sensor configured to be "default" through registry. + // If following field is set to true and : + // * A default for the data type is explicitly configured, + // only the SUID of the default sensor will be sent via the suid event when available. + // * A default for the data type is not explicitly configured, + // the SUID of the first sensor with matching data type will be sent via the suid event. + // If following field is set to false, all sensors with matching data type will be sent, + // as and when they become available. + optional bool default_only = 3 [default = true]; +} + +// Event specifying the list of SUIDs associated with the given Data Type +// Receipt of this event indicates that a change to this list has occurred +// since the previous event. +message sns_suid_event { + // Direct copy of sns_suid_req:data_type + required string data_type = 1; + repeated sns_std_suid suid = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto b/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto new file mode 100644 index 0000000..6e57b2a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto @@ -0,0 +1,62 @@ +// @file sns_thermopile.proto +// +// Defines the API for Thermopile Sensors. +// All Thermopile Sensor drivers are required to comply with this API. +// Any new functionality for Thermopile Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Thermopile Temperature Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "thermopile". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees Celsius/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees Celsius unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Thermopile Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. + +// Handling stream events: +// 1. The Thermopile Sensor publishes data stream events using the +// sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Object temperature in degrees Celsius +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Thermopile Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Thermopile Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Thermopile Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Thermopile Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Thermopile Sensor could implement other test types. + +// Handling test events: +// 1. The Thermopile Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_threshold.proto b/proprietary/vendor/etc/sensors/proto/sns_threshold.proto new file mode 100644 index 0000000..3cf67b9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_threshold.proto @@ -0,0 +1,91 @@ +// @file sns_threshold.proto +// +// Defines standard message types for the Threshold Algorithm +// +// Copyright (c) 2018-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; +import "sns_resampler.proto"; + +// Threshold Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "threshold" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_STREAMING + +// Sensor output event: +// Threshold uses sns_std_sensor_event for it's output event. +// An event is generated by the threshold algorithm only if the threshold is met +// on any of the axis for the sensor. +// Thresholding can be done as value based delta between current value and +// the last generated output. Or thresholding can be done as the delta between +// current value and the last output, as a percentage of the last output. +// Thresholding can also be done based on the current value going beyond a particular +// absolute threshold value. +// When thresholding criteria is met , an event is generated by the algorithm. + +enum sns_threshold_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_THRESHOLD_MSGID_SNS_THRESHOLD_CONFIG = 512; +} + +//Thresholding types +enum sns_threshold_type +{ + option (nanopb_enumopt).long_names = false; + + // Provide thresholding as a delta between current value + // and last reported value, exceeding above the configured threshold. + SNS_THRESHOLD_TYPE_RELATIVE_VALUE = 0; + + // Provide thresholding as a delta between current value + // and last reported value, compared as a percentage of the last reported value, + // where the percentage is the configured threshold. + SNS_THRESHOLD_TYPE_RELATIVE_PERCENT = 1; + + // Provides thresholding of the current value against a fixed configured + // threshold value. + SNS_THRESHOLD_TYPE_ABSOLUTE = 2; + + // Provides thresholding of angle between current and last reported quaternion + // for quaternion sensors, in radians + SNS_THRESHOLD_TYPE_ANGLE = 3; +} + +// Configuration Message +// Used to either request for a new configuration of the threshold Sensor or +// alter an already existing configuration or query the current configuration. +message sns_threshold_config +{ + // UID of the sensor from which data is being requested from. + required sns_std_suid sensor_uid = 1; + + // The threshold value per axis. + // The number of threshold values need to be less than or equal to the number of + // sensor data axes. + // For SNS_THRESHOLD_TYPE_ANGLE, a single threshold_val value representing the + // angle between current and last reported quaternions + repeated float threshold_val = 2; + + // Tells us how to use the thresholding value provided. + required sns_threshold_type threshold_type = 3; + + // The message id to be used to configure the underlying sensor. + // This is used together with the below payload field. + required uint32 payload_cfg_msg_id = 4; + + // Dynamic length payload, containing the actual data/configuration request + // This payload will need to be decoded separately, using the Sensor-specific + // header file. + required bytes payload = 5; +} + +// Config is used to inform the client of the configuration that was set, +// after a configuration is done . +// The config message is sent back to the client +// in the threshold config message. +// All data events are generated as sns_std_sensor_event. diff --git a/proprietary/vendor/etc/sensors/proto/sns_tilt.proto b/proprietary/vendor/etc/sensors/proto/sns_tilt.proto new file mode 100644 index 0000000..faf095a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_tilt.proto @@ -0,0 +1,49 @@ +// @file sns_tilt.proto +// +// Defines message types for the Tilt Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Tilt Sensor looks for a change in angle of a gravity vector from an +// anchor vector. +// +// The initial anchor vector is based on an average of one second of +// accel data after initial activation. +// +// The gravity vector is calculated based on an average of two seconds of +// accel data. +// +// The anchor vector is reset to the current gravity vector each time the +// Tilt event is generated. +// There is only one anchor vector shared amongst all clients. +// +// The Tilt event is generated when the current gravity vector is 35 degrees +// or more from the anchor vector. + +// Tilt Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "tilt" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Tilt Sensor +enum sns_tilt_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_TILT_MSGID_SNS_TILT_EVENT = 774; +} + +// Stream events: +// +// A NULL message with message ID SNS_TILT_MSGID_SNS_TILT_EVENT is used to +// publish tilt event +// +// Tilt does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto b/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto new file mode 100644 index 0000000..ceabc92 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto @@ -0,0 +1,36 @@ +// @file sns_tilt_to_wake.proto +// +// Defines message types for the tilt_to_wake Sensor. +// +// Copyright (c) 2017 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The tilt_to_wake detects substantial phone rotation (gesture) within +// limited period ending in a specific range of the pitch and roll angles. +// It uses proximity sensor to block the tilt event reporting in pocket or purse + +// tilt_to_wake Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "tilt_to_wake" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for tilt_to_wake Sensor +enum sns_tilt_to_wake_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_TILT_TO_WAKE_MSGID_SNS_TILT_TO_WAKE_EVENT = 775; +} + +// Stream events: +// +// A NULL message with message ID SNS_TILT_TO_WAKE_MSGID_SNS_TILT_TO_WAKE_EVENT is used to +// publish tilt_to_wake event +// +// tilt_to_wake does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto b/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto new file mode 100644 index 0000000..3244cc9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto @@ -0,0 +1,72 @@ +// @file sns_ultra_violet.proto +// +// Defines the API for Ultra Violet (UV) Sensors. +// All UV Sensor drivers are required to comply with this API. +// Any new functionality for UV Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The UV Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ultra_violet". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees mW/cm2/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees mW/cm2 unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The UV Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. + +// Handling stream events: +// 1. The UV Sensor publishes UV data in ambient light using the +// sns_std_sensor_event message. +// 2. Each stream event contains following factory calibrated data fields: +// data[0] = Bit mask to determine which outputs are supported: +// bit[0]: 1 if UV-A is supported else 0 +// bit[1]: 1 if UV-B is supported else 0 +// bit[2]: 1 if Total UV is supported else 0 +// bit[3]: 1 if UV index is supported else 0 +// all other bits are 0 +// data[1] = UV-A radiation in mW/cm2 +// data[2] = UV-B radiation in mW/cm2 +// data[3] = Total UV radiation in mW/cm2 +// data[4] = Unitless UV index number +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The UV Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The UV Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The UV Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The UV Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for UV Sensor calibrates +// the sensor such that it's output is comparable to a standard +// UV Meter output in any lighting condition. +// 3. The UV Sensor could implement other test types. + +// Handling test events: +// 1. The UV Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto b/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto new file mode 100644 index 0000000..37482d9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto @@ -0,0 +1,49 @@ +// @file sns_wrist_tilt_gesture.proto +// +// Defines message types for the wrist_tilt_gesture Sensor. +// +// Copyright (c) 2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Tilt Sensor looks for a change in angle of a gravity vector from an +// anchor vector. +// +// The initial anchor vector is based on an average of one second of +// accel data after initial activation. +// +// The gravity vector is calculated based on an average of two seconds of +// accel data. +// +// The anchor vector is reset to the current gravity vector each time the +// Tilt event is generated. +// There is only one anchor vector shared amongst all clients. +// +// The Tilt event is generated when the current gravity vector is 35 degrees +// or more from the anchor vector. + +// Tilt Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "wrist_tilt_gesture" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Wrist Tilt Gesture Sensor +enum sns_wrist_tilt_gesture_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_WRIST_TILT_GESTURE_MSGID_SNS_TILT_EVENT = 774; +} + +// Stream events: +// +// A NULL message with message ID SNS_TILT_MSGID_SNS_TILT_EVENT is used to +// publish tilt event +// +// Tilt does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/tcs3708.proto b/proprietary/vendor/etc/sensors/proto/tcs3708.proto new file mode 100644 index 0000000..a574156 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/tcs3708.proto @@ -0,0 +1,23 @@ +// @file tcs3708.proto +// +// Defines additional pb APIs needed for the tcs3708 under OLED solution +// + +syntax = "proto2"; +import "nanopb.proto"; + +// Message IDs +enum tcs3708_msgid { + option (nanopb_enumopt).long_names = false; + + TCS3708_MSGID_TCS3708_ALS_MASTERCAL_REQUEST = 360; + TCS3708_MSGID_TCS3708_ALS_MASTERCAL_EVENT = 361; +} + +// Message to sensor +message tcs3708_als_mastercal_event +{ + required uint32 chunk_id = 1; + required uint32 again = 2; + repeated float raw_data = 3; +} diff --git a/proprietary/vendor/etc/sensors/sns_reg_config b/proprietary/vendor/etc/sensors/sns_reg_config new file mode 100644 index 0000000..ba15e28 --- /dev/null +++ b/proprietary/vendor/etc/sensors/sns_reg_config @@ -0,0 +1,10 @@ +version=9 +file=hw_platform=/sys/devices/soc0/hw_platform +file=platform_subtype=/sys/devices/soc0/platform_subtype +file=platform_subtype_id=/sys/devices/soc0/platform_subtype_id +file=platform_version=/sys/devices/soc0/platform_version +file=soc_id=/sys/devices/soc0/soc_id +file=revision=/sys/devices/soc0/revision +file=output=/mnt/vendor/persist/sensors/registry/registry +property=persist.vendor.sensors.enable.property=/mnt/vendor/persist/sensors/registry/file1 +property=persist.vendor.sensors.enable.property1=/mnt/vendor/persist/sensors/registry/file2 diff --git a/proprietary/vendor/etc/thermal-engine-bangkk-camera.conf b/proprietary/vendor/etc/thermal-engine-bangkk-camera.conf new file mode 100644 index 0000000..9cb1a35 --- /dev/null +++ b/proprietary/vendor/etc/thermal-engine-bangkk-camera.conf @@ -0,0 +1,190 @@ +[FRONT_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery quiet_therm soc_usr +weights 24 67 9 +offsets 1000 700 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-FRONT-TEMP] +algo_type monitor +sampling 300000 +sensor FRONT_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[BACK_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery msm_therm quiet_therm soc_usr +weights 63 8 39 -10 +offsets -1200 -1200 -1200 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-BACK-TEMP] +algo_type monitor +sampling 300000 +sensor BACK_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[DETECT-STANDBY] +algo_type virtual +trip_sensor quiet_therm +thresholds -18000 +thersholds_clr -20000 +sensors cpu_utilization lcd_brightness_value +weights 15 50 +sampling 1000 +less_than +math 7 + +[OVERRIDE-CHG] +algo_type monitor +sampling 1000 +sensor DETECT-STANDBY +thresholds 1 +thresholds_clr 0 +actions internal_override +action_info 1 + +[FREEZE-CHG] +algo_type monitor +sampling 1000 +descending +sensor DETECT-STANDBY +thresholds 0 +thresholds_clr 1 +actions freeze_rule +action_info 1 + +[Virt-MSM] +algo_type virtual +sensors msm_therm +weights 100 +trip_sensor chg_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[Virt-CHG] +algo_type virtual +sensors chg_therm +weights 100 +trip_sensor msm_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[MON-PDPOWER2] +algo_type monitor +sampling 1000 +sensor battery +thresholds 44500 44600 +thresholds_clr 41000 42600 +actions mmi_chrg_manager battery +action_info 1 2 +override_c 15000 + +[MON-PDPOWER3] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 35000 36000 38200 38700 40000 42000 43000 50000 +thresholds_clr 34000 35000 36000 38200 38700 40000 42000 49000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 10 9 7 6 5 3 2 2 +freezing + +[MON-QCPOWER4] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 39000 41000 44000 46000 48000 50000 +thresholds_clr 37000 39000 42000 44000 46000 48000 +actions battery battery battery battery battery battery +action_info 7 6 5 4 3 1 +freezing + +[MON-PDPOWER5] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 35000 36000 37000 39000 +thresholds_clr 33000 35000 36000 37000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 9 3 2 1 +override_c 15000 + +[MON-PDPOWER6] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 43000 45000 47000 +thresholds_clr 41000 43000 46000 +actions battery battery battery +action_info 3 2 1 +override_c 15000 + +[MON-MSM-CPU0] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 36000 40500 44000 46000 +thresholds_clr 34000 39000 43000 44000 +actions cpu0 cpu0 cpu0 cpu0 +action_info 1708800 1651200 1516800 1113600 +override_b 4000 + +[MON-MSM-CPU6] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 36000 39000 40500 44000 46000 +thresholds_clr 34000 36000 39000 42000 44000 +actions cpu6 cpu6 cpu6 cpu6 cpu6 +action_info 2054400 1900800 1804800 1516800 1228800 +override_b 4000 + +[MONITOR-CAMERA-MSM] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 46000 50000 +thresholds_clr 44000 48000 +actions camera camera +action_info 1 2 + +[MON-MODEM] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 80000 85000 +thresholds_clr 78000 80000 +actions modem_skin modem_skin +action_info 1 2 + +[MODEM-PA-FR] +algo_type monitor +sampling 5000 +sensor xo_therm +thresholds 65000 70000 +thresholds_clr 60000 65000 +actions modem_pa_fr1 modem_pa_fr1 +action_info 1 2 diff --git a/proprietary/vendor/etc/thermal-engine-bangkk-game-normal.conf b/proprietary/vendor/etc/thermal-engine-bangkk-game-normal.conf new file mode 100644 index 0000000..4e2d9cf --- /dev/null +++ b/proprietary/vendor/etc/thermal-engine-bangkk-game-normal.conf @@ -0,0 +1,190 @@ +[FRONT_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery quiet_therm soc_usr +weights 24 67 9 +offsets 1000 700 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-FRONT-TEMP] +algo_type monitor +sampling 300000 +sensor FRONT_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[BACK_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery msm_therm quiet_therm soc_usr +weights 63 8 39 -10 +offsets -1200 -1200 -1200 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-BACK-TEMP] +algo_type monitor +sampling 300000 +sensor BACK_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[DETECT-STANDBY] +algo_type virtual +trip_sensor quiet_therm +thresholds -18000 +thersholds_clr -20000 +sensors cpu_utilization lcd_brightness_value +weights 15 50 +sampling 1000 +less_than +math 7 + +[OVERRIDE-CHG] +algo_type monitor +sampling 1000 +sensor DETECT-STANDBY +thresholds 1 +thresholds_clr 0 +actions internal_override +action_info 1 + +[FREEZE-CHG] +algo_type monitor +sampling 1000 +descending +sensor DETECT-STANDBY +thresholds 0 +thresholds_clr 1 +actions freeze_rule +action_info 1 + +[Virt-MSM] +algo_type virtual +sensors msm_therm +weights 100 +trip_sensor chg_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[Virt-CHG] +algo_type virtual +sensors chg_therm +weights 100 +trip_sensor msm_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[MON-PDPOWER2] +algo_type monitor +sampling 1000 +sensor battery +thresholds 44500 44600 +thresholds_clr 41000 42600 +actions mmi_chrg_manager battery +action_info 1 2 +override_c 15000 + +[MON-PDPOWER3] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 35000 36000 38200 38700 40000 42000 43000 50000 +thresholds_clr 34000 35000 36000 38200 38700 40000 42000 49000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 10 9 7 6 5 3 2 2 +freezing + +[MON-QCPOWER4] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 39000 41000 44000 46000 48000 50000 +thresholds_clr 37000 39000 42000 44000 46000 48000 +actions battery battery battery battery battery battery +action_info 7 6 5 4 3 1 +freezing + +[MON-PDPOWER5] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 35000 36000 37000 39000 +thresholds_clr 33000 35000 36000 37000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 9 3 2 1 +override_c 15000 + +[MON-PDPOWER6] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 43000 45000 51000 +thresholds_clr 41000 43000 49000 +actions battery battery battery +action_info 3 2 1 +override_c 15000 + +[MON-MSM-CPU0] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 36000 40500 44000 46000 +thresholds_clr 34000 39000 43000 44000 +actions cpu0 cpu0 cpu0 cpu0 +action_info 1708800 1651200 1516800 1113600 +override_b 4000 + +[MON-MSM-CPU6] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 36000 39000 40500 44000 46000 +thresholds_clr 34000 36000 39000 42000 44000 +actions cpu6 cpu6 cpu6 cpu6 cpu6 +action_info 2054400 1900800 1804800 1516800 1228800 +override_b 4000 + +[MONITOR-CAMERA-MSM] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 55000 60000 +thresholds_clr 53000 55000 +actions camera camera +action_info 1 2 + +[MON-MODEM] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 80000 85000 +thresholds_clr 78000 80000 +actions modem_skin modem_skin +action_info 1 2 + +[MODEM-PA-FR] +algo_type monitor +sampling 5000 +sensor xo_therm +thresholds 65000 70000 +thresholds_clr 60000 65000 +actions modem_pa_fr1 modem_pa_fr1 +action_info 1 2 diff --git a/proprietary/vendor/etc/thermal-engine-bangkk-game-perf.conf b/proprietary/vendor/etc/thermal-engine-bangkk-game-perf.conf new file mode 100644 index 0000000..b21da98 --- /dev/null +++ b/proprietary/vendor/etc/thermal-engine-bangkk-game-perf.conf @@ -0,0 +1,190 @@ +[FRONT_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery quiet_therm soc_usr +weights 24 67 9 +offsets 1000 700 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-FRONT-TEMP] +algo_type monitor +sampling 300000 +sensor FRONT_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[BACK_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery msm_therm quiet_therm soc_usr +weights 63 8 39 -10 +offsets -1200 -1200 -1200 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-BACK-TEMP] +algo_type monitor +sampling 300000 +sensor BACK_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[DETECT-STANDBY] +algo_type virtual +trip_sensor quiet_therm +thresholds -18000 +thersholds_clr -20000 +sensors cpu_utilization lcd_brightness_value +weights 15 50 +sampling 1000 +less_than +math 7 + +[OVERRIDE-CHG] +algo_type monitor +sampling 1000 +sensor DETECT-STANDBY +thresholds 1 +thresholds_clr 0 +actions internal_override +action_info 1 + +[FREEZE-CHG] +algo_type monitor +sampling 1000 +descending +sensor DETECT-STANDBY +thresholds 0 +thresholds_clr 1 +actions freeze_rule +action_info 1 + +[Virt-MSM] +algo_type virtual +sensors msm_therm +weights 100 +trip_sensor chg_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[Virt-CHG] +algo_type virtual +sensors chg_therm +weights 100 +trip_sensor msm_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[MON-PDPOWER2] +algo_type monitor +sampling 1000 +sensor battery +thresholds 44500 44600 +thresholds_clr 41000 42600 +actions mmi_chrg_manager battery +action_info 1 2 +override_c 15000 + +[MON-PDPOWER3] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 35000 36000 38200 38700 40000 42000 43000 50000 +thresholds_clr 34000 35000 36000 38200 38700 40000 42000 49000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 10 9 7 6 5 3 2 2 +freezing + +[MON-QCPOWER4] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 39000 41000 44000 46000 48000 50000 +thresholds_clr 37000 39000 42000 44000 46000 48000 +actions battery battery battery battery battery battery +action_info 7 6 5 4 3 1 +freezing + +[MON-PDPOWER5] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 35000 36000 37000 39000 +thresholds_clr 33000 35000 36000 37000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 9 3 2 1 +override_c 15000 + +[MON-PDPOWER6] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 43000 45000 51000 +thresholds_clr 41000 43000 49000 +actions battery battery battery +action_info 3 2 1 +override_c 15000 + +[MON-MSM-CPU0] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 40000 42000 44000 46000 +thresholds_clr 38000 40000 42000 44000 +actions cpu0 cpu0 cpu0 cpu0 +action_info 1708800 1651200 1516800 1324800 +override_b 4000 + +[MON-MSM-CPU6] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 40000 42000 44000 46000 47000 +thresholds_clr 38000 40000 42000 44000 46000 +actions cpu6 cpu6 cpu6 cpu6 cpu6 +action_info 2054400 1900800 1804800 1401600 1228800 +override_b 4000 + +[MONITOR-CAMERA-MSM] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 55000 60000 +thresholds_clr 53000 55000 +actions camera camera +action_info 1 2 + +[MON-MODEM] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 80000 85000 +thresholds_clr 78000 80000 +actions modem_skin modem_skin +action_info 1 2 + +[MODEM-PA-FR] +algo_type monitor +sampling 5000 +sensor xo_therm +thresholds 65000 70000 +thresholds_clr 60000 65000 +actions modem_pa_fr1 modem_pa_fr1 +action_info 1 2 diff --git a/proprietary/vendor/etc/thermal-engine-bangkk.conf b/proprietary/vendor/etc/thermal-engine-bangkk.conf new file mode 100644 index 0000000..9c27437 --- /dev/null +++ b/proprietary/vendor/etc/thermal-engine-bangkk.conf @@ -0,0 +1,190 @@ +[FRONT_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery quiet_therm soc_usr +weights 24 67 9 +offsets 1000 700 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-FRONT-TEMP] +algo_type monitor +sampling 300000 +sensor FRONT_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[BACK_TEMP] +algo_type virtual +trip_sensor xo_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery msm_therm quiet_therm soc_usr +weights 63 8 39 -10 +offsets -1200 -1200 -1200 0 +sampling 1000 +math 0 +sys_temp + +[REPORT-BACK-TEMP] +algo_type monitor +sampling 300000 +sensor BACK_TEMP +thresholds 45000 +thresholds_clr 43000 +actions report +action_info 1 + +[DETECT-STANDBY] +algo_type virtual +trip_sensor quiet_therm +thresholds -18000 +thersholds_clr -20000 +sensors cpu_utilization lcd_brightness_value +weights 15 50 +sampling 1000 +less_than +math 7 + +[OVERRIDE-CHG] +algo_type monitor +sampling 1000 +sensor DETECT-STANDBY +thresholds 1 +thresholds_clr 0 +actions internal_override +action_info 1 + +[FREEZE-CHG] +algo_type monitor +sampling 1000 +descending +sensor DETECT-STANDBY +thresholds 0 +thresholds_clr 1 +actions freeze_rule +action_info 1 + +[Virt-MSM] +algo_type virtual +sensors msm_therm +weights 100 +trip_sensor chg_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[Virt-CHG] +algo_type virtual +sensors chg_therm +weights 100 +trip_sensor msm_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 1000 +math 0 + +[MON-PDPOWER2] +algo_type monitor +sampling 1000 +sensor battery +thresholds 44500 44600 +thresholds_clr 41000 42600 +actions mmi_chrg_manager battery +action_info 1 2 +override_c 15000 + +[MON-PDPOWER3] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 35000 36000 38200 38700 40000 42000 43000 50000 +thresholds_clr 34000 35000 36000 38200 38700 40000 42000 49000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 10 9 7 6 5 3 2 2 +freezing + +[MON-QCPOWER4] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 39000 41000 44000 46000 48000 50000 +thresholds_clr 37000 39000 42000 44000 46000 48000 +actions battery battery battery battery battery battery +action_info 7 6 5 4 3 1 +freezing + +[MON-PDPOWER5] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 35000 36000 37000 39000 +thresholds_clr 33000 35000 36000 37000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 9 3 2 1 +override_c 15000 + +[MON-PDPOWER6] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 43000 45000 47000 +thresholds_clr 41000 43000 46000 +actions battery battery battery +action_info 3 2 1 +override_c 15000 + +[MON-MSM-CPU0] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 39000 43000 47000 +thresholds_clr 37000 41000 45000 +actions cpu0 cpu0 cpu0 +action_info 1708800 1651200 1516800 +override_b 4000 + +[MON-MSM-CPU6] +algo_type monitor +sampling 1000 +sensor BACK_TEMP +thresholds 39000 44000 46500 +thresholds_clr 37000 42000 44500 +actions cpu6 cpu6 cpu6 +action_info 1900800 1804800 1651200 +override_b 4000 + +[MONITOR-CAMERA-MSM] +algo_type monitor +sampling 1000 +sensor quiet_therm +thresholds 55000 60000 +thresholds_clr 53000 55000 +actions camera camera +action_info 1 2 + +[MON-MODEM] +algo_type monitor +sampling 1000 +sensor Virt-MSM +thresholds 80000 85000 +thresholds_clr 78000 80000 +actions modem_skin modem_skin +action_info 1 2 + +[MODEM-PA-FR] +algo_type monitor +sampling 5000 +sensor xo_therm +thresholds 65000 70000 +thresholds_clr 60000 65000 +actions modem_pa_fr1 modem_pa_fr1 +action_info 1 2 diff --git a/proprietary/vendor/etc/thermal-engine.conf b/proprietary/vendor/etc/thermal-engine.conf new file mode 100644 index 0000000..33fc821 --- /dev/null +++ b/proprietary/vendor/etc/thermal-engine.conf @@ -0,0 +1,2 @@ +# File empty by default. +# Replace contents of this file with custom configuration. diff --git a/proprietary/vendor/etc/vhw.xml b/proprietary/vendor/etc/vhw.xml new file mode 100644 index 0000000..aad1190 --- /dev/null +++ b/proprietary/vendor/etc/vhw.xml @@ -0,0 +1,2966 @@ + + + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:NA + androidboot. + ro.vendor.hw. + + NA + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + emerald + other + + + default=true + mmi, + ro.vendor.hw. + + true + false + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false + mmi, + ro.vendor.hw. + + true + false + + + + + + + + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:WELA,2:WELA,3:PRC + androidboot. + ro.vendor.hw. + + WELA + PRC + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + gray + red + other + + + default=true + mmi, + ro.vendor.hw. + + true + false + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:nxp,2:nxp,3:false + mmi, + ro.vendor.hw. + + nxp + false + + + key=hwid;index=2;map=1:1,2:2,3:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + false + nxp + + + true + nxp + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:Japan,2:PRC,3:ROW,4:India + androidboot. + ro.vendor.hw. + + Japan + ROW + PRC + India + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false,2:true,3:false,4:false + mmi, + ro.vendor.hw. + + true + false + + + key=hwid;index=2;map=1:st,2:false,3:st,4:false + mmi, + ro.vendor.hw. + + st + false + + + key=hwid;index=2;map=1:1,2:2,3:1,4:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + + false + st + false + + + true + st + false + + + false + false + false + + + true + false + false + + + + false + st + true + + + true + st + true + + + false + false + true + + + true + false + true + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:LATAM,3:APEM,4:PRC,5:PRC + androidboot. + ro.vendor.hw. + + ALL + LATAM + APEM + PRC + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + Horizon Blue + Winter Dawn + Moss Lake + Horizon Blue WD + Horizon Blue PW + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:st,2:st,3:st,4:false,5:false + mmi, + ro.vendor.hw. + + st + false + + + androidboot. + + n + + + + + + + + + + + + + + + + st + + + + + + + + false + st + + + true + st + + + false + false + + + true + false + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:LATAM,3:APEM,4:PRC,5:PRC,6:KSA + androidboot. + ro.vendor.hw. + + ALL + LATAM + APEM + PRC + KSA + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + Horizon Blue + Winter Dawn + Moss Lake + Horizon Blue WD + Horizon Blue PW + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:st,2:st,3:st,4:false,5:false,6:st + mmi, + ro.vendor.hw. + + st + false + + + androidboot. + + n + + + + + + + + + + + + + + + + st + + + + + + + + false + st + + + true + st + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:Japan,2:PRC,3:ROW,4:India + androidboot. + ro.vendor.hw. + + Japan + ROW + PRC + India + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false,2:true,3:false,4:false + mmi, + ro.vendor.hw. + + true + false + + + key=hwid;index=2;map=1:st,2:false,3:st,4:false + mmi, + ro.vendor.hw. + + st + false + + + key=hwid;index=2;map=1:1,2:2,3:1,4:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + + false + st + false + + + true + st + false + + + false + false + false + + + true + false + false + + + + false + st + true + + + true + st + true + + + false + false + true + + + true + false + true + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:Japan,2:PRC,3:ROW,4:India + androidboot. + ro.vendor.hw. + + Japan + ROW + PRC + India + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false,2:true,3:false,4:false + mmi, + ro.vendor.hw. + + true + false + + + key=hwid;index=2;map=1:st,2:false,3:st,4:false + mmi, + ro.vendor.hw. + + st + false + + + key=hwid;index=2;map=1:1,2:2,3:1,4:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + + false + st + false + + + true + st + false + + + false + false + false + + + true + false + false + + + + false + st + true + + + true + st + true + + + false + false + true + + + true + false + true + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:NA,2:VZW + androidboot. + ro.vendor.hw. + + NA + VZW + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:nxp,2:nxp + mmi, + ro.vendor.hw. + + nxp + false + + + + + + + + + + false + + + true + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:JAPAN,2:LATAM,3:APEM + androidboot. + ro.vendor.hw. + + JAPAN + LATAM + APEM + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + Sumi + Shironeri + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:ese_nq,2:ese_nq,3:ese_nq + mmi, + ro.vendor.hw. + + ese_nq + false + + + androidboot. + + n + + + + + + + + + + + + + + + + ese_nq + + + + + + + + + true + ese_nq + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ROW,2:PRC + androidboot. + ro.vendor.hw. + + ROW + PRC + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:samsung,2:false + mmi, + ro.vendor.hw. + + false + samsung + + + androidboot. + + n + + + + + + + + + samsung + + + + + + false + samsung + + + true + samsung + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:LATAM,2:APEM + androidboot. + ro.vendor.hw. + + LATAM + APEM + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=nxp + mmi, + ro.vendor.hw. + + false + nxp + + + + + + + + + + false + nxp + + + true + nxp + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:INDIA + androidboot. + ro.vendor.hw. + + INDIA + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=false + mmi, + ro.vendor.hw. + + false + + + + + + + + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ROW + androidboot. + ro.vendor.hw. + + ROW + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 128GB + 256GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + veriperi + icepalace + blackonyx + aquafoam + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=nxp + mmi, + ro.vendor.hw. + + nxp + + + + + + + + + + true + nxp + + + false + nxp + + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + felica + + nfc + + ecompass + + esim + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:BRLA,3:APEU,4:PRC,5:INDIA,6:JAPAN,7:JPSB + androidboot. + ro.vendor.hw. + + ALL + BRLA + APEU + PRC + INDIA + JAPAN + JPSB + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + 12GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + 256GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + veriperi + icepalace + blackonyx + aquafoam + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:nxp,2:nxp,3:nxp,4:false,5:nxp,6:ese_nq,7:ese_nq + mmi, + ro.vendor.hw. + + nxp + ese_nq + false + + + key=hwid;index=2;map=1:false,2:false,3:false,4:false,5:false,6:true,7:true + mmi, + ro.vendor.hw. + + true + false + + + + + + + + + + + + + + false + nxp + + + true + nxp + + + false + false + + + true + false + + + true + ese_nq + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + esim + + esimid + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:SUPER + androidboot. + ro.vendor.hw. + + SUPER + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + veriperi + icepalace + blackonyx + aquafoam + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=false + mmi, + ro.vendor.hw. + + false + + + uspace=config;name=esimid + ro.vendor. + + + + + + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + esim + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:LATAM,2:EUAPEM + androidboot. + ro.vendor.hw. + + LATAM + EUAPEM + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 6GB + 8GB + 12GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 128GB + 256GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + vivamagenta + balladblue + outerspace + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=samsung + mmi, + ro.vendor.hw. + + samsung + + + + + + + + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + esim + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:BR,3:LATAM,4:APEM,5:APEM,6:PRC + androidboot. + ro.vendor.hw. + + ALL + BR + LATAM + APEM + PRC + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + 256GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + Horizon Blue + Winter Dawn + Moss Lake + Horizon Blue WD + Horizon Blue PW + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:samsung,2:samsung,3:samsung,4:samsung,5:false,6:false + mmi, + ro.vendor.hw. + + samsung + false + + + androidboot. + + n + + + + + + + + + + + + + + + + samsung + + + + + + + + false + samsung + + + true + samsung + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + esim + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:NA,3:EU + androidboot. + ro.vendor.hw. + + ALL + NA + EU + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + sedonasage + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:nq,2:nq,3:nq + mmi, + ro.vendor.hw. + + nq + false + + + + + + + + + + + + + + + + + false + nq + + + true + nq + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + esim + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:BR,3:LATAM,4:APEM,5:INDIA,6:PRC,7:INDIA + androidboot. + ro.vendor.hw. + + ALL + BR + LATAM + APEM + PRC + INDIA + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + 256GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + black + blue + hydro + pumpkin + tofu + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:samsung,2:samsung,3:samsung,4:samsung,5:false,6:false,7:false + mmi, + ro.vendor.hw. + + samsung + false + + + androidboot. + + n + + + + + + + + + + + + + samsung + + + + + + + + false + samsung + + + true + samsung + + + false + false + + + true + false + + + + + diff --git a/proprietary/vendor/firmware/aw87xxx_acf.bin b/proprietary/vendor/firmware/aw87xxx_acf.bin new file mode 100644 index 0000000..5429865 Binary files /dev/null and b/proprietary/vendor/firmware/aw87xxx_acf.bin differ diff --git a/proprietary/vendor/firmware/aw963xx_reg_0.bin b/proprietary/vendor/firmware/aw963xx_reg_0.bin new file mode 100644 index 0000000..8b3e85d Binary files /dev/null and b/proprietary/vendor/firmware/aw963xx_reg_0.bin differ diff --git a/proprietary/vendor/firmware/csot_focal_test_limits.ini b/proprietary/vendor/firmware/csot_focal_test_limits.ini new file mode 100644 index 0000000..8d64acd --- /dev/null +++ b/proprietary/vendor/firmware/csot_focal_test_limits.ini @@ -0,0 +1,362 @@ +[Valid_File] +OnlyMultipleTest=1 +[Interface] +IC_Type=FT3681 +Normalize_Type=0 +CascadingType=0 +Interface_Type=1 +Slave_Addr= +Slave_Addr0= +Slave_Addr1= +Freq_Index=2 +Phase_Pola=0 +TestBoard=3 +Check_I2C_Address=0 +Max_Points=10 +iRotationDegree=0 +isReversed=0 +ixMaxPixel=1080 +iyMaxPixel=2400 +[Android_Terminal] +TP_Test=2 +LCD_Test=1 +I2C_Interface=0 +I2C_Index=0 +RW_Byte=1 +CustomConfPath=0 +AutoSave=1 +ResultPath= +[Config] +Run_Mode=1 +Read_Bytes=256 +Write_Bytes=128 +Test_Way=0 +Handle_SN=0 +SN_Length=25 +SN_AutoTest=1 +SnAndEnter=0 +SN_And_IO_AutoTest=0 +Set_Focus_To_SN1=0 +TP_Connection_AND_SN_AutoTest=0 +CheckSN=0 +SN_AutoSkipBy=0 +SKey_Index=0 +SKeyValue=13 +TP_AutoTest=0 +TP_AutoTest_Time=0 +TP_ReplaceTP=0 +TP_ReplaceTP_Time=0 +TP_Always_Replace=0 +TP_Always_Replace_Time=0 +Store_Result=1 +CommOption=0 +DirecoryPanelType= +Auto_Switch=0 +Continue_Test_After_Fail=0 +Break_Test_After_Fail=0 +Break_Test_If_Failed_Before_Download=0 +CB_Test_Mode=0 +Tip_After_TestNG=0 +Show_Res=0 +Check_Mode=0 +Light_Up=0 +Non_Common_GND=0 +TP_Stop=0 +TP_Stop_Wait=60 +LCDDeepStandbyAndTpStop=0 +LCDDeepStandbyTimeOut=30 +RemoveLPWGLevelSignal=0 +ContinueDownLoad=0 +CheckFwCRCBeforeDownload=0 +bPoll=0 +bCheckBinBeforeDownLoad=1 +bRemoveReloadInitialCode=0 +bSwitchICMode=0 +bICMode=0 +bDelayTime=0 +bDelayTimeBetweenSwitchAndPowerOff=0 +bCancelSiuPowerOff=0 +EnablePC6LPWGLevelSignal=0 +PC6LPWGLevelSignalDelayTime=300 +Output_LevelSignal=0 +Output_NgSignal=0 +Input_LevelSignal=0 +Reverse_Time=0 +Switch_Protocol=0 +CLB_Other_Return=0 +Count_Result=0 +Count_Result_Type=0 +Full_Screen=0 +DisplayMonitorIndexEn=0 +Impulsing=0 +NotifyTest=0 +Use_LockDown=0 +SetCheckFwFileName=0 +SetFwChecksum=0 +DelayTimeSet=0 +CheckFactoryID=0 +SaveState=0 +SetVDDTP_Check=0 +SiuPowOffSaveResult=0 +Checl_Tool_Version=0 +Tool_Version=v7.2.0.0 +Switch_TP_Report_Rate=0 +Rate_Value=0 +Result_Type=0 +Result_Format=0 +Result_Path_Enable=0 +Store_LogName_Enable=0 +Result_OP_Num=0 +Result_Use_IcId=0 +Result_Use_TestTime=1 +Result_ReplaceOldLog=0 +Result_SaveTestMsg=1 +Result_SimpleDirectory=0 +LogFileNameOrder=0 +LPWGDSTB=0 +LightUpAfterTesting=0 +SN_Compare= +UseForVersionB=0 +SleepModeOther=0 +SwitchTPFw=0 +Shift=0 +Shift_Value=1 +GPIO_Input_LevelSignal=0 +[OnLine_Setting] +IPAddress=127.0.0.1 +TCPPort=5555 +NetworkControl=0 +[COM_Setting] +COM_ID=0 +BaudRate=115200 +[TestItem] +FW_VERSION_TEST=0 +FACTORY_ID_TEST=0 +IC_VERSION_TEST=0 +PROJECT_CODE_TEST=0 +PANEL_ID_TEST=0 +RAWDATA_TEST=1 +PANEL_DIFFER_TEST=1 +PANEL_DIFFER_UNIFORMITY_TEST=0 +SCAP_CB_TEST=1 +SCAP_RAWDATA_TEST=1 +CHANNEL_NUM_TEST=0 +INT_PIN_TEST=0 +RESET_PIN_TEST=0 +NOISE_TEST=1 +WEAK_SHORT_CIRCUIT_TEST=1 +UNIFORMITY_TEST=0 +SITO_RAWDATA_UNIFORMITY_TEST=0 +GPIO_TEST=0 +Sync_Test=0 +LCD_NOISE_TEST=0 +SCAP_NOISE_TEST=1 +OSC_CALIBRATION_TEST=0 +LOCKDOWN_INFO_TEST=0 +OTP_WRITE_LOCKDOWN_INFO_TEST=0 +OTP_COMPARE_LOCKDOWN_INFO_TEST=0 +NULL_NOISE_TEST=0 +VIRTUAL_BUTTON_TEST=0 +ONELINE_TEST=0 +MULTILINE_TEST=0 +GRIDLINE_TEST=0 +TOUCHLINE_TEST=0 +DIAGONAL_TEST=0 +FREEPAINT_TEST=0 +SPECIAL_BUTTON_TEST=0 +HOME_KEY_TEST=0 +FORCE_TOUCH_TEST=0 +LINEARITY_TEST=0 +CIRCLE_TEST=0 +SQUARE_TEST=0 +KEY_TEST=0 +PRESS_CHANNEL_TEST=0 +Graph_Set_K1=0 +AUXILIARY_FRE_NOISE_TEST=0 +LOW_FRE_RAWDATA_UNIFORMITY_TEST=0 +RAWDATA_DEVIATION_TEST=0 +MEMBIST_TEST=0 +[Basic_Threshold] +FW_VER_VALUE=255 +Factory_ID_Number=255 +IC_Version=0 +Project_Code=London NA +Ori_ProjectCode=0 +LCM_ID=1 +PANEL_ID=255 +RawDataTest_Low_Min=7000 +RawDataTest_Low_Max=11000 +RawDataTest_High_Min=3000 +RawDataTest_High_Max=25000 +RawDataTest_NonCommonGND=0 +RawDataTest_LowFreq=1 +RawDataTest_HighFreq=1 +SCapCbTest_OFF_Min=-125 +SCapCbTest_OFF_Max=125 +SCapCbTest_ON_Min=-125 +SCapCbTest_ON_Max=125 +ScapCBTest_SetWaterproof_OFF=1 +ScapCBTest_SetWaterproof_ON=1 +ScapCBTest_SetHighSensitivity=0 +SCapCbTest_High_Min=-120 +SCapCbTest_High_Max=120 +SCapCbTest_OFF_Cf_Cb_Min=-61 +SCapCbTest_OFF_Cf_Cb_Max=61 +SCapCbTest_ON_Cf_Cb_Min=-61 +SCapCbTest_ON_Cf_Cb_Max=61 +ScapCBTest_SetWaterproof_OFF_Cf_Cb=1 +ScapCBTest_SetWaterproof_ON_Cf_Cb=1 +ScapCBTest_SetHighSensitivity_Cf_Cb=0 +SCapCbTest_High_Cf_Cb_Min=-60 +SCapCbTest_High_Cf_Cb_Max=60 +SCapCbTest_OFF_Global_Cb_Min=0 +SCapCbTest_OFF_Global_Cb_Max=120 +SCapCbTest_ON_Global_Cb_Min=0 +SCapCbTest_ON_Global_Cb_Max=125 +ScapCBTest_SetWaterproof_OFF_Global_Cb=1 +ScapCBTest_SetWaterproof_ON_Global_Cb=1 +ScapCBTest_SetHighSensitivity_Global_Cb=0 +SCapCbTest_High_Global_Cb_Min=0 +SCapCbTest_High_Global_Cb_Max=120 +SCapRawDataTest_OFF_Min=-6000 +SCapRawDataTest_OFF_Max=6000 +SCapRawDataTest_ON_Min=-6000 +SCapRawDataTest_ON_Max=6000 +SCapRawDataTest_SetWaterproof_OFF=1 +SCapRawDataTest_SetWaterproof_ON=1 +SCapRawDataTest_High_Min=-6000 +SCapRawDataTest_High_Max=6000 +SCapRawDataTest_SetHighSensitivity=1 +ChannelNumTest_TxNum=18 +ChannelNumTest_RxNum=40 +ChannelNumTest_Tx_NP_Num=13 +ChannelNumTest_Rx_NP_Num=24 +ChannelNumTest_Mapping=1 +ChannelNumTest_NoMapping=0 +IntPinTest_RegAddr=8 +IntPinTest_TestNum=1 +ResetPinTest_RegAddr=173 +ResetPinTest_TestNum=1 +NoiseTest_Threshold=50 +NoiseThreshold_Choose=0 +NoiseTest_TPToolProcess=0 +Polling Frequency=0 +NoiseTest_Max=200 +NoiseTest_Frames=200 +NoiseTest_Time=1 +NoiseTest_SampeMode=0 +NoiseTest_NoiseMode=1 +NoiseTest_FwNoiseMode=1 +NoiseTest_ShowTip=0 +NoiseTest_ShowTip_AfterTest=0 +Set_Frequency=0 +NoiseTest_MinNGFrame=0 +WeakShortTest_CG=800 +WeakShortTest_CC=800 +WeakShortTest_CC_Rsen=57 +WeakShortTest_CapShortTest=0 +UniformityTest_Tx_Hole=50 +UniformityTest_Rx_Hole=50 +UniformityTest_MinMax_Hole=70 +UniformityTest_Check_Tx=0 +UniformityTest_Check_Rx=0 +UniformityTest_Check_MinMax=0 +UniformityTest_NonCommonGND=0 +PanelDifferTest_Min=150 +PanelDifferTest_Max=2800 +SCapNoiseTest_SetWaterproof_OFF=1 +SCapNoiseTest_OFF_Threshold=500 +SCapNoiseTest_SetWaterproof_ON=1 +SCapNoiseTest_ON_Threshold=500 +SCapNoiseTest_SetHigh_ON=0 +SCapNoiseTest_High_Threshold=500 +OTP_Write_lockdown_Info_Data=463632014C093200 +OTP_Compare_lockdown_Info_Data=463632014C093200 +NullNoiseTest_FwNoiseMode=1 +NullNoiseTest_Coef=500 +Distance_Diagonal=50 +Type_Diagonal=2 +MaxNG_Diagonal=0 +LimitTime_Diagonal=0 +LinearityCheck_Diagonal=1 +Continue_Diagonal=0 +LimitTime_HomeKey=10 +HomeKey_LeftChannel=0 +HomeKey_RightChannel=0 +HomeKey_TopChannel=0 +HomeKey_BottonChannel=0 +HomeKey_Hole=0 +SET_TOUCH_THRESHOLD_INCELL=0 +Key_Div_Number_Incell=1 +Preserved_key_threshold_Incell=4 +SET_TOUCH_THRESHOLD_INCELL2=0 +Key_Div_Number_Incell2=1 +Preserved_key_threshold_Incell2=4 +Preserved_key_threshold_Dynamic=1 +CIRCLE_TEST_MAX_NG=0 +CIRCLE_TEST_LIMITE_TIME=0 +CIRCLE_TEST_BOARDER=360 +CIRCLE_TEST_EDGE=20 +CIRCLE_TEST_TRACK=10 +CIRCLE_TEST_CENTER1=270 +CIRCLE_TEST_CENTER2=120 +CIRCLE_TEST_LINEARITY=35 +CIRCLE_TEST_SPLITS=10 +CircleWhenCritical=0 +SET_TOUCH_THRESHOLD=0 +Key_Div_Number=1 +Preserved_key_threshold=800 +1_key_threshold=800 +2_key_threshold=800 +3_key_threshold=800 +4_key_threshold=800 +Key_Threshold=800 +KEY_TEST_MAX_NG=0 +KEY_TEST_LIMITE_TIME=0 +KEY_TEST_KEY_NUM=21 +PressChannelTest_Min=5000 +PressChannelTest_Max=65000 +Press_Test_LimitedTime=0 +PressChannelTest_NotifyIOEn=0 +PressChannelTest_NotifyIO=0 +Graph_Set_K1_Step=3 +OSCCalibrationTest_Vsync_Freq=3 +Hsync_Test=1 +Vsync_Test=1 +Polling_Frequency=0 +Auxiliary_Fre_Noise_Test_Frames=100 +Auxiliary_Fre_Noise_Test_Fre0=0 +Auxiliary_Fre_Noise_Test_Fre0_Threshold=80 +Auxiliary_Fre_Noise_Test_Fre1=1 +Auxiliary_Fre_Noise_Test_Fre1_Threshold=80 +Auxiliary_Fre_Noise_Test_Fre2=1 +Auxiliary_Fre_Noise_Test_Fre2_Threshold=80 +Auxiliary_Fre_Noise_Test_Fre3=1 +Auxiliary_Fre_Noise_Test_Fre3_Threshold=80 +Auxiliary_Fre_Noise_Test_Fre4=1 +Auxiliary_Fre_Noise_Test_Fre4_Threshold=80 +Auxiliary_Fre_Noise_Test_Fre5=1 +Auxiliary_Fre_Noise_Test_Fre5_Threshold=80 +NoiseTest_FIFO_Max=50 +SET_TOUCH_THRESHOLD_INCELL3=0 +Preserved_key_threshold_Incell3=100 +[SiuParam] +Check_Siu_Version=0 +Siu_MainVersion=0 +Siu_SubVersion=0 +Update_Siu2_Version=0 +Siu2_MainVersion=0 +Siu2_SubVersion=0 +Siu_AutoUpdateBoardType=0 +Check_VccTest=0 +CheckIovccCurrentTestSiu3=0 +CheckIovccOpenTestSiu3=0 +Check_IOLeakageTest=0 +Check_IOVoltageTest=0 +Check_AddCircuitVoltageTest=0 +IOVoltageTest_I2C_PIN_CheckSIU4=0 +IOVoltageTest_SPI_PIN_CheckSIU4=1 +IOVoltageTest_RESET_PIN_CheckSIU4=1 +[SpecialSet] +[BLUE_MAC_Setting] +BLUE_MAC= diff --git a/proprietary/vendor/firmware/focaltech-csot-ft3681-26-0000-bangkk.bin b/proprietary/vendor/firmware/focaltech-csot-ft3681-26-0000-bangkk.bin new file mode 100644 index 0000000..ca06036 Binary files /dev/null and b/proprietary/vendor/firmware/focaltech-csot-ft3681-26-0000-bangkk.bin differ diff --git a/proprietary/vendor/firmware/goodix-tm-gt9916S-23062705-649a9b6c-bangkk.bin b/proprietary/vendor/firmware/goodix-tm-gt9916S-23062705-649a9b6c-bangkk.bin new file mode 100644 index 0000000..b8702a6 Binary files /dev/null and b/proprietary/vendor/firmware/goodix-tm-gt9916S-23062705-649a9b6c-bangkk.bin differ diff --git a/proprietary/vendor/firmware/mot_aw86006.prog b/proprietary/vendor/firmware/mot_aw86006.prog new file mode 100644 index 0000000..e3d0bb8 Binary files /dev/null and b/proprietary/vendor/firmware/mot_aw86006.prog differ diff --git a/proprietary/vendor/firmware/mot_dw9784.prog b/proprietary/vendor/firmware/mot_dw9784.prog new file mode 100644 index 0000000..15fb8ce Binary files /dev/null and b/proprietary/vendor/firmware/mot_dw9784.prog differ diff --git a/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin b/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin new file mode 100644 index 0000000..3596828 Binary files /dev/null and b/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin differ diff --git a/proprietary/vendor/firmware/tm_goodix_cfg_group.bin b/proprietary/vendor/firmware/tm_goodix_cfg_group.bin new file mode 100644 index 0000000..025b68a Binary files /dev/null and b/proprietary/vendor/firmware/tm_goodix_cfg_group.bin differ diff --git a/proprietary/vendor/lib/libacdbloader.so b/proprietary/vendor/lib/libacdbloader.so new file mode 100644 index 0000000..25405d1 Binary files /dev/null and b/proprietary/vendor/lib/libacdbloader.so differ diff --git a/proprietary/vendor/lib/libcamxexternalformatutils.so b/proprietary/vendor/lib/libcamxexternalformatutils.so new file mode 100644 index 0000000..27a685e Binary files /dev/null and b/proprietary/vendor/lib/libcamxexternalformatutils.so differ diff --git a/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_bangkk_s5k4h7_otp.so b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_bangkk_s5k4h7_otp.so new file mode 100644 index 0000000..8bb5d0e Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_bangkk_s5k4h7_otp.so differ diff --git a/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128f_s5kgn9_eeprom.so b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128f_s5kgn9_eeprom.so new file mode 100644 index 0000000..19aba81 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128f_s5kgn9_eeprom.so differ diff --git a/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64b_ov16a1q_eeprom.so b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64b_ov16a1q_eeprom.so new file mode 100644 index 0000000..66aad6a Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64b_ov16a1q_eeprom.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.flash.aw36514.so b/proprietary/vendor/lib64/camera/com.qti.flash.aw36514.so new file mode 100644 index 0000000..c46600e Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.flash.aw36514.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.flash.ocp81373.so b/proprietary/vendor/lib64/camera/com.qti.flash.ocp81373.so new file mode 100644 index 0000000..6b1559f Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.flash.ocp81373.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so new file mode 100644 index 0000000..6b2164a Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so new file mode 100644 index 0000000..dc72d2d Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kgn9.so b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kgn9.so new file mode 100644 index 0000000..482fb34 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kgn9.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_ov16a1q_ofilm.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_ov16a1q_ofilm.bin new file mode 100644 index 0000000..2fb5ab4 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_ov16a1q_ofilm.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5k4h7_qtech.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5k4h7_qtech.bin new file mode 100644 index 0000000..b327cbd Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5k4h7_qtech.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ak7377.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ak7377.bin new file mode 100644 index 0000000..6467080 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ak7377.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ofilm.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ofilm.bin new file mode 100644 index 0000000..048012f Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_bangkk_s5kgn9_ofilm.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin new file mode 100644 index 0000000..7102819 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q.bin new file mode 100644 index 0000000..0dced1e Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q_india.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q_india.bin new file mode 100644 index 0000000..faa2765 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_ov16a1q_india.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af.bin new file mode 100644 index 0000000..6812fe2 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af_india.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af_india.bin new file mode 100644 index 0000000..33af13e Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5k4h7af_india.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9.bin new file mode 100644 index 0000000..12b778b Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377.bin new file mode 100644 index 0000000..b7bb41f Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377_india.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377_india.bin new file mode 100644 index 0000000..f99080d Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_ak7377_india.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_india.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_india.bin new file mode 100644 index 0000000..c7010c6 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_bangkk_s5kgn9_india.bin differ diff --git a/proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so b/proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so new file mode 100644 index 0000000..c5984e0 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.arcsoft.node.supernightraw.so b/proprietary/vendor/lib64/camera/components/com.arcsoft.node.supernightraw.so new file mode 100644 index 0000000..7d204d8 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.arcsoft.node.supernightraw.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.mot.node.c2d.so b/proprietary/vendor/lib64/camera/components/com.mot.node.c2d.so new file mode 100644 index 0000000..d3fe800 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.mot.node.c2d.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so new file mode 100644 index 0000000..959435f Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so new file mode 100644 index 0000000..3ffb0a0 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so b/proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so new file mode 100644 index 0000000..ac649ec Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.eisv2.so b/proprietary/vendor/lib64/camera/components/com.qti.eisv2.so new file mode 100644 index 0000000..fe25694 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.eisv2.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.eisv3.so b/proprietary/vendor/lib64/camera/components/com.qti.eisv3.so new file mode 100644 index 0000000..8872d81 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.eisv3.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so b/proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so new file mode 100644 index 0000000..396602a Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so b/proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so new file mode 100644 index 0000000..43c82ac Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so b/proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so new file mode 100644 index 0000000..5da5bc6 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.depth.so b/proprietary/vendor/lib64/camera/components/com.qti.node.depth.so new file mode 100644 index 0000000..6c6aa67 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.depth.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so b/proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so new file mode 100644 index 0000000..aab0f30 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so b/proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so new file mode 100644 index 0000000..39e9a97 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so b/proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so new file mode 100644 index 0000000..f488c22 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so new file mode 100644 index 0000000..d7473f3 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so new file mode 100644 index 0000000..e84c9e7 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so b/proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so new file mode 100644 index 0000000..e6d5804 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so b/proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so new file mode 100644 index 0000000..35262e3 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so b/proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so new file mode 100644 index 0000000..ee7530a Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so b/proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so new file mode 100644 index 0000000..f4805a2 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.ml.so b/proprietary/vendor/lib64/camera/components/com.qti.node.ml.so new file mode 100644 index 0000000..c1a67d0 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.ml.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so b/proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so new file mode 100644 index 0000000..7d11a53 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.stich.so b/proprietary/vendor/lib64/camera/components/com.qti.node.stich.so new file mode 100644 index 0000000..0a7e98f Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.stich.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so new file mode 100644 index 0000000..dbaa62c Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so new file mode 100644 index 0000000..431196b Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so new file mode 100644 index 0000000..191d679 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so new file mode 100644 index 0000000..39c4aa0 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so new file mode 100644 index 0000000..728a96d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so new file mode 100644 index 0000000..e922f24 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so new file mode 100644 index 0000000..4f8c465 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so new file mode 100644 index 0000000..7b62a51 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so new file mode 100644 index 0000000..75e075f Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so new file mode 100644 index 0000000..52f2096 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so new file mode 100644 index 0000000..d51f2be Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so new file mode 100644 index 0000000..c471ef9 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.af.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.af.so new file mode 100644 index 0000000..21446c2 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.af.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so new file mode 100644 index 0000000..9fdb658 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so new file mode 100644 index 0000000..b5b8a2d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so new file mode 100644 index 0000000..d9bb001 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so new file mode 100644 index 0000000..bd5c8e5 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so new file mode 100644 index 0000000..c45d074 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so new file mode 100644 index 0000000..0c76f70 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so new file mode 100644 index 0000000..71faaff Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so new file mode 100644 index 0000000..bbc4913 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so new file mode 100644 index 0000000..e44e1b7 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so new file mode 100644 index 0000000..3235031 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so new file mode 100644 index 0000000..3e1b1e5 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so new file mode 100644 index 0000000..c6bfbe0 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so new file mode 100644 index 0000000..01d346d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so new file mode 100644 index 0000000..b162372 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so new file mode 100644 index 0000000..e8e9fd8 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so b/proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so new file mode 100644 index 0000000..e939c0d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so b/proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so new file mode 100644 index 0000000..670432a Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so differ diff --git a/proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so b/proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so new file mode 100644 index 0000000..30141da Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so differ diff --git a/proprietary/vendor/lib64/camera/fdconfigpreview.bin b/proprietary/vendor/lib64/camera/fdconfigpreview.bin new file mode 100644 index 0000000..ed0e847 Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigpreview.bin differ diff --git a/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin b/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin new file mode 100644 index 0000000..cae5c6f Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin differ diff --git a/proprietary/vendor/lib64/camera/fdconfigvideo.bin b/proprietary/vendor/lib64/camera/fdconfigvideo.bin new file mode 100644 index 0000000..4a2a716 Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigvideo.bin differ diff --git a/proprietary/vendor/lib64/camera/fdconfigvideolite.bin b/proprietary/vendor/lib64/camera/fdconfigvideolite.bin new file mode 100644 index 0000000..a2a12de Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigvideolite.bin differ diff --git a/proprietary/vendor/lib64/com.qti.chiusecaseselector.so b/proprietary/vendor/lib64/com.qti.chiusecaseselector.so new file mode 100644 index 0000000..8b5f4b9 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.chiusecaseselector.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.anchorsync.so b/proprietary/vendor/lib64/com.qti.feature2.anchorsync.so new file mode 100644 index 0000000..0ddf286 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.anchorsync.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.arcrawpro.so b/proprietary/vendor/lib64/com.qti.feature2.arcrawpro.so new file mode 100644 index 0000000..c6f303b Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.arcrawpro.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.demux.so b/proprietary/vendor/lib64/com.qti.feature2.demux.so new file mode 100644 index 0000000..7106628 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.demux.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.frameselect.so b/proprietary/vendor/lib64/com.qti.feature2.frameselect.so new file mode 100644 index 0000000..5f9fed8 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.frameselect.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.fusion.so b/proprietary/vendor/lib64/com.qti.feature2.fusion.so new file mode 100644 index 0000000..ffc622d Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.fusion.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.generic.so b/proprietary/vendor/lib64/com.qti.feature2.generic.so new file mode 100644 index 0000000..dadc260 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.generic.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so b/proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so new file mode 100644 index 0000000..546ea85 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.hdr.so b/proprietary/vendor/lib64/com.qti.feature2.hdr.so new file mode 100644 index 0000000..b307d64 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.hdr.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so b/proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so new file mode 100644 index 0000000..3092b93 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.memcpy.so b/proprietary/vendor/lib64/com.qti.feature2.memcpy.so new file mode 100644 index 0000000..dda1924 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.memcpy.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.mfsr.so b/proprietary/vendor/lib64/com.qti.feature2.mfsr.so new file mode 100644 index 0000000..aaf9b35 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.mfsr.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.mux.so b/proprietary/vendor/lib64/com.qti.feature2.mux.so new file mode 100644 index 0000000..1831f44 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.mux.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.rawhdr.so b/proprietary/vendor/lib64/com.qti.feature2.rawhdr.so new file mode 100644 index 0000000..802e6c9 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.rawhdr.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so b/proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so new file mode 100644 index 0000000..aedac58 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.rt.so b/proprietary/vendor/lib64/com.qti.feature2.rt.so new file mode 100644 index 0000000..7ed0952 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.rt.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.rtmcx.so b/proprietary/vendor/lib64/com.qti.feature2.rtmcx.so new file mode 100644 index 0000000..ede41aa Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.rtmcx.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.serializer.so b/proprietary/vendor/lib64/com.qti.feature2.serializer.so new file mode 100644 index 0000000..2e9169d Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.serializer.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.swmf.so b/proprietary/vendor/lib64/com.qti.feature2.swmf.so new file mode 100644 index 0000000..5e12ca5 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.swmf.so differ diff --git a/proprietary/vendor/lib64/com.qti.settings.mannar.so b/proprietary/vendor/lib64/com.qti.settings.mannar.so new file mode 100644 index 0000000..1309130 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.settings.mannar.so differ diff --git a/proprietary/vendor/lib64/com.qti.stats.common.so b/proprietary/vendor/lib64/com.qti.stats.common.so new file mode 100644 index 0000000..674cc9b Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.stats.common.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so b/proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so new file mode 100644 index 0000000..9501020 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so b/proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so new file mode 100644 index 0000000..af3bb62 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so b/proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so new file mode 100644 index 0000000..45628a7 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so b/proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so new file mode 100644 index 0000000..0b4be83 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so differ diff --git a/proprietary/vendor/lib64/hw/camera.qcom.so b/proprietary/vendor/lib64/hw/camera.qcom.so new file mode 100644 index 0000000..6872775 Binary files /dev/null and b/proprietary/vendor/lib64/hw/camera.qcom.so differ diff --git a/proprietary/vendor/lib64/hw/com.qti.chi.override.so b/proprietary/vendor/lib64/hw/com.qti.chi.override.so new file mode 100644 index 0000000..3042f9d Binary files /dev/null and b/proprietary/vendor/lib64/hw/com.qti.chi.override.so differ diff --git a/proprietary/vendor/lib64/libBSTSWAD.so b/proprietary/vendor/lib64/libBSTSWAD.so new file mode 100644 index 0000000..99f68db Binary files /dev/null and b/proprietary/vendor/lib64/libBSTSWAD.so differ diff --git a/proprietary/vendor/lib64/libRbsFlow.so b/proprietary/vendor/lib64/libRbsFlow.so new file mode 100644 index 0000000..e0a7717 Binary files /dev/null and b/proprietary/vendor/lib64/libRbsFlow.so differ diff --git a/proprietary/vendor/lib64/libacdbloader.so b/proprietary/vendor/lib64/libacdbloader.so new file mode 100644 index 0000000..4da36eb Binary files /dev/null and b/proprietary/vendor/lib64/libacdbloader.so differ diff --git a/proprietary/vendor/lib64/libarcsoft_chi_utils.so b/proprietary/vendor/lib64/libarcsoft_chi_utils.so new file mode 100644 index 0000000..80e1e51 Binary files /dev/null and b/proprietary/vendor/lib64/libarcsoft_chi_utils.so differ diff --git a/proprietary/vendor/lib64/libarcsoft_low_light_shot.so b/proprietary/vendor/lib64/libarcsoft_low_light_shot.so new file mode 100644 index 0000000..7b7528c Binary files /dev/null and b/proprietary/vendor/lib64/libarcsoft_low_light_shot.so differ diff --git a/proprietary/vendor/lib64/libarcsoft_portrait_super_night_se_raw.so b/proprietary/vendor/lib64/libarcsoft_portrait_super_night_se_raw.so new file mode 100644 index 0000000..8624692 Binary files /dev/null and b/proprietary/vendor/lib64/libarcsoft_portrait_super_night_se_raw.so differ diff --git a/proprietary/vendor/lib64/libarcsoft_super_night_raw.so b/proprietary/vendor/lib64/libarcsoft_super_night_raw.so new file mode 100644 index 0000000..c2f0621 Binary files /dev/null and b/proprietary/vendor/lib64/libarcsoft_super_night_raw.so differ diff --git a/proprietary/vendor/lib64/libarcsoft_super_night_se_raw.so b/proprietary/vendor/lib64/libarcsoft_super_night_se_raw.so new file mode 100644 index 0000000..285913c Binary files /dev/null and b/proprietary/vendor/lib64/libarcsoft_super_night_se_raw.so differ diff --git a/proprietary/vendor/lib64/libbitmlengine.so b/proprietary/vendor/lib64/libbitmlengine.so new file mode 100644 index 0000000..f2b179a Binary files /dev/null and b/proprietary/vendor/lib64/libbitmlengine.so differ diff --git a/proprietary/vendor/lib64/libbitmlenginev2.so b/proprietary/vendor/lib64/libbitmlenginev2.so new file mode 100644 index 0000000..711097c Binary files /dev/null and b/proprietary/vendor/lib64/libbitmlenginev2.so differ diff --git a/proprietary/vendor/lib64/libc2d_helper.so b/proprietary/vendor/lib64/libc2d_helper.so new file mode 100644 index 0000000..13ae767 Binary files /dev/null and b/proprietary/vendor/lib64/libc2d_helper.so differ diff --git a/proprietary/vendor/lib64/libcamera_nn_stub.so b/proprietary/vendor/lib64/libcamera_nn_stub.so new file mode 100644 index 0000000..7829c5a Binary files /dev/null and b/proprietary/vendor/lib64/libcamera_nn_stub.so differ diff --git a/proprietary/vendor/lib64/libcamerapostproc.so b/proprietary/vendor/lib64/libcamerapostproc.so new file mode 100644 index 0000000..9ccb18c Binary files /dev/null and b/proprietary/vendor/lib64/libcamerapostproc.so differ diff --git a/proprietary/vendor/lib64/libcamxexternalformatutils.so b/proprietary/vendor/lib64/libcamxexternalformatutils.so new file mode 100644 index 0000000..d12b324 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxexternalformatutils.so differ diff --git a/proprietary/vendor/lib64/libcamxfacialfeatures.so b/proprietary/vendor/lib64/libcamxfacialfeatures.so new file mode 100644 index 0000000..1e43495 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxfacialfeatures.so differ diff --git a/proprietary/vendor/lib64/libcamxfdalgo.so b/proprietary/vendor/lib64/libcamxfdalgo.so new file mode 100644 index 0000000..85c92b2 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxfdalgo.so differ diff --git a/proprietary/vendor/lib64/libcamxfdengine.so b/proprietary/vendor/lib64/libcamxfdengine.so new file mode 100644 index 0000000..cbb50e9 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxfdengine.so differ diff --git a/proprietary/vendor/lib64/libcamxifestriping.so b/proprietary/vendor/lib64/libcamxifestriping.so new file mode 100644 index 0000000..921ebe9 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxifestriping.so differ diff --git a/proprietary/vendor/lib64/libcamximageformatutils.so b/proprietary/vendor/lib64/libcamximageformatutils.so new file mode 100644 index 0000000..8bd8e62 Binary files /dev/null and b/proprietary/vendor/lib64/libcamximageformatutils.so differ diff --git a/proprietary/vendor/lib64/libcamxqsatalgo.so b/proprietary/vendor/lib64/libcamxqsatalgo.so new file mode 100644 index 0000000..5ab504f Binary files /dev/null and b/proprietary/vendor/lib64/libcamxqsatalgo.so differ diff --git a/proprietary/vendor/lib64/libcamxstatscore.so b/proprietary/vendor/lib64/libcamxstatscore.so new file mode 100644 index 0000000..95995a8 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxstatscore.so differ diff --git a/proprietary/vendor/lib64/libcamxswispiqmodule.so b/proprietary/vendor/lib64/libcamxswispiqmodule.so new file mode 100644 index 0000000..af6cceb Binary files /dev/null and b/proprietary/vendor/lib64/libcamxswispiqmodule.so differ diff --git a/proprietary/vendor/lib64/libcamxswprocessalgo.so b/proprietary/vendor/lib64/libcamxswprocessalgo.so new file mode 100644 index 0000000..3428b8a Binary files /dev/null and b/proprietary/vendor/lib64/libcamxswprocessalgo.so differ diff --git a/proprietary/vendor/lib64/libcamxtintlessalgo.so b/proprietary/vendor/lib64/libcamxtintlessalgo.so new file mode 100644 index 0000000..dbd1299 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxtintlessalgo.so differ diff --git a/proprietary/vendor/lib64/libcapiv2svacnn.so b/proprietary/vendor/lib64/libcapiv2svacnn.so new file mode 100644 index 0000000..3fc63fe Binary files /dev/null and b/proprietary/vendor/lib64/libcapiv2svacnn.so differ diff --git a/proprietary/vendor/lib64/libcapiv2svarnn.so b/proprietary/vendor/lib64/libcapiv2svarnn.so new file mode 100644 index 0000000..65b80f8 Binary files /dev/null and b/proprietary/vendor/lib64/libcapiv2svarnn.so differ diff --git a/proprietary/vendor/lib64/libcapiv2vop.so b/proprietary/vendor/lib64/libcapiv2vop.so new file mode 100644 index 0000000..aa0a0fd Binary files /dev/null and b/proprietary/vendor/lib64/libcapiv2vop.so differ diff --git a/proprietary/vendor/lib64/libchilog.so b/proprietary/vendor/lib64/libchilog.so new file mode 100644 index 0000000..0520f4a Binary files /dev/null and b/proprietary/vendor/lib64/libchilog.so differ diff --git a/proprietary/vendor/lib64/libcom.qti.chinodeutils.so b/proprietary/vendor/lib64/libcom.qti.chinodeutils.so new file mode 100644 index 0000000..e14a313 Binary files /dev/null and b/proprietary/vendor/lib64/libcom.qti.chinodeutils.so differ diff --git a/proprietary/vendor/lib64/libets_teeclient_v3.so b/proprietary/vendor/lib64/libets_teeclient_v3.so new file mode 100644 index 0000000..1d6430d Binary files /dev/null and b/proprietary/vendor/lib64/libets_teeclient_v3.so differ diff --git a/proprietary/vendor/lib64/libjpege.so b/proprietary/vendor/lib64/libjpege.so new file mode 100644 index 0000000..5647ce7 Binary files /dev/null and b/proprietary/vendor/lib64/libjpege.so differ diff --git a/proprietary/vendor/lib64/libmctfengine_stub.so b/proprietary/vendor/lib64/libmctfengine_stub.so new file mode 100644 index 0000000..128c926 Binary files /dev/null and b/proprietary/vendor/lib64/libmctfengine_stub.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_bestats.so b/proprietary/vendor/lib64/libmmcamera_bestats.so new file mode 100644 index 0000000..e5b6c12 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_bestats.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_cac3.so b/proprietary/vendor/lib64/libmmcamera_cac3.so new file mode 100644 index 0000000..1e2cb25 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_cac3.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_faceproc.so b/proprietary/vendor/lib64/libmmcamera_faceproc.so new file mode 100644 index 0000000..e414f31 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_faceproc.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_faceproc2.so b/proprietary/vendor/lib64/libmmcamera_faceproc2.so new file mode 100644 index 0000000..594d47b Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_faceproc2.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_lscv35.so b/proprietary/vendor/lib64/libmmcamera_lscv35.so new file mode 100644 index 0000000..05d0c18 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_lscv35.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_mfnr.so b/proprietary/vendor/lib64/libmmcamera_mfnr.so new file mode 100644 index 0000000..1562cc8 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_mfnr.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_mfnr_t4.so b/proprietary/vendor/lib64/libmmcamera_mfnr_t4.so new file mode 100644 index 0000000..26faf57 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_mfnr_t4.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_pdpc.so b/proprietary/vendor/lib64/libmmcamera_pdpc.so new file mode 100644 index 0000000..de6d5c2 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_pdpc.so differ diff --git a/proprietary/vendor/lib64/libmot_afd.so b/proprietary/vendor/lib64/libmot_afd.so new file mode 100644 index 0000000..66dfef8 Binary files /dev/null and b/proprietary/vendor/lib64/libmot_afd.so differ diff --git a/proprietary/vendor/lib64/libmot_chi_desktop_helper.so b/proprietary/vendor/lib64/libmot_chi_desktop_helper.so new file mode 100644 index 0000000..0b1bd03 Binary files /dev/null and b/proprietary/vendor/lib64/libmot_chi_desktop_helper.so differ diff --git a/proprietary/vendor/lib64/libmot_engine_settings.so b/proprietary/vendor/lib64/libmot_engine_settings.so new file mode 100644 index 0000000..7302923 Binary files /dev/null and b/proprietary/vendor/lib64/libmot_engine_settings.so differ diff --git a/proprietary/vendor/lib64/libmpbase.so b/proprietary/vendor/lib64/libmpbase.so new file mode 100644 index 0000000..9561793 Binary files /dev/null and b/proprietary/vendor/lib64/libmpbase.so differ diff --git a/proprietary/vendor/lib64/libofflinedump.so b/proprietary/vendor/lib64/libofflinedump.so new file mode 100644 index 0000000..9953cba Binary files /dev/null and b/proprietary/vendor/lib64/libofflinedump.so differ diff --git a/proprietary/vendor/lib64/libofflinelog.so b/proprietary/vendor/lib64/libofflinelog.so new file mode 100644 index 0000000..6545444 Binary files /dev/null and b/proprietary/vendor/lib64/libofflinelog.so differ diff --git a/proprietary/vendor/lib64/libopencv.so b/proprietary/vendor/lib64/libopencv.so new file mode 100644 index 0000000..31e6dd2 Binary files /dev/null and b/proprietary/vendor/lib64/libopencv.so differ diff --git a/proprietary/vendor/lib64/libopestriping.so b/proprietary/vendor/lib64/libopestriping.so new file mode 100644 index 0000000..f056ed9 Binary files /dev/null and b/proprietary/vendor/lib64/libopestriping.so differ diff --git a/proprietary/vendor/lib64/libremosaic_wrapper.so b/proprietary/vendor/lib64/libremosaic_wrapper.so new file mode 100644 index 0000000..5dd6ce2 Binary files /dev/null and b/proprietary/vendor/lib64/libremosaic_wrapper.so differ diff --git a/proprietary/vendor/lib64/libsns_device_mode_stub.so b/proprietary/vendor/lib64/libsns_device_mode_stub.so new file mode 100644 index 0000000..eb379fd Binary files /dev/null and b/proprietary/vendor/lib64/libsns_device_mode_stub.so differ diff --git a/proprietary/vendor/lib64/libsns_fastRPC_util.so b/proprietary/vendor/lib64/libsns_fastRPC_util.so new file mode 100644 index 0000000..9b0c268 Binary files /dev/null and b/proprietary/vendor/lib64/libsns_fastRPC_util.so differ diff --git a/proprietary/vendor/lib64/libsns_low_lat_stream_stub.so b/proprietary/vendor/lib64/libsns_low_lat_stream_stub.so new file mode 100644 index 0000000..5d12906 Binary files /dev/null and b/proprietary/vendor/lib64/libsns_low_lat_stream_stub.so differ diff --git a/proprietary/vendor/lib64/libsnsdiaglog.so b/proprietary/vendor/lib64/libsnsdiaglog.so new file mode 100644 index 0000000..67d1953 Binary files /dev/null and b/proprietary/vendor/lib64/libsnsdiaglog.so differ diff --git a/proprietary/vendor/lib64/libswregistrationalgo.so b/proprietary/vendor/lib64/libswregistrationalgo.so new file mode 100644 index 0000000..b37735e Binary files /dev/null and b/proprietary/vendor/lib64/libswregistrationalgo.so differ diff --git a/proprietary/vendor/lib64/libtfestriping.so b/proprietary/vendor/lib64/libtfestriping.so new file mode 100644 index 0000000..600569d Binary files /dev/null and b/proprietary/vendor/lib64/libtfestriping.so differ diff --git a/proprietary/vendor/lib64/libundistort_impl.so b/proprietary/vendor/lib64/libundistort_impl.so new file mode 100644 index 0000000..e5bdccd Binary files /dev/null and b/proprietary/vendor/lib64/libundistort_impl.so differ diff --git a/proprietary/vendor/lib64/libvideooptfeature.so b/proprietary/vendor/lib64/libvideooptfeature.so new file mode 100644 index 0000000..e8d1352 Binary files /dev/null and b/proprietary/vendor/lib64/libvideooptfeature.so differ diff --git a/proprietary/vendor/lib64/libvidhance.so b/proprietary/vendor/lib64/libvidhance.so new file mode 100644 index 0000000..fb2d55c Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance.so differ diff --git a/proprietary/vendor/lib64/motorola.hardware.camera.desktop@1.0.so b/proprietary/vendor/lib64/motorola.hardware.camera.desktop@1.0.so new file mode 100644 index 0000000..7df37e1 Binary files /dev/null and b/proprietary/vendor/lib64/motorola.hardware.camera.desktop@1.0.so differ diff --git a/proprietary/vendor/lib64/motorola.hardware.camera.desktop@2.0.so b/proprietary/vendor/lib64/motorola.hardware.camera.desktop@2.0.so new file mode 100644 index 0000000..675b8d9 Binary files /dev/null and b/proprietary/vendor/lib64/motorola.hardware.camera.desktop@2.0.so differ diff --git a/proprietary/vendor/lib64/sensors.moto.so b/proprietary/vendor/lib64/sensors.moto.so new file mode 100644 index 0000000..4538dd8 Binary files /dev/null and b/proprietary/vendor/lib64/sensors.moto.so differ diff --git a/proprietary/vendor/lib64/sensors.ssc.so b/proprietary/vendor/lib64/sensors.ssc.so new file mode 100644 index 0000000..33e9a7e Binary files /dev/null and b/proprietary/vendor/lib64/sensors.ssc.so differ diff --git a/proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so b/proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so new file mode 100644 index 0000000..9712516 Binary files /dev/null and b/proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so differ diff --git a/proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so b/proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so new file mode 100644 index 0000000..a28da42 Binary files /dev/null and b/proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so differ diff --git a/proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so b/proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so new file mode 100644 index 0000000..cd74613 Binary files /dev/null and b/proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so differ