16f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/*
26f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Copyright (C) 2015 The Android Open Source Project
36f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski *
46f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
56f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * you may not use this file except in compliance with the License.
66f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * You may obtain a copy of the License at
76f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski *
86f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
96f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski *
106f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Unless required by applicable law or agreed to in writing, software
116f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
126f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * See the License for the specific language governing permissions and
146f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * limitations under the License.
156f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */
166f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski
1775f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski#include "SdkConstants.h"
1875f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski
1975f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski#include <algorithm>
206f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include <string>
216f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include <unordered_map>
2275f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski#include <vector>
236f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski
24d5083f6f6b9bc76bbe64052bcec639eee752a321Adam Lesinskiusing android::StringPiece;
25d5083f6f6b9bc76bbe64052bcec639eee752a321Adam Lesinski
266f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskinamespace aapt {
276f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski
28d0f116b619feede0cfdb647157ce5ab4d50a1c46Adam Lesinskistatic const char* sDevelopmentSdkCodeName = "O";
29c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinskistatic ApiVersion sDevelopmentSdkLevel = 26;
30fb6312fe93a8544e6a95d1c619c8cea3940cbe1aAdam Lesinski
31c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinskistatic const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = {
32cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x021c, 1},
33cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x021d, 2},
34cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x0269, SDK_CUPCAKE},
35cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x028d, SDK_DONUT},
36cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x02ad, SDK_ECLAIR},
37cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x02b3, SDK_ECLAIR_0_1},
38cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x02b5, SDK_ECLAIR_MR1},
39cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x02bd, SDK_FROYO},
40cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x02cb, SDK_GINGERBREAD},
41cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x0361, SDK_HONEYCOMB},
42cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x0363, SDK_HONEYCOMB_MR1},
43cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x0366, SDK_HONEYCOMB_MR2},
44cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x03a6, SDK_ICE_CREAM_SANDWICH},
45cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x03ae, SDK_JELLY_BEAN},
46cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x03cc, SDK_JELLY_BEAN_MR1},
47cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x03da, SDK_JELLY_BEAN_MR2},
48cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x03f1, SDK_KITKAT},
49cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x03f6, SDK_KITKAT_WATCH},
50cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {0x04ce, SDK_LOLLIPOP},
51c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski    {0x04d8, SDK_LOLLIPOP_MR1},
52c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski    {0x04f1, SDK_MARSHMALLOW},
53c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski    {0x0527, SDK_NOUGAT},
54c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski    {0x0530, SDK_NOUGAT_MR1},
55c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski    {0x0568, SDK_O},
5675f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski};
5775f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski
58c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinskistatic bool less_entry_id(const std::pair<uint16_t, ApiVersion>& p, uint16_t entryId) {
59cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  return p.first < entryId;
6075f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski}
6175f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski
62c744ae8aca97edfb2422598ea620e8219449fa9bAdam LesinskiApiVersion FindAttributeSdkLevel(const ResourceId& id) {
63c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski  if (id.package_id() != 0x01 || id.type_id() != 0x01) {
64cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    return 0;
65cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  }
66c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski  auto iter = std::lower_bound(sAttrIdMap.begin(), sAttrIdMap.end(), id.entry_id(), less_entry_id);
67cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  if (iter == sAttrIdMap.end()) {
68cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    return SDK_LOLLIPOP_MR1;
69cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  }
70cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  return iter->second;
7175f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski}
7275f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski
73c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinskistatic const std::unordered_map<std::string, ApiVersion> sAttrMap = {
74cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"marqueeRepeatLimit", 2},
75cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowNoDisplay", 3},
76cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"backgroundDimEnabled", 3},
77cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"inputType", 3},
78cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isDefault", 3},
79cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowDisablePreview", 3},
80cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"privateImeOptions", 3},
81cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"editorExtras", 3},
82cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"settingsActivity", 3},
83cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollEnabled", 3},
84cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reqTouchScreen", 3},
85cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reqKeyboardType", 3},
86cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reqHardKeyboard", 3},
87cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reqNavigation", 3},
88cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowSoftInputMode", 3},
89cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeFullscreenBackground", 3},
90cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"noHistory", 3},
91cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"headerDividersEnabled", 3},
92cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"footerDividersEnabled", 3},
93cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"candidatesTextStyleSpans", 3},
94cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"smoothScrollbar", 3},
95cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reqFiveWayNav", 3},
96cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyBackground", 3},
97cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyTextSize", 3},
98cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"labelTextSize", 3},
99cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyTextColor", 3},
100cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyPreviewLayout", 3},
101cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyPreviewOffset", 3},
102cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyPreviewHeight", 3},
103cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"verticalCorrection", 3},
104cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"popupLayout", 3},
105cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"state_long_pressable", 3},
106cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyWidth", 3},
107cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyHeight", 3},
108cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"horizontalGap", 3},
109cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"verticalGap", 3},
110cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"rowEdgeFlags", 3},
111cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"codes", 3},
112cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"popupKeyboard", 3},
113cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"popupCharacters", 3},
114cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyEdgeFlags", 3},
115cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isModifier", 3},
116cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isSticky", 3},
117cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isRepeatable", 3},
118cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"iconPreview", 3},
119cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyOutputText", 3},
120cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyLabel", 3},
121cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyIcon", 3},
122cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyboardMode", 3},
123cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isScrollContainer", 3},
124cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fillEnabled", 3},
125cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"updatePeriodMillis", 3},
126cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"initialLayout", 3},
127cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"voiceSearchMode", 3},
128cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"voiceLanguageModel", 3},
129cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"voicePromptText", 3},
130cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"voiceLanguage", 3},
131cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"voiceMaxResults", 3},
132cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"bottomOffset", 3},
133cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"topOffset", 3},
134cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"allowSingleTap", 3},
135cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"handle", 3},
136cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"content", 3},
137cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"animateOnClick", 3},
138cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"configure", 3},
139cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"hapticFeedbackEnabled", 3},
140cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"innerRadius", 3},
141cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"thickness", 3},
142cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"sharedUserLabel", 3},
143cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dropDownWidth", 3},
144cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dropDownAnchor", 3},
145cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeOptions", 3},
146cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeActionLabel", 3},
147cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeActionId", 3},
148cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeExtractEnterAnimation", 3},
149cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeExtractExitAnimation", 3},
150cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"tension", 4},
151cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"extraTension", 4},
152cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"anyDensity", 4},
153cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchSuggestThreshold", 4},
154cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"includeInGlobalSearch", 4},
155cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"onClick", 4},
156cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"targetSdkVersion", 4},
157cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"maxSdkVersion", 4},
158cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"testOnly", 4},
159cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"contentDescription", 4},
160cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"gestureStrokeWidth", 4},
161cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"gestureColor", 4},
162cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"uncertainGestureColor", 4},
163cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fadeOffset", 4},
164cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fadeDuration", 4},
165cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"gestureStrokeType", 4},
166cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"gestureStrokeLengthThreshold", 4},
167cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"gestureStrokeSquarenessThreshold", 4},
168cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"gestureStrokeAngleThreshold", 4},
169cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"eventsInterceptionEnabled", 4},
170cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fadeEnabled", 4},
171cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"backupAgent", 4},
172cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"allowBackup", 4},
173cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"glEsVersion", 4},
174cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"queryAfterZeroResults", 4},
175cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dropDownHeight", 4},
176cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"smallScreens", 4},
177cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"normalScreens", 4},
178cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"largeScreens", 4},
179cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressBarStyleInverse", 4},
180cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressBarStyleSmallInverse", 4},
181cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressBarStyleLargeInverse", 4},
182cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchSettingsDescription", 4},
183cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textColorPrimaryInverseDisableOnly", 4},
184cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"autoUrlDetect", 4},
185cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"resizeable", 4},
186cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"required", 5},
187cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"accountType", 5},
188cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"contentAuthority", 5},
189cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"userVisible", 5},
190cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowShowWallpaper", 5},
191cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperOpenEnterAnimation", 5},
192cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperOpenExitAnimation", 5},
193cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperCloseEnterAnimation", 5},
194cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperCloseExitAnimation", 5},
195cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperIntraOpenEnterAnimation", 5},
196cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperIntraOpenExitAnimation", 5},
197cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperIntraCloseEnterAnimation", 5},
198cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"wallpaperIntraCloseExitAnimation", 5},
199cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"supportsUploading", 5},
200cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"killAfterRestore", 5},
201cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"restoreNeedsApplication", 5},
202cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"smallIcon", 5},
203cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"accountPreferences", 5},
204cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAppearanceSearchResultSubtitle", 5},
205cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAppearanceSearchResultTitle", 5},
206cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"summaryColumn", 5},
207cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"detailColumn", 5},
208cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"detailSocialSummary", 5},
209cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"thumbnail", 5},
210cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"detachWallpaper", 5},
211cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"finishOnCloseSystemDialogs", 5},
212cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"scrollbarFadeDuration", 5},
213cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"scrollbarDefaultDelayBeforeFade", 5},
214cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fadeScrollbars", 5},
215cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorBackgroundCacheHint", 5},
216cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dropDownHorizontalOffset", 5},
217cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dropDownVerticalOffset", 5},
218cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"quickContactBadgeStyleWindowSmall", 6},
219cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"quickContactBadgeStyleWindowMedium", 6},
220cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"quickContactBadgeStyleWindowLarge", 6},
221cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"quickContactBadgeStyleSmallWindowSmall", 6},
222cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"quickContactBadgeStyleSmallWindowMedium", 6},
223cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"quickContactBadgeStyleSmallWindowLarge", 6},
224cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"author", 7},
225cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"autoStart", 7},
226cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"expandableListViewWhiteStyle", 8},
227cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"installLocation", 8},
228cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"vmSafeMode", 8},
229cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"webTextViewStyle", 8},
230cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"restoreAnyVersion", 8},
231cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"tabStripLeft", 8},
232cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"tabStripRight", 8},
233cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"tabStripEnabled", 8},
234cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"logo", 9},
235cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"xlargeScreens", 9},
236cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"immersive", 9},
237cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"overScrollMode", 9},
238cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"overScrollHeader", 9},
239cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"overScrollFooter", 9},
240cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"filterTouchesWhenObscured", 9},
241cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textSelectHandleLeft", 9},
242cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textSelectHandleRight", 9},
243cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textSelectHandle", 9},
244cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textSelectHandleWindowStyle", 9},
245cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"popupAnimationStyle", 9},
246cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"screenSize", 9},
247cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"screenDensity", 9},
248cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"allContactsName", 11},
249cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowActionBar", 11},
250cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarStyle", 11},
251cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"navigationMode", 11},
252cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"displayOptions", 11},
253cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"subtitle", 11},
254cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"customNavigationLayout", 11},
255cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"hardwareAccelerated", 11},
256cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"measureWithLargestChild", 11},
257cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"animateFirstView", 11},
258cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dropDownSpinnerStyle", 11},
259cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionDropDownStyle", 11},
260cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionButtonStyle", 11},
261cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"showAsAction", 11},
262cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"previewImage", 11},
263cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeBackground", 11},
264cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeCloseDrawable", 11},
265cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowActionModeOverlay", 11},
266cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"valueFrom", 11},
267cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"valueTo", 11},
268cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"valueType", 11},
269cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"propertyName", 11},
270cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"ordering", 11},
271cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragment", 11},
272cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowActionBarOverlay", 11},
273cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentOpenEnterAnimation", 11},
274cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentOpenExitAnimation", 11},
275cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentCloseEnterAnimation", 11},
276cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentCloseExitAnimation", 11},
277cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentFadeEnterAnimation", 11},
278cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentFadeExitAnimation", 11},
279cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarSize", 11},
280cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeSubtypeLocale", 11},
281cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeSubtypeMode", 11},
282cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"imeSubtypeExtraValue", 11},
283cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"splitMotionEvents", 11},
284cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listChoiceBackgroundIndicator", 11},
285cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"spinnerMode", 11},
286cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"animateLayoutChanges", 11},
287cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarTabStyle", 11},
288cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarTabBarStyle", 11},
289cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarTabTextStyle", 11},
290cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionOverflowButtonStyle", 11},
291cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeCloseButtonStyle", 11},
292cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"titleTextStyle", 11},
293cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"subtitleTextStyle", 11},
294cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"iconifiedByDefault", 11},
295cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionLayout", 11},
296cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionViewClass", 11},
297cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"activatedBackgroundIndicator", 11},
298cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"state_activated", 11},
299cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listPopupWindowStyle", 11},
300cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"popupMenuStyle", 11},
301cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAppearanceLargePopupMen", 11},
302cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAppearanceSmallPopupMen", 11},
303cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"breadCrumbTitle", 11},
304cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"breadCrumbShortTitle", 11},
305cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listDividerAlertDialog", 11},
306cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textColorAlertDialogListItem", 11},
307cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"loopViews", 11},
308cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dialogTheme", 11},
309cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"alertDialogTheme", 11},
310cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dividerVertical", 11},
311cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"homeAsUpIndicator", 11},
312cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"enterFadeDuration", 11},
313cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"exitFadeDuration", 11},
314cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"selectableItemBackground", 11},
315cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"autoAdvanceViewId", 11},
316cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"useIntrinsicSizeAsMinimum", 11},
317cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeCutDrawable", 11},
318cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeCopyDrawable", 11},
319cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModePasteDrawable", 11},
320cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textEditPasteWindowLayout", 11},
321cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textEditNoPasteWindowLayout", 11},
322cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textIsSelectable", 11},
323cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowEnableSplitTouch", 11},
324cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"indeterminateProgressStyle", 11},
325cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressBarPadding", 11},
326cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"animationResolution", 11},
327cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"state_accelerated", 11},
328cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"baseline", 11},
329cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"homeLayout", 11},
330cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"opacity", 11},
331cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"alpha", 11},
332cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"transformPivotX", 11},
333cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"transformPivotY", 11},
334cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"translationX", 11},
335cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"translationY", 11},
336cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"scaleX", 11},
337cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"scaleY", 11},
338cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"rotation", 11},
339cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"rotationX", 11},
340cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"rotationY", 11},
341cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"showDividers", 11},
342cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dividerPadding", 11},
343cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"borderlessButtonStyle", 11},
344cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dividerHorizontal", 11},
345cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"itemPadding", 11},
346cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"buttonBarStyle", 11},
347cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"buttonBarButtonStyle", 11},
348cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"segmentedButtonStyle", 11},
349cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"staticWallpaperPreview", 11},
350cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"allowParallelSyncs", 11},
351cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isAlwaysSyncable", 11},
352cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"verticalScrollbarPosition", 11},
353cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollAlwaysVisible", 11},
354cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollThumbDrawable", 11},
355cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollPreviewBackgroundLeft", 11},
356cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollPreviewBackgroundRight", 11},
357cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollTrackDrawable", 11},
358cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollOverlayPosition", 11},
359cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"customTokens", 11},
360cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"nextFocusForward", 11},
361cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"firstDayOfWeek", 11},
362cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"showWeekNumber", 11},
363cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"minDate", 11},
364cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"maxDate", 11},
365cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"shownWeekCount", 11},
366cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"selectedWeekBackgroundColor", 11},
367cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"focusedMonthDateColor", 11},
368cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"unfocusedMonthDateColor", 11},
369cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"weekNumberColor", 11},
370cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"weekSeparatorLineColor", 11},
371cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"selectedDateVerticalBar", 11},
372cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"weekDayTextAppearance", 11},
373cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dateTextAppearance", 11},
374cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"solidColor", 11},
375cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"spinnersShown", 11},
376cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"calendarViewShown", 11},
377cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"state_multiline", 11},
378cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"detailsElementBackground", 11},
379cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textColorHighlightInverse", 11},
380cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textColorLinkInverse", 11},
381cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"editTextColor", 11},
382cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"editTextBackground", 11},
383cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"horizontalScrollViewStyle", 11},
384cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layerType", 11},
385cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"alertDialogIcon", 11},
386cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowMinWidthMajor", 11},
387cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowMinWidthMinor", 11},
388cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"queryHint", 11},
389cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollTextColor", 11},
390cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"largeHeap", 11},
391cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowCloseOnTouchOutside", 11},
392cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"datePickerStyle", 11},
393cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"calendarViewStyle", 11},
394cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textEditSidePasteWindowLayout", 11},
395cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textEditSideNoPasteWindowLayout", 11},
396cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionMenuTextAppearance", 11},
397cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionMenuTextColor", 11},
398cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textCursorDrawable", 12},
399cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"resizeMode", 12},
400cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"requiresSmallestWidthDp", 12},
401cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"compatibleWidthLimitDp", 12},
402cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"largestWidthLimitDp", 12},
403cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"state_hovered", 13},
404cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"state_drag_can_accept", 13},
405cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"state_drag_hovered", 13},
406cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"stopWithTask", 13},
407cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"switchTextOn", 13},
408cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"switchTextOff", 13},
409cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"switchPreferenceStyle", 13},
410cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"switchTextAppearance", 13},
411cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"track", 13},
412cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"switchMinWidth", 13},
413cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"switchPadding", 13},
414cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"thumbTextPadding", 13},
415cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textSuggestionsWindowStyle", 13},
416cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textEditSuggestionItemLayout", 13},
417cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"rowCount", 13},
418cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"rowOrderPreserved", 13},
419cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"columnCount", 13},
420cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"columnOrderPreserved", 13},
421cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"useDefaultMargins", 13},
422cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"alignmentMode", 13},
423cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_row", 13},
424cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_rowSpan", 13},
425cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_columnSpan", 13},
426cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeSelectAllDrawable", 13},
427cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isAuxiliary", 13},
428cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"accessibilityEventTypes", 13},
429cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"packageNames", 13},
430cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"accessibilityFeedbackType", 13},
431cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"notificationTimeout", 13},
432cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"accessibilityFlags", 13},
433cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"canRetrieveWindowContent", 13},
434cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listPreferredItemHeightLarge", 13},
435cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listPreferredItemHeightSmall", 13},
436cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarSplitStyle", 13},
437cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionProviderClass", 13},
438cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"backgroundStacked", 13},
439cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"backgroundSplit", 13},
440cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAllCaps", 13},
441cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorPressedHighlight", 13},
442cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorLongPressedHighlight", 13},
443cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorFocusedHighlight", 13},
444cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorActivatedHighlight", 13},
445cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorMultiSelectHighlight", 13},
446cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"drawableStart", 13},
447cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"drawableEnd", 13},
448cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeStyle", 13},
449cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"minResizeWidth", 13},
450cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"minResizeHeight", 13},
451cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarWidgetTheme", 13},
452cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"uiOptions", 13},
453cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"subtypeLocale", 13},
454cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"subtypeExtraValue", 13},
455cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarDivider", 13},
456cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarItemBackground", 13},
457cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeSplitBackground", 13},
458cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAppearanceListItem", 13},
459cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAppearanceListItemSmall", 13},
460cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"targetDescriptions", 13},
461cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"directionDescriptions", 13},
462cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"overridesImplicitlyEnabledSubtype", 13},
463cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listPreferredItemPaddingLeft", 13},
464cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listPreferredItemPaddingRight", 13},
465cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"requiresFadingEdge", 13},
466cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"publicKey", 13},
467cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"parentActivityName", 16},
468cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isolatedProcess", 16},
469cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"importantForAccessibility", 16},
470cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keyboardLayout", 16},
471cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fontFamily", 16},
472cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"mediaRouteButtonStyle", 16},
473cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"mediaRouteTypes", 16},
474cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"supportsRtl", 17},
475cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textDirection", 17},
476cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAlignment", 17},
477cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layoutDirection", 17},
478cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"paddingStart", 17},
479cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"paddingEnd", 17},
480cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_marginStart", 17},
481cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_marginEnd", 17},
482cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_toStartOf", 17},
483cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_toEndOf", 17},
484cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_alignStart", 17},
485cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_alignEnd", 17},
486cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_alignParentStart", 17},
487cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_alignParentEnd", 17},
488cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listPreferredItemPaddingStart", 17},
489cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"listPreferredItemPaddingEnd", 17},
490cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"singleUser", 17},
491cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"presentationTheme", 17},
492cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"subtypeId", 17},
493cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"initialKeyguardLayout", 17},
494cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"widgetCategory", 17},
495cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"permissionGroupFlags", 17},
496cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"labelFor", 17},
497cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"permissionFlags", 17},
498cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"checkedTextViewStyle", 17},
499cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"showOnLockScreen", 17},
500cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"format12Hour", 17},
501cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"format24Hour", 17},
502cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"timeZone", 17},
503cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"mipMap", 18},
504cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"mirrorForRtl", 18},
505cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowOverscan", 18},
506cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"requiredForAllUsers", 18},
507cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"indicatorStart", 18},
508cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"indicatorEnd", 18},
509cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"childIndicatorStart", 18},
510cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"childIndicatorEnd", 18},
511cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"restrictedAccountType", 18},
512cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"requiredAccountType", 18},
513cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"canRequestTouchExplorationMode", 18},
514cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"canRequestEnhancedWebAccessibility", 18},
515cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"canRequestFilterKeyEvents", 18},
516cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layoutMode", 18},
517cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"keySet", 19},
518cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"targetId", 19},
519cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fromScene", 19},
520cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"toScene", 19},
521cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"transition", 19},
522cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"transitionOrdering", 19},
523cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fadingMode", 19},
524cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"startDelay", 19},
525cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"ssp", 19},
526cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"sspPrefix", 19},
527cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"sspPattern", 19},
528cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"addPrintersActivity", 19},
529cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"vendor", 19},
530cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"category", 19},
531cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isAsciiCapable", 19},
532cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"autoMirrored", 19},
533cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"supportsSwitchingToNextInputMethod", 19},
534cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"requireDeviceUnlock", 19},
535cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"apduServiceBanner", 19},
536cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"accessibilityLiveRegion", 19},
537cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowTranslucentStatus", 19},
538cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowTranslucentNavigation", 19},
539cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"advancedPrintOptionsActivity", 19},
540cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"banner", 20},
541cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowSwipeToDismiss", 20},
542cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"isGame", 20},
543cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"allowEmbedded", 20},
544cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"setupActivity", 20},
545cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fastScrollStyle", 21},
546cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowContentTransitions", 21},
547cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowContentTransitionManager", 21},
548cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"translationZ", 21},
549cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"tintMode", 21},
550cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"controlX1", 21},
551cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"controlY1", 21},
552cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"controlX2", 21},
553cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"controlY2", 21},
554cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"transitionName", 21},
555cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"transitionGroup", 21},
556cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"viewportWidth", 21},
557cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"viewportHeight", 21},
558cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fillColor", 21},
559cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"pathData", 21},
560cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"strokeColor", 21},
561cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"strokeWidth", 21},
562cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"trimPathStart", 21},
563cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"trimPathEnd", 21},
564cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"trimPathOffset", 21},
565cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"strokeLineCap", 21},
566cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"strokeLineJoin", 21},
567cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"strokeMiterLimit", 21},
568cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorControlNormal", 21},
569cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorControlActivated", 21},
570cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorButtonNormal", 21},
571cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorControlHighlight", 21},
572cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"persistableMode", 21},
573cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"titleTextAppearance", 21},
574cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"subtitleTextAppearance", 21},
575cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"slideEdge", 21},
576cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarTheme", 21},
577cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"textAppearanceListItemSecondary", 21},
578cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorPrimary", 21},
579cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorPrimaryDark", 21},
580cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorAccent", 21},
581cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"nestedScrollingEnabled", 21},
582cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowEnterTransition", 21},
583cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowExitTransition", 21},
584cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowSharedElementEnterTransition", 21},
585cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowSharedElementExitTransition", 21},
586cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowAllowReturnTransitionOverlap", 21},
587cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowAllowEnterTransitionOverlap", 21},
588cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"sessionService", 21},
589cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"stackViewStyle", 21},
590cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"switchStyle", 21},
591cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"elevation", 21},
592cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"excludeId", 21},
593cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"excludeClass", 21},
594cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"hideOnContentScroll", 21},
595cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionOverflowMenuStyle", 21},
596cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"documentLaunchMode", 21},
597cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"maxRecents", 21},
598cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"autoRemoveFromRecents", 21},
599cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"stateListAnimator", 21},
600cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"toId", 21},
601cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fromId", 21},
602cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reversible", 21},
603cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"splitTrack", 21},
604cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"targetName", 21},
605cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"excludeName", 21},
606cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"matchOrder", 21},
607cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowDrawsSystemBarBackgrounds", 21},
608cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"statusBarColor", 21},
609cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"navigationBarColor", 21},
610cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"contentInsetStart", 21},
611cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"contentInsetEnd", 21},
612cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"contentInsetLeft", 21},
613cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"contentInsetRight", 21},
614cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"paddingMode", 21},
615cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_rowWeight", 21},
616cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"layout_columnWeight", 21},
617cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"translateX", 21},
618cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"translateY", 21},
619cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"selectableItemBackgroundBorderless", 21},
620cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"elegantTextHeight", 21},
621cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchKeyphraseId", 21},
622cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchKeyphrase", 21},
623cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchKeyphraseSupportedLocales", 21},
624cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowTransitionBackgroundFadeDuration", 21},
625cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"overlapAnchor", 21},
626cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressTint", 21},
627cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressTintMode", 21},
628cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressBackgroundTint", 21},
629cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"progressBackgroundTintMode", 21},
630cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"secondaryProgressTint", 21},
631cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"secondaryProgressTintMode", 21},
632cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"indeterminateTint", 21},
633cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"indeterminateTintMode", 21},
634cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"backgroundTint", 21},
635cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"backgroundTintMode", 21},
636cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"foregroundTint", 21},
637cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"foregroundTintMode", 21},
638cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"buttonTint", 21},
639cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"buttonTintMode", 21},
640cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"thumbTint", 21},
641cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"thumbTintMode", 21},
642cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fullBackupOnly", 21},
643cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"propertyXName", 21},
644cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"propertyYName", 21},
645cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"relinquishTaskIdentity", 21},
646cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"tileModeX", 21},
647cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"tileModeY", 21},
648cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeShareDrawable", 21},
649cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeFindDrawable", 21},
650cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionModeWebSearchDrawable", 21},
651cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"transitionVisibilityMode", 21},
652cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"minimumHorizontalAngle", 21},
653cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"minimumVerticalAngle", 21},
654cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"maximumAngle", 21},
655cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchViewStyle", 21},
656cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"closeIcon", 21},
657cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"goIcon", 21},
658cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchIcon", 21},
659cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"voiceIcon", 21},
660cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"commitIcon", 21},
661cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"suggestionRowLayout", 21},
662cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"queryBackground", 21},
663cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"submitBackground", 21},
664cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"buttonBarPositiveButtonStyle", 21},
665cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"buttonBarNeutralButtonStyle", 21},
666cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"buttonBarNegativeButtonStyle", 21},
667cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"popupElevation", 21},
668cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"actionBarPopupTheme", 21},
669cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"multiArch", 21},
670cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"touchscreenBlocksFocus", 21},
671cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowElevation", 21},
672cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"launchTaskBehindTargetAnimation", 21},
673cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"launchTaskBehindSourceAnimation", 21},
674cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"restrictionType", 21},
675cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dayOfWeekBackground", 21},
676cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"dayOfWeekTextAppearance", 21},
677cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"headerMonthTextAppearance", 21},
678cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"headerDayOfMonthTextAppearance", 21},
679cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"headerYearTextAppearance", 21},
680cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"yearListItemTextAppearance", 21},
681cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"yearListSelectorColor", 21},
682cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"calendarTextColor", 21},
683cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"recognitionService", 21},
684cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"timePickerStyle", 21},
685cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"timePickerDialogTheme", 21},
686cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"headerTimeTextAppearance", 21},
687cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"headerAmPmTextAppearance", 21},
688cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"numbersTextColor", 21},
689cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"numbersBackgroundColor", 21},
690cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"numbersSelectorColor", 21},
691cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"amPmTextColor", 21},
692cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"amPmBackgroundColor", 21},
693cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"searchKeyphraseRecognitionFlags", 21},
694cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"checkMarkTint", 21},
695cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"checkMarkTintMode", 21},
696cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"popupTheme", 21},
697cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"toolbarStyle", 21},
698cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowClipToOutline", 21},
699cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"datePickerDialogTheme", 21},
700cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"showText", 21},
701cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowReturnTransition", 21},
702cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowReenterTransition", 21},
703cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowSharedElementReturnTransition", 21},
704cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowSharedElementReenterTransition", 21},
705cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"resumeWhilePausing", 21},
706cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"datePickerMode", 21},
707cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"timePickerMode", 21},
708cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"inset", 21},
709cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"letterSpacing", 21},
710cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fontFeatureSettings", 21},
711cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"outlineProvider", 21},
712cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"contentAgeHint", 21},
713cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"country", 21},
714cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowSharedElementsUseOverlay", 21},
715cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reparent", 21},
716cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"reparentWithOverlay", 21},
717cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"ambientShadowAlpha", 21},
718cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"spotShadowAlpha", 21},
719cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"navigationIcon", 21},
720cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"navigationContentDescription", 21},
721cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentExitTransition", 21},
722cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentEnterTransition", 21},
723cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentSharedElementEnterTransition", 21},
724cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentReturnTransition", 21},
725cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentSharedElementReturnTransition", 21},
726cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentReenterTransition", 21},
727cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentAllowEnterTransitionOverlap", 21},
728cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fragmentAllowReturnTransitionOverlap", 21},
729cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"patternPathData", 21},
730cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"strokeAlpha", 21},
731cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"fillAlpha", 21},
732cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"windowActivityTransitions", 21},
733cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    {"colorEdgeEffect", 21}};
7346f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski
735c744ae8aca97edfb2422598ea620e8219449fa9bAdam LesinskiApiVersion FindAttributeSdkLevel(const ResourceName& name) {
736cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  if (name.package != "android" && name.type != ResourceType::kAttr) {
737cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    return 0;
738cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  }
73975f3a55cc569a9b61f540a85d9828e91bdca5047Adam Lesinski
740cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  auto iter = sAttrMap.find(name.entry);
741cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  if (iter != sAttrMap.end()) {
742cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski    return iter->second;
743cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  }
744cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski  return SDK_LOLLIPOP_MR1;
7456f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski}
7466f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski
747c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinskistd::pair<StringPiece, ApiVersion> GetDevelopmentSdkCodeNameAndVersion() {
748c744ae8aca97edfb2422598ea620e8219449fa9bAdam Lesinski  return std::make_pair(StringPiece(sDevelopmentSdkCodeName), sDevelopmentSdkLevel);
749fb6312fe93a8544e6a95d1c619c8cea3940cbe1aAdam Lesinski}
750fb6312fe93a8544e6a95d1c619c8cea3940cbe1aAdam Lesinski
751cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski}  // namespace aapt
752