<?xml version="1.0" encoding="utf-8"?>
<!--  Copyright (C) 2015/2016 Motorola Mobility, Lenovo Company -->
<validation match="ro.boot.device">
	<!-- device describes a version of mapping logic applicable to a matching device -->
	<!-- the device string to do case-insensitive substring match against "name" is
		to be queried from property indicated by "match", or its BL equivalent -->
	<!-- incremented version tells boot script to update the validation tags from this file -->
	<device name="guam" version="1.0">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:LATAM,2:EMEA,3:ROW,4:CHINA</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>LATAM</item>
				<item>EMEA</item>
				<item>ROW</item>
				<item>CHINA</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>3GB</item>
				<item>4GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>32GB</item>
				<item>64GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=48MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>48MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>misty</item>
				<item>twilight</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=false</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>false</item>
			</string-array>

			<string name="nfc/.auto">default=false</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>false</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<variant name="f">
					<string name="ro.vendor.mot.factory">true</string>
				</variant>
				<variant name="b">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
				</variant>
				<variant name="d">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="guamp" version="1.2">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
				<!-- SKU variant -->
				<item>sku_variant</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:LATAM,2:EMEA,3:ROW,4:LENOVO,5:APEM,6:ROW</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>LATAM</item>
				<item>EMEA</item>
				<item>ROW</item>
				<item>LENOVO</item>
				<item>APEM</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>2GB</item>
				<item>3GB</item>
				<item>4GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>32GB</item>
				<item>64GB</item>
				<item>128GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=48MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>48MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>blue</item>
				<item>green</item>
				<item>pink</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">key=hwid;index=2;map=1:false,2:false,3:false,4:false,5:false,6:true</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="nfc/.auto">key=hwid;index=2;map=1:false,2:false,3:true,4:false,5:false,6:true</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

			<string name="sku_variant/.cmdline">androidboot.</string>
			<string-array name="sku_variant/.range">
				<item>nc</item>
				<item>n</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<!-- Products describe mapping of feature combinations to marketing names,
				to be set in property indicated by "export" -->
			<products export="ro.vendor.product.display" default="moto g&#x2079; play">
			</products>

			<sku-variants export="ro.vendor.hw.sku_variant" writeback="sku_variant">
				<!-- ... same format as before ... -->
				<variant name="nc">
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="n">
					<string name="nfc">true</string>
				</variant>
			</sku-variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<!-- ... SKUs without ecompass ... -->
				<variant name="fb">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="fn">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="fd">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="fdn">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
					<string name="ecompass">false</string>
				</variant>
				<!-- ... SKUs with ecompass ... -->
				<variant name="fc">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="fnc">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="fdc">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="fdnc">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
				<!-- ... SKUs without ecompass ... -->
				<variant name="b">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="n">
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="d">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="dn">
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
					<string name="ecompass">false</string>
				</variant>
				<!-- ... SKUs with ecompass ... -->
				<variant name="c">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="nc">
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="dc">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="dnc">
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="guamna" version="0.2">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:GWL,2:GWLC,3:ATTCA</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>GWL</item>
				<item>GWLC</item>
				<item>ATTCA</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>2GB</item>
				<item>3GB</item>
				<item>4GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>32GB</item>
				<item>64GB</item>
				<item>128GB</item>
			</string-array>

			<string name="dualsim/.auto">default=false</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=13MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>13MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>gray</item>
				<item>white</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=true</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>true</item>
			</string-array>

			<string name="nfc/.auto">default=false</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>false</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<variant name="f">
					<string name="ro.vendor.mot.factory">true</string>
				</variant>
				<variant name="b">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
				</variant>
				<variant name="d">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="borneo" version="1.2">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:NA,2:NANH</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>NA</item>
				<item>NANH</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>3GB</item>
				<item>4GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>32GB</item>
				<item>64GB</item>
			</string-array>

			<string name="dualsim/.auto">default=false</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=48MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>48MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>gray</item>
				<item>white</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=true</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>true</item>
			</string-array>

			<string name="nfc/.auto">default=false</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>false</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<variant name="f">
					<string name="ro.vendor.mot.factory">true</string>
				</variant>
				<variant name="b">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="cebu" version="1.6">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
				<!-- Body temperature sensor -->
				<item>fir</item>
				<!-- SKU variant -->
				<item>sku_variant</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:SUPERCA,2:LATAMCA,3:SUPERCAFIR,4:LATAMCAFIR,5:CHINA,6:SUPERCAP,7:LATAMCAP</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>SUPERCA</item>
				<item>LATAMCA</item>
				<item>SUPERCAFIR</item>
				<item>LATAMCAFIR</item>
				<item>CHINA</item>
				<item>SUPERCAP</item>
				<item>LATAMCAP</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>4GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>64GB</item>
				<item>128GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=64MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>64MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>gray</item>
				<item>white</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=false</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>false</item>
			</string-array>

			<string name="nfc/.auto">key=hwid;index=2;map=1:true,2:false,3:true,4:false,5:true,6:true,7:false</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

			<string name="fir/.auto">key=hwid;index=2;map=1:false,2:false,3:true,4:true,5:false,6:false,7:false</string>
			<string name="fir/.chosen">mmi,</string>
			<string name="fir/.system">ro.vendor.hw.</string>
			<string-array name="fir/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="sku_variant/.cmdline">androidboot.</string>
			<string-array name="sku_variant/.range">
				<item>n</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<sku-variants export="ro.vendor.hw.sku_variant" writeback="sku_variant">
				<!-- ... same format as before ... -->
				<variant name="n">
					<string name="nfc">true</string>
				</variant>
			</sku-variants>

			<!-- Products describe mapping of feature combinations to marketing names,
				to be set in property indicated by "export" -->
			<products export="ro.vendor.product.display" default="moto g&#x2079; power">
			</products>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<variant name="fdn">
					<string name="ro.vendor.mot.factory">true</string>
				</variant>
				<variant name="b">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
				</variant>
				<variant name="d">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
				</variant>
				<variant name="dn">
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
				</variant>
				<variant name="n">
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="capri" version="1.6">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
				<!-- Battery capacity -->
				<item>batt</item>
				<!-- SKU variant -->
				<item>sku_variant</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:LATAM,3:EUAPEM,4:LENOVO,5:INDIA</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>LATAM</item>
				<item>EUAPEM</item>
				<item>LENOVO</item>
				<item>INDIA</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>4GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>64GB</item>
				<item>128GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=48MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>48MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>misty</item>
				<item>twilight</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=false</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>false</item>
			</string-array>

			<string name="nfc/.auto">key=hwid;index=2;map=1:false,3:true,4:true,5:false</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

			<string name="batt/.auto">key=hwid;index=2;map=1:5000,3:5000,4:5000,5:6000</string>
			<string name="batt/.chosen">mmi,</string>
			<string name="batt/.system">ro.vendor.hw.</string>
			<string-array name="batt/.range">
				<item>5000</item>
				<item>6000</item>
			</string-array>

			<string name="sku_variant/.cmdline">androidboot.</string>
			<string-array name="sku_variant/.range">
				<item>n</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<products export="ro.vendor.product.display" default="moto g&#x00B9;&#x2070;">
				<product name="moto g&#x00B9;&#x2070; power" >
					<string name="ro.boot.carrier">retin</string>
				</product>
				<product-1 name="moto g&#x00B9;&#x2070;&#x207F; power" >
					<string name="ro.boot.carrier">retmea</string>
				</product-1>
			</products>

			<gabuttons export="ro.vendor.hw.gabutton" default="true">
			</gabuttons>

			<sku-variants export="ro.vendor.hw.sku_variant" writeback="sku_variant">
				<!-- ... same format as before ... -->
				<variant name="n">
					<string name="nfc">true</string>
				</variant>
			</sku-variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<variant name="f">
					<string name="ro.vendor.mot.factory">true</string>
				</variant>
				<variant name="b">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
				</variant>
				<variant name="d">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
				</variant>
				<variant name="dn">
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
				</variant>
				<variant name="n">
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="caprip" version="1.4">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
				<!-- SKU variant -->
				<item>sku_variant</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:LATAM,3:EUAPEM,4:LENOVO,5:CHINA,6:EUAPEM</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>LATAM</item>
				<item>EUAPEM</item>
				<item>LENOVO</item>
				<item>CHINA</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>4GB</item>
				<item>6GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>64GB</item>
				<item>128GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=64MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>64MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>blue</item>
				<item>green</item>
				<item>pink</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">key=hwid;index=2;map=1:false,3:false,4:false,5:false,6:true</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="nfc/.auto">key=hwid;index=2;map=1:false,3:true,4:true,5:false,6:true</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

			<string name="sku_variant/.cmdline">androidboot.</string>
			<string-array name="sku_variant/.range">
				<item>nc</item>
				<item>n</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

                        <products export="ro.vendor.product.display" default="moto g&#x00B3;&#x2070;">
				<product name="moto g&#x00B3;&#x2070;&#x207F;" >
					<string name="ro.boot.carrier">retmea</string>
				</product>
			</products>
			<gabuttons export="ro.vendor.hw.gabutton" default="true">
			</gabuttons>
			<sku-variants export="ro.vendor.hw.sku_variant" writeback="sku_variant">
				<!-- ... same format as before ... -->
				<variant name="nc">
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="n">
					<string name="nfc">true</string>
				</variant>
			</sku-variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<!-- ... SKUs without ecompass ... -->
				<variant name="f">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="b">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="n">
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="d">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
					<string name="ecompass">false</string>
				</variant>
				<variant name="dn">
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
					<string name="ecompass">false</string>
				</variant>
				<!-- ... SKUs with ecompass ... -->
				<variant name="fc">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="bc">
					<string name="dualsim">false</string>
					<string name="nfc">false</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="nc">
					<string name="dualsim">false</string>
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="dc">
					<string name="dualsim">true</string>
					<string name="nfc">false</string>
					<string name="ecompass">true</string>
				</variant>
				<variant name="dnc">
					<string name="dualsim">true</string>
					<string name="nfc">true</string>
					<string name="ecompass">true</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="rhode" version="0.9">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=4:EUAPEM,5:LATAM</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>EUAPEM</item>
				<item>LATAM</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>4GB</item>
				<item>6GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>64GB</item>
				<item>128GB</item>
				<item>256GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=64MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>64MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>blue</item>
				<item>green</item>
				<item>pink</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=true</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>true</item>
			</string-array>

			<string name="nfc/.auto">default=samsung</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>samsung</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<!-- ... SKUs without ecompass ... -->
				<variant name="b">
					<string name="dualsim">false</string>
				</variant>
			</skus>
		</mappings>
	</device>

	<device name="hawao" version="0.4">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:LATAM,2:EUAPEM</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>LATAM</item>
				<item>EUAPEM</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>4GB</item>
				<item>6GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>64GB</item>
				<item>128GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=50MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>50MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>blue</item>
				<item>green</item>
				<item>pink</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=true</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>true</item>
			</string-array>

			<string name="nfc/.auto">default=samsung</string>
			<string name="nfc/.chosen">mmi,</string>
			<string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>samsung</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>

		</constraints>

		<mappings>
			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<!-- ... SKUs without ecompass ... -->
				<!-- ... same format as variants/products ... -->
                                <variant name="f">
                                        <string name="ro.vendor.mot.factory">true</string>
                                </variant>
                                <variant name="b">
                                        <string name="dualsim">false</string>
                                        <string name="nfc">false</string>
                                </variant>
                                <variant name="n">
                                        <string name="dualsim">false</string>
                                        <string name="nfc">samsung</string>
                                </variant>
                                <variant name="d">
                                        <string name="dualsim">true</string>
                                        <string name="nfc">false</string>
                                </variant>
                                <variant name="dn">
                                        <string name="dualsim">true</string>
                                        <string name="nfc">samsung</string>
                                </variant>
			</skus>
		</mappings>
	</device>

	<device name="devon" version="0.8">

		<!-- Features list variable hardware components for this device -->
		<features>
			<string-array name=".features">
				<!-- RF banding -->
				<item>radio</item>
				<!-- RAM size -->
				<item>ram</item>
				<!-- Storage size -->
				<item>storage</item>
				<!-- Dual SIM function -->
				<item>dualsim</item>
				<!-- Camera imager resolution -->
				<item>imager</item>
				<!-- Front color -->
				<item>frontcolor</item>
				<!-- Fingerprint sensor -->
				<item>fps</item>
				<!-- Near Field Communication function -->
				<item>nfc</item>
				<!-- eCompass -->
				<item>ecompass</item>
				<!-- Digital TV function -->
				<item>dtv</item>
				<!--SKU variant -->
				<item>sku_variant</item>
			</string-array>
		</features>

		<!-- Attributes list allowed values for features -->
		<attributes>
			<string-array name=".attributes">
				<!-- range is a comma-separated list of allowed string values -->
				<item>.range</item>
				<!-- cmdline items must be exported to kernel cmdline, with prefix given in the value -->
				<item>.cmdline</item>
				<!-- chosen items must be exported to kernel devtree, with prefix given in the value -->
				<item>.chosen</item>
				<!-- system items must be exported as system property, with prefix given in the value -->
				<item>.system</item>
				<!-- same format as before, plus new attribute ".auto" -->
				<!-- auto indicates BL should auto-fill respective tag if it is empty -->
				<!-- this can work either using "hwid", "hwprobe" or "uspace" method -->
				<item>.auto</item>
			</string-array>
		</attributes>

		<!-- Constraints describe interpretation of attributes, and may contain data to feed to BL -->
		<constraints>
			<!-- look up value by matching "hwid" table, combination with current device,
				then parsing out field indicated by "index",
				and then translating the field as prescribed by "map" -->
			<string name="radio/.auto">key=hwid;index=2;map=1:LATAM,2:EU,3:INDIA,4:APEM</string>
			<string name="radio/.cmdline">androidboot.</string>
			<string name="radio/.system">ro.vendor.hw.</string>
			<string-array name="radio/.range">
				<item>LATAM</item>
				<item>EU</item>
				<item>INDIA</item>
				<item>APEM</item>
			</string-array>

			<!-- use result of ram HW detection to fill the field -->
			<string name="ram/.auto">key=hwprobe;index=__ram</string>
			<string name="ram/.system">ro.vendor.hw.</string>
			<string-array name="ram/.range">
				<item>4GB</item>
				<item>6GB</item>
				<item>8GB</item>
			</string-array>

			<!-- use result of storage HW detection to fill the field -->
			<string name="storage/.auto">key=hwprobe;index=__storage</string>
			<string name="storage/.system">ro.vendor.hw.</string>
			<string-array name="storage/.range">
				<item>64GB</item>
				<item>128GB</item>
				<item>256GB</item>
			</string-array>

			<string name="dualsim/.auto">default=true</string>
			<string name="dualsim/.cmdline">androidboot.</string>
			<string name="dualsim/.system">ro.vendor.hw.</string>
			<string-array name="dualsim/.range">
				<item>true</item>
				<item>false</item>
			</string-array>

			<string name="imager/.auto">default=50MP</string>
			<string name="imager/.chosen">mmi,</string>
			<string name="imager/.system">ro.vendor.hw.</string>
			<string-array name="imager/.range">
				<item>50MP</item>
			</string-array>

			<!-- frontcolor has to be programmed explicitly -->
			<string name="frontcolor/.system">ro.vendor.hw.</string>
			<string-array name="frontcolor/.range">
				<item>blue</item>
				<item>green</item>
				<item>pink</item>
				<item>other</item>
			</string-array>

			<string name="fps/.auto">default=true</string>
			<string name="fps/.chosen">mmi,</string>
			<string name="fps/.system">ro.vendor.hw.</string>
			<string-array name="fps/.range">
				<item>true</item>
			</string-array>

			<string name="ecompass/.auto">default=true</string>
			<string name="ecompass/.chosen">mmi,</string>
			<string name="ecompass/.system">ro.vendor.hw.</string>
			<string-array name="ecompass/.range">
				<item>true</item>
			</string-array>

			<string name="nfc/.auto">key=hwid;index=2;map=1:false,2:st,3:false,4:st</string>
			<string name="nfc/.chosen">mmi,</string>
		        <string name="nfc/.system">ro.vendor.hw.</string>
			<string-array name="nfc/.range">
				<item>st</item>
				<item>false</item>
			</string-array>

			<string name="sku_variant/.cmdline">androidboot.</string>
			<string-array name="sku_variant/.range">
				<item>n</item>
			</string-array>

			<string name="dtv/.auto">default=false</string>
			<string name="dtv/.chosen">mmi,</string>
			<string name="dtv/.system">ro.vendor.hw.</string>
			<string-array name="dtv/.range">
				<item>false</item>
			</string-array>
		</constraints>

		<mappings>
			<sku-variants export="ro.vendor.hw.sku_variant" writeback="sku_variant">
				<!-- ... same format as before ... -->
				<variant name="n">
					<string name="nfc">st</string>
				</variant>
			</sku-variants>

			<!-- Variants describe mapping of feature combinations to device fingerprints,
				to be set in property indicated by "export" -->
			<variants export="ro.vendor.hw.variant" append="ro.vendor.product.device,ro.vendor.product.name,ro.product.device,ro.product.name">
				<!-- ... same format as before ... -->
			</variants>

			<!-- SKUs describe mapping of feature combinations to factory SKUs,
				to be set in property indicated by "export" -->
			<skus export="ro.vendor.product.hardware.sku.variant">
				<!-- ... same format as variants/products ... -->
				<!-- ... SKUs without ecompass ... -->
				<!-- ... same format as variants/products ... -->
                                <variant name="f">
					<string name="ro.vendor.mot.factory">true</string>
					<string name="nfc">false</string>
				</variant>
				<variant name="fn">
                                        <string name="ro.vendor.mot.factory">true</string>
                                        <string name="nfc">st</string>
                                </variant>
                                <variant name="b">
                                        <string name="dualsim">false</string>
                                        <string name="nfc">false</string>
                                </variant>
                                <variant name="n">
                                        <string name="dualsim">false</string>
                                        <string name="nfc">st</string>
                                </variant>
                                <variant name="d">
                                        <string name="dualsim">true</string>
                                        <string name="nfc">false</string>
                                </variant>
                                <variant name="dn">
                                        <string name="dualsim">true</string>
                                        <string name="nfc">st</string>
                                </variant>
			</skus>
		</mappings>
	</device>
</validation>

