@sapui5/sap.fe.controls 1.141.1 → 1.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/controls/.library +1 -1
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +3 -2
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +2 -2
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +12 -5
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +14 -6
- package/src/sap/fe/controls/easyFilter/utils.js +57 -12
- package/src/sap/fe/controls/easyFilter/utils.ts +67 -11
- package/src/sap/fe/controls/library.js +1 -1
- package/src/sap/fe/controls/messagebundle.properties +4 -4
- package/src/sap/fe/controls/messagebundle_ar.properties +7 -1
- package/src/sap/fe/controls/messagebundle_bg.properties +7 -1
- package/src/sap/fe/controls/messagebundle_ca.properties +7 -1
- package/src/sap/fe/controls/messagebundle_cnr.properties +7 -1
- package/src/sap/fe/controls/messagebundle_cs.properties +7 -1
- package/src/sap/fe/controls/messagebundle_cy.properties +7 -1
- package/src/sap/fe/controls/messagebundle_da.properties +7 -1
- package/src/sap/fe/controls/messagebundle_de.properties +7 -1
- package/src/sap/fe/controls/messagebundle_el.properties +7 -1
- package/src/sap/fe/controls/messagebundle_en.properties +7 -1
- package/src/sap/fe/controls/messagebundle_en_GB.properties +7 -1
- package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +7 -1
- package/src/sap/fe/controls/messagebundle_es.properties +7 -1
- package/src/sap/fe/controls/messagebundle_es_MX.properties +7 -1
- package/src/sap/fe/controls/messagebundle_et.properties +7 -1
- package/src/sap/fe/controls/messagebundle_fi.properties +7 -1
- package/src/sap/fe/controls/messagebundle_fr.properties +7 -1
- package/src/sap/fe/controls/messagebundle_fr_CA.properties +7 -1
- package/src/sap/fe/controls/messagebundle_hi.properties +7 -1
- package/src/sap/fe/controls/messagebundle_hr.properties +7 -1
- package/src/sap/fe/controls/messagebundle_hu.properties +7 -1
- package/src/sap/fe/controls/messagebundle_id.properties +7 -1
- package/src/sap/fe/controls/messagebundle_it.properties +7 -1
- package/src/sap/fe/controls/messagebundle_iw.properties +7 -1
- package/src/sap/fe/controls/messagebundle_ja.properties +7 -1
- package/src/sap/fe/controls/messagebundle_kk.properties +7 -1
- package/src/sap/fe/controls/messagebundle_ko.properties +7 -1
- package/src/sap/fe/controls/messagebundle_lt.properties +7 -1
- package/src/sap/fe/controls/messagebundle_lv.properties +7 -1
- package/src/sap/fe/controls/messagebundle_mk.properties +7 -1
- package/src/sap/fe/controls/messagebundle_ms.properties +7 -1
- package/src/sap/fe/controls/messagebundle_nl.properties +7 -1
- package/src/sap/fe/controls/messagebundle_no.properties +7 -1
- package/src/sap/fe/controls/messagebundle_pl.properties +7 -1
- package/src/sap/fe/controls/messagebundle_pt.properties +7 -1
- package/src/sap/fe/controls/messagebundle_pt_PT.properties +7 -1
- package/src/sap/fe/controls/messagebundle_ro.properties +7 -1
- package/src/sap/fe/controls/messagebundle_ru.properties +7 -1
- package/src/sap/fe/controls/messagebundle_sh.properties +7 -1
- package/src/sap/fe/controls/messagebundle_sk.properties +7 -1
- package/src/sap/fe/controls/messagebundle_sl.properties +8 -2
- package/src/sap/fe/controls/messagebundle_sr.properties +7 -1
- package/src/sap/fe/controls/messagebundle_sv.properties +7 -1
- package/src/sap/fe/controls/messagebundle_th.properties +7 -1
- package/src/sap/fe/controls/messagebundle_tr.properties +7 -1
- package/src/sap/fe/controls/messagebundle_uk.properties +7 -1
- package/src/sap/fe/controls/messagebundle_vi.properties +7 -1
- package/src/sap/fe/controls/messagebundle_zh_CN.properties +7 -1
- package/src/sap/fe/controls/messagebundle_zh_TW.properties +7 -1
|
@@ -150,15 +150,60 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
|
|
|
150
150
|
return value ? resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_TRUE") : resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_FALSE");
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Handles the single range validation and updates for a filter value.
|
|
155
|
+
* @param filterCriteria The metadata for the filter
|
|
156
|
+
* @param filterValue The filter value to validate
|
|
157
|
+
* @param singleRangeTokenLabels Array to collect labels of invalid single range filters
|
|
158
|
+
* @param singleRangeUsage Record to track usage count of single range filters
|
|
159
|
+
* @returns True if processing should continue, false if it should skip
|
|
160
|
+
*/
|
|
161
|
+
function handleSingleRangeFilter(filterCriteria, filterValue, singleRangeTokenLabels, singleRangeUsage) {
|
|
162
|
+
if (filterCriteria?.filterRestriction !== "SingleRange") {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
const isInvalid = isInvalidSingleRange(filterValue) || (singleRangeUsage[filterValue.name] ?? 0) > 0;
|
|
166
|
+
singleRangeUsage[filterValue.name] = (singleRangeUsage[filterValue.name] ?? 0) + 1;
|
|
167
|
+
if (!isInvalid) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
const label = filterCriteria.label || filterCriteria.name;
|
|
171
|
+
if (!singleRangeTokenLabels.includes(label)) {
|
|
172
|
+
singleRangeTokenLabels.push(label);
|
|
173
|
+
}
|
|
174
|
+
if (filterCriteria.type === "Calendar" || filterCriteria.type === "Time") {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
filterValue.values = [];
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Validates if a filter value violates the SingleRange restriction.
|
|
182
|
+
// Returns true if invalid, false if valid.
|
|
183
|
+
// Rules for SingleRange:
|
|
184
|
+
// - Allowed operators: EQ, LE, LT, GE, GT, BT, NB
|
|
185
|
+
// - Single-value operators (EQ, LE, LT, GE, GT): must have exactly 1 value
|
|
186
|
+
// - Range operators (BT, NB): must have exactly 2 values (lower & upper bound)
|
|
187
|
+
// - Only one condition/token is allowed per property (should be enforced outside)
|
|
188
|
+
//
|
|
154
189
|
function isInvalidSingleRange(filterValue) {
|
|
155
|
-
const
|
|
190
|
+
const singleValueOps = [FilterOperator.EQ, FilterOperator.LE, FilterOperator.LT, FilterOperator.GE, FilterOperator.GT];
|
|
191
|
+
const rangeOps = [FilterOperator.BT, FilterOperator.NB];
|
|
192
|
+
const op = filterValue.operator;
|
|
193
|
+
const valCount = filterValue.values?.length || 0;
|
|
194
|
+
|
|
195
|
+
// Single-value operators → must have exactly 1 value
|
|
196
|
+
if (singleValueOps.includes(op)) {
|
|
197
|
+
return valCount !== 1;
|
|
198
|
+
}
|
|
156
199
|
|
|
157
|
-
//
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
200
|
+
// Range operators (Between / Not Between) → must have exactly 2 values
|
|
201
|
+
if (rangeOps.includes(op)) {
|
|
202
|
+
return valCount !== 2;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Anything else is not allowed for SingleRange
|
|
206
|
+
return true;
|
|
162
207
|
}
|
|
163
208
|
function formatData(tokens, filterValues, filterBarMetadata, setMessageStripForValidatedFilters) {
|
|
164
209
|
if (filterValues) {
|
|
@@ -166,6 +211,7 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
|
|
|
166
211
|
const nonFilterableTokenLabels = [];
|
|
167
212
|
const singleRangeTokenLabels = [];
|
|
168
213
|
const hiddenFilterTokenLabels = [];
|
|
214
|
+
const singleRangeUsage = {};
|
|
169
215
|
for (const filterValue of filterValues) {
|
|
170
216
|
const filterCriteria = filterBarMetadata.find(field => field.name === filterValue.name);
|
|
171
217
|
if (filterCriteria) {
|
|
@@ -179,10 +225,9 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
|
|
|
179
225
|
hiddenFilterTokenLabels.push(filterCriteria.label || filterCriteria.name);
|
|
180
226
|
continue;
|
|
181
227
|
}
|
|
182
|
-
//
|
|
183
|
-
if (filterCriteria
|
|
184
|
-
|
|
185
|
-
filterValue.values = []; // Reset values to avoid adding invalid token values
|
|
228
|
+
// Handles the single range validation and updates for a filter value
|
|
229
|
+
if (!handleSingleRangeFilter(filterCriteria, filterValue, singleRangeTokenLabels, singleRangeUsage)) {
|
|
230
|
+
continue;
|
|
186
231
|
}
|
|
187
232
|
const {
|
|
188
233
|
type
|
|
@@ -258,4 +303,4 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
|
|
|
258
303
|
};
|
|
259
304
|
return EasyFilterUtils;
|
|
260
305
|
}, false);
|
|
261
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsInZhbHVlIiwiaW5kZXgiLCJkZWVwRXF1YWwiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRGF0ZSIsIkZpbHRlck9wZXJhdG9yIiwiR1QiLCJMVCIsIkdFIiwiTEUiLCJFUSIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJTdGFydHNXaXRoIiwiTkUiLCJOb3RDb250YWlucyIsIk5vdEVuZHNXaXRoIiwiTm90U3RhcnRzV2l0aCIsInRvU3RyaW5nIiwibWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAiLCJtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvciIsInZhbHVlcyIsIm5ld1ZhbHVlMSIsIm5ld1ZhbHVlMiIsIkJUIiwiaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMiLCJOQiIsImdldFRleHQiLCJpc0ludmFsaWRTaW5nbGVSYW5nZSIsImZpbHRlclZhbHVlIiwiYWxsb3dlZCIsImluY2x1ZGVzIiwiZm9ybWF0RGF0YSIsInRva2VucyIsImZpbHRlclZhbHVlcyIsImZpbHRlckJhck1ldGFkYXRhIiwic2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVycyIsInZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnMiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMiLCJzaW5nbGVSYW5nZVRva2VuTGFiZWxzIiwiaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMiLCJmaWx0ZXJDcml0ZXJpYSIsImZpbmQiLCJmaWVsZCIsIm5hbWUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJmaWx0ZXJhYmxlIiwicHVzaCIsImxhYmVsIiwiaGlkZGVuRmlsdGVyIiwiZmlsdGVyUmVzdHJpY3Rpb24iLCJ0eXBlIiwidG9rZW5JbmRleCIsImZpbmRJbmRleCIsInRva2VuIiwia2V5Iiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsIkVhc3lGaWx0ZXJVdGlscyIsIm5ld1Rva2VuIiwiYnVzeSIsImN1cnJlbnRUb2tlbiIsImlzUmVxdWlyZWQiLCJtZXNzYWdlcyIsIm5vbkZpbHRlcmFibGVUb2tlbkxhYmVsIiwiam9pbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsidXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcmltaXRpdmVUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IERhdGVGb3JtYXQgZnJvbSBcInNhcC91aS9jb3JlL2Zvcm1hdC9EYXRlRm9ybWF0XCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IERhdGVUaW1lT2Zmc2V0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9EYXRlVGltZU9mZnNldFwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyUmVzdWx0LCBQcm9wZXJ0eU1ldGFkYXRhIH0gZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuaW1wb3J0IHR5cGUge1xuXHRCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdENvZGVMaXN0VHlwZSxcblx0RWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEsXG5cdFRva2VuRGVmaW5pdGlvbixcblx0VG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24sXG5cdFRva2VuVHlwZSxcblx0VmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25cbn0gZnJvbSBcIi4vRWFzeUZpbHRlckJhckNvbnRhaW5lclwiO1xuXG50eXBlIGNvZGVMaXN0VHlwZSA9IFByb3BlcnR5TWV0YWRhdGFbXCJjb2RlTGlzdFwiXTtcbnR5cGUgZmluYWxDb2RlTGlzdFR5cGUgPSB7IHZhbHVlOiBQcmltaXRpdmVUeXBlOyBkZXNjcmlwdGlvbj86IHN0cmluZyB9W107XG5jb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5jb25zdCBkYXRlVGltZU9mZnNldCA9IG5ldyBEYXRlVGltZU9mZnNldCgpO1xuXG5mdW5jdGlvbiBhcmVJdGVtc1NhbWUoXG5cdGFycjE6IHJlYWRvbmx5IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSxcblx0YXJyMjogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdXG4pOiBib29sZWFuIHtcblx0aWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHQvLyBDb21wYXJlIGVsZW1lbnRzIG9mIGJvdGggYXJyYXlzXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuXHRcdGlmIChcblx0XHRcdGFycjFbaV0ub3BlcmF0b3IgIT09IGFycjJbaV0ub3BlcmF0b3IgfHxcblx0XHRcdCFhcnIxW2ldLnNlbGVjdGVkVmFsdWVzLmV2ZXJ5KFxuXHRcdFx0XHQodmFsdWUsIGluZGV4KSA9PlxuXHRcdFx0XHRcdHZhbHVlID09PSBhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSB8fFxuXHRcdFx0XHRcdCh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcblx0XHRcdFx0XHRcdGRlZXBFcXVhbCgodmFsdWUgYXMgQ29kZUxpc3RUeXBlKS52YWx1ZSwgKGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdIGFzIENvZGVMaXN0VHlwZSkudmFsdWUpICYmXG5cdFx0XHRcdFx0XHQodmFsdWUgYXMgQ29kZUxpc3RUeXBlKS5kZXNjcmlwdGlvbiA9PT0gKGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdIGFzIENvZGVMaXN0VHlwZSkuZGVzY3JpcHRpb24pXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlOyAvLyBBcnJheXMgYXJlIHRoZSBzYW1lXG59XG5cbmZ1bmN0aW9uIGFyZUFycmF5U2FtZShhcnIxOiByZWFkb25seSB1bmtub3duW10sIGFycjI6IHJlYWRvbmx5IHVua25vd25bXSk6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdC8vIENvbXBhcmUgZWxlbWVudHMgb2YgYm90aCBhcnJheXNcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFycjFbaV0gIT09IGFycjJbaV0pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXJlQ29kZUxpc3RzU2FtZShhcnIxOiBjb2RlTGlzdFR5cGUsIGFycjI6IGNvZGVMaXN0VHlwZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRjb25zdCBhcnJOZXcxOiBmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGdldENvZGVMaXN0QXJyYXkoYXJyMSk7XG5cdGNvbnN0IGFyck5ldzI6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIyKTtcblx0Y29uc3QgZGVzY3JpcHRpb25OZXcxID0gYXJyTmV3MT8ubWFwKChkYXRhKSA9PiBkYXRhLmRlc2NyaXB0aW9uKTtcblx0Y29uc3QgZGVzY3JpcHRpb25OZXcyID0gYXJyTmV3Mj8ubWFwKChkYXRhKSA9PiBkYXRhLmRlc2NyaXB0aW9uKTtcblxuXHRjb25zdCB2YWx1ZTEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEudmFsdWUpO1xuXHRjb25zdCB2YWx1ZTIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEudmFsdWUpO1xuXHRpZiAoIWRlc2NyaXB0aW9uTmV3MSB8fCAhZGVzY3JpcHRpb25OZXcyKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHJldHVybiBhcmVBcnJheVNhbWUoZGVzY3JpcHRpb25OZXcxLCBkZXNjcmlwdGlvbk5ldzIpICYmIGFyZUFycmF5U2FtZSh2YWx1ZTEgYXMgUHJpbWl0aXZlVHlwZSwgdmFsdWUyIGFzIFByaW1pdGl2ZVR5cGUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb2RlTGlzdEFycmF5KGFycjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAodHlwZW9mIGFyciA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0cmV0dXJuIGFycigpO1xuXHR9XG5cdHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWU6IERhdGUsIHRva2VuVHlwZTogVG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuKTogc3RyaW5nIHtcblx0bGV0IGZvcm1hdHRlZERhdGVUaW1lID0gXCJcIjtcblx0aWYgKGlzRGF0ZVRpbWVPZmZzZXQpIHtcblx0XHRyZXR1cm4gZGF0ZVRpbWVPZmZzZXQuZm9ybWF0VmFsdWUodmFsdWUsIFwic3RyaW5nXCIpIGFzIHN0cmluZztcblx0fVxuXHRzd2l0Y2ggKHRva2VuVHlwZSkge1xuXHRcdGNhc2UgXCJDYWxlbmRhclwiOlxuXHRcdFx0Zm9ybWF0dGVkRGF0ZVRpbWUgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpLmZvcm1hdCh2YWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiVGltZVwiOlxuXHRcdFx0Zm9ybWF0dGVkRGF0ZVRpbWUgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZSgpLmZvcm1hdCh2YWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1hdHRlZERhdGVUaW1lO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgYW5kIHZhbHVlLlxuICogQHBhcmFtIG9wZXJhdG9yIFRoZSBvcGVyYXRvciB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVwcmVzZW50XG4gKiBAcGFyYW0gdG9rZW5UeXBlIFRoZSB0b2tlbidzIHR5cGVcbiAqIEBwYXJhbSBpc0RhdGVUaW1lT2Zmc2V0IENoZWNrcyBpZiB0aGUgZGF0YSB0eXBlIGlzIG9mIERhdGVUaW1lT2Zmc2V0XG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbWFwT3BlcmF0b3IoXG5cdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcblx0dmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlOiBudW1iZXIgfCBzdHJpbmcgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZSk7XG5cdH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlID0gdmFsdWU7XG5cdH1cblxuXHRzd2l0Y2ggKG9wZXJhdG9yKSB7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5HVDpcblx0XHRcdHJldHVybiBgPiAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MVDpcblx0XHRcdHJldHVybiBgPCAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5HRTpcblx0XHRcdHJldHVybiBgPj0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTEU6XG5cdFx0XHRyZXR1cm4gYDw9ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVROlxuXHRcdFx0cmV0dXJuIGAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Db250YWluczpcblx0XHRcdHJldHVybiBgKiR7bmV3VmFsdWV9KmA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5FbmRzV2l0aDpcblx0XHRcdHJldHVybiBgKiR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLlN0YXJ0c1dpdGg6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9KmA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5ORTpcblx0XHRcdHJldHVybiBgIT0oJHtuZXdWYWx1ZX0pYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdENvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAhKCoke25ld1ZhbHVlfSopYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdEVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCoke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90U3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgISgke25ld1ZhbHVlfSopYDtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIG5ld1ZhbHVlPy50b1N0cmluZygpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IENvZGVMaXN0VHlwZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRyZXR1cm4gbWFwT3BlcmF0b3Iob3BlcmF0b3IsIHZhbHVlLmRlc2NyaXB0aW9uLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xufVxuXG5mdW5jdGlvbiBtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZXM6IEJldHdlZW5TZWxlY3RlZFZhbHVlcyB8IFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cbik6IHN0cmluZyB7XG5cdGxldCBuZXdWYWx1ZTE6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRsZXQgbmV3VmFsdWUyOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gXCJcIjtcblx0aWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUxID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZXNbMF0pO1xuXHR9IGVsc2UgaWYgKHZhbHVlc1swXSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlc1swXSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bmV3VmFsdWUxID0gdmFsdWVzWzBdLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF07XG5cdH1cblxuXHRpZiAodHlwZW9mIHZhbHVlc1sxXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTIgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1sxXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzFdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzFdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTIgPSB2YWx1ZXNbMV0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXTtcblx0fVxuXHRpZiAob3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUKSB7XG5cdFx0cmV0dXJuIGAke25ld1ZhbHVlMX0uLi4ke25ld1ZhbHVlMn1gO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBgISgke25ld1ZhbHVlMX0uLi4ke25ld1ZhbHVlMn0pYDtcblx0fVxufVxuXG5mdW5jdGlvbiBpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyhvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IpOiBib29sZWFuIHtcblx0cmV0dXJuIG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkI7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWU6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRyZXR1cm4gdmFsdWVcblx0XHQ/IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19UUlVFXCIpXG5cdFx0OiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TRUxFQ1RFRF9WQUxVRVNfRkFMU0VcIik7XG59XG5cbi8vVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIGZpbHRlciBpcyBub3QgYSB2YWxpZCBcIlNpbmdsZVJhbmdlXCIgKGUuZy4sIHdyb25nIG9wZXJhdG9yIG9yIHRvbyBtYW55IHZhbHVlcyksIGFuZCBmYWxzZSBpZiBpdCBpcyB2YWxpZC5cbmZ1bmN0aW9uIGlzSW52YWxpZFNpbmdsZVJhbmdlKGZpbHRlclZhbHVlOiB7IG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcjsgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IGJvb2xlYW4pW10gfSk6IGJvb2xlYW4ge1xuXHRjb25zdCBhbGxvd2VkID0gW0ZpbHRlck9wZXJhdG9yLkVRLCBGaWx0ZXJPcGVyYXRvci5MRSwgRmlsdGVyT3BlcmF0b3IuTFQsIEZpbHRlck9wZXJhdG9yLkdFLCBGaWx0ZXJPcGVyYXRvci5HVCwgRmlsdGVyT3BlcmF0b3IuQlRdO1xuXG5cdC8vIFx0ZmlsdGVyVmFsdWUub3BlcmF0b3IgIT09IEZpbHRlck9wZXJhdG9yLkJUIGVuc3VyZXMgQlQgaXMgYWx3YXlzIHZhbGlkLlxuXHQvLyAhYWxsb3dlZC5pbmNsdWRlcygpIGJsb2NrcyB1bnN1cHBvcnRlZCBvcGVyYXRvcnMuXG5cdC8vIGZpbHRlclZhbHVlLnZhbHVlcy5sZW5ndGggPj0gMiBibG9ja3MgbXVsdGlwbGUgdmFsdWVzIGZvciBzaW5nbGUtcmFuZ2UgZmlsdGVycy5cblx0Ly8gVG9nZXRoZXIsIHRoaXMgcmV0dXJucyB0cnVlIHdoZW4gdGhlIGZpbHRlciBpcyBub3QgYSB2YWxpZCBzaW5nbGUtcmFuZ2UuXG5cdHJldHVybiBmaWx0ZXJWYWx1ZS5vcGVyYXRvciAhPT0gRmlsdGVyT3BlcmF0b3IuQlQgJiYgKCFhbGxvd2VkLmluY2x1ZGVzKGZpbHRlclZhbHVlLm9wZXJhdG9yKSB8fCBmaWx0ZXJWYWx1ZS52YWx1ZXMubGVuZ3RoID49IDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRhKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZXM6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl0sXG5cdGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdLFxuXHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzOiAobXNnOiBzdHJpbmcpID0+IHZvaWRcbik6IHZvaWQge1xuXHRpZiAoZmlsdGVyVmFsdWVzKSB7XG5cdFx0Y29uc3QgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblx0XHRjb25zdCBub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc2luZ2xlUmFuZ2VUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBoaWRkZW5GaWx0ZXJUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3QgZmlsdGVyVmFsdWUgb2YgZmlsdGVyVmFsdWVzKSB7XG5cdFx0XHRjb25zdCBmaWx0ZXJDcml0ZXJpYSA9IGZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBmaWx0ZXJWYWx1ZS5uYW1lKTtcblx0XHRcdGlmIChmaWx0ZXJDcml0ZXJpYSkge1xuXHRcdFx0XHQvLyBPbmx5IGJsb2NrIGlmIGZpbHRlcmFibGUgaXMgZmFsc2Vcblx0XHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJDcml0ZXJpYSwgXCJmaWx0ZXJhYmxlXCIpICYmICFmaWx0ZXJDcml0ZXJpYT8uZmlsdGVyYWJsZSkge1xuXHRcdFx0XHRcdG5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5wdXNoKGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IGZpbHRlckNyaXRlcmlhLm5hbWUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE9ubHkgYmxvY2sgaWYgaGlkZGVuRmlsdGVyIGlzIHRydWVcblx0XHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJDcml0ZXJpYSwgXCJoaWRkZW5GaWx0ZXJcIikgJiYgZmlsdGVyQ3JpdGVyaWE/LmhpZGRlbkZpbHRlcikge1xuXHRcdFx0XHRcdGhpZGRlbkZpbHRlclRva2VuTGFiZWxzLnB1c2goZmlsdGVyQ3JpdGVyaWEubGFiZWwgfHwgZmlsdGVyQ3JpdGVyaWEubmFtZSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gT25seSBhcHBseSBTaW5nbGVSYW5nZSBsb2dpYyBpZiBmaWx0ZXJSZXN0cmljdGlvbiBpcyBzZXQgdG8gU2luZ2xlUmFuZ2Vcblx0XHRcdFx0aWYgKGZpbHRlckNyaXRlcmlhPy5maWx0ZXJSZXN0cmljdGlvbiA9PT0gXCJTaW5nbGVSYW5nZVwiICYmIGlzSW52YWxpZFNpbmdsZVJhbmdlKGZpbHRlclZhbHVlKSkge1xuXHRcdFx0XHRcdHNpbmdsZVJhbmdlVG9rZW5MYWJlbHMucHVzaChmaWx0ZXJDcml0ZXJpYS5sYWJlbCB8fCBmaWx0ZXJDcml0ZXJpYS5uYW1lKTtcblx0XHRcdFx0XHRmaWx0ZXJWYWx1ZS52YWx1ZXMgPSBbXTsgLy8gUmVzZXQgdmFsdWVzIHRvIGF2b2lkIGFkZGluZyBpbnZhbGlkIHRva2VuIHZhbHVlc1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgeyB0eXBlIH0gPSBmaWx0ZXJDcml0ZXJpYTtcblx0XHRcdFx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdFx0XHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXHRcdFx0XHRsZXQga2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb247XG5cdFx0XHRcdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IHtcblx0XHRcdFx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSB7XG5cdFx0XHRcdFx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlczogdmFsdWVzIGFzIHN0cmluZ1tdIHwgRGF0ZVtdIHwgbnVtYmVyW10gfCBib29sZWFuW11cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0b2tlbkluZGV4ID09PSAtMSkge1xuXHRcdFx0XHRcdC8vIEFkZCBuZXcgdG9rZW4gaWYgaXQgZG9lc24ndCBleGlzdFxuXHRcdFx0XHRcdGNvbnN0IG5ld1Rva2VuOiBUb2tlbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdFx0XHRrZXk6IGZpbHRlclZhbHVlLm5hbWUsXG5cdFx0XHRcdFx0XHRsYWJlbDogZmlsdGVyQ3JpdGVyaWEubGFiZWwgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0XHRcdFx0dHlwZTogdHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRcdFx0XHRidXN5OiB0eXBlID09PSBcIlZhbHVlSGVscFwiID8gdHJ1ZSA6IGZhbHNlXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR0b2tlbnMucHVzaChuZXdUb2tlbik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdFx0XHRcdC8vSWYgaXRzIGRlZmF1bHQgdmFsdWUgLCBvdmVycmlkZSBpdFxuXHRcdFx0XHRcdGlmICgoY3VycmVudFRva2VuLmlzUmVxdWlyZWQgPz8gZmFsc2UpICYmICF2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zW2N1cnJlbnRUb2tlbi5rZXldKSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IFtrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXTtcblx0XHRcdFx0XHRcdHZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0gPSB0cnVlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQoY3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgYXMgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSkucHVzaChrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5sZW5ndGggPiAwIHx8IHNpbmdsZVJhbmdlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fCBoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblx0XHRcdGlmIChub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjb25zdCBub25GaWx0ZXJhYmxlVG9rZW5MYWJlbCA9IGA8c3Ryb25nPiR7bm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gO1xuXHRcdFx0XHRtZXNzYWdlcy5wdXNoKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX05PTl9GSUxURVJBQkxFXCIsIFtub25GaWx0ZXJhYmxlVG9rZW5MYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdGlmIChoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNvbnN0IGxhYmVsID0gYDxzdHJvbmc+JHtoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5qb2luKFwiLCBcIil9PC9zdHJvbmc+YDtcblx0XHRcdFx0bWVzc2FnZXMucHVzaChyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9ISURERU5fRklMVEVSXCIsIFtsYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdGlmIChzaW5nbGVSYW5nZVRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgbGFiZWwgPSBgPHN0cm9uZz4ke3NpbmdsZVJhbmdlVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmA7XG5cdFx0XHRcdG1lc3NhZ2VzLnB1c2gocmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0lOR0xFX1JBTkdFXCIsIFtsYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdHNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMobWVzc2FnZXMuam9pbihcIjxicj5cIikpO1xuXHRcdH1cblx0fVxufVxuXG5jb25zdCBFYXN5RmlsdGVyVXRpbHMgPSB7XG5cdGFyZUl0ZW1zU2FtZSxcblx0YXJlQ29kZUxpc3RzU2FtZSxcblx0Z2V0Q29kZUxpc3RBcnJheSxcblx0YXJlQXJyYXlTYW1lLFxuXHRtYXBPcGVyYXRvcixcblx0bWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IsXG5cdGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRmb3JtYXREYXRhLFxuXHRtYXBPcGVyYXRvckZvclZhbHVlSGVscFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRWFzeUZpbHRlclV0aWxzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBb0JBLE1BQU1BLGNBQWMsR0FBR0MsR0FBRyxDQUFDQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBRTtFQUNuRSxNQUFNQyxjQUFjLEdBQUcsSUFBSUMsY0FBYyxDQUFDLENBQUM7RUFFM0MsU0FBU0MsWUFBWUEsQ0FDcEJDLElBQW9GLEVBQ3BGQyxJQUFvRixFQUMxRTtJQUNWLElBQUlELElBQUksQ0FBQ0UsTUFBTSxLQUFLRCxJQUFJLENBQUNDLE1BQU0sRUFBRTtNQUNoQyxPQUFPLEtBQUs7SUFDYjtJQUNBO0lBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILElBQUksQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtNQUNyQyxJQUNDSCxJQUFJLENBQUNHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLEtBQUtILElBQUksQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLFFBQVEsSUFDckMsQ0FBQ0osSUFB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
|
|
306
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsInZhbHVlIiwiaW5kZXgiLCJkZWVwRXF1YWwiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRGF0ZSIsIkZpbHRlck9wZXJhdG9yIiwiR1QiLCJMVCIsIkdFIiwiTEUiLCJFUSIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJTdGFydHNXaXRoIiwiTkUiLCJOb3RDb250YWlucyIsIk5vdEVuZHNXaXRoIiwiTm90U3RhcnRzV2l0aCIsInRvU3RyaW5nIiwibWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAiLCJtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvciIsInZhbHVlcyIsIm5ld1ZhbHVlMSIsIm5ld1ZhbHVlMiIsIkJUIiwiaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMiLCJOQiIsImdldFRleHQiLCJoYW5kbGVTaW5nbGVSYW5nZUZpbHRlciIsImZpbHRlckNyaXRlcmlhIiwiZmlsdGVyVmFsdWUiLCJzaW5nbGVSYW5nZVRva2VuTGFiZWxzIiwic2luZ2xlUmFuZ2VVc2FnZSIsImZpbHRlclJlc3RyaWN0aW9uIiwiaXNJbnZhbGlkIiwiaXNJbnZhbGlkU2luZ2xlUmFuZ2UiLCJuYW1lIiwibGFiZWwiLCJpbmNsdWRlcyIsInB1c2giLCJ0eXBlIiwic2luZ2xlVmFsdWVPcHMiLCJyYW5nZU9wcyIsIm9wIiwidmFsQ291bnQiLCJmb3JtYXREYXRhIiwidG9rZW5zIiwiZmlsdGVyVmFsdWVzIiwiZmlsdGVyQmFyTWV0YWRhdGEiLCJzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzIiwidmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VucyIsIm5vbkZpbHRlcmFibGVUb2tlbkxhYmVscyIsImhpZGRlbkZpbHRlclRva2VuTGFiZWxzIiwiZmluZCIsImZpZWxkIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZmlsdGVyYWJsZSIsImhpZGRlbkZpbHRlciIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJ0b2tlbiIsImtleSIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJFYXN5RmlsdGVyVXRpbHMiLCJuZXdUb2tlbiIsImJ1c3kiLCJjdXJyZW50VG9rZW4iLCJpc1JlcXVpcmVkIiwibWVzc2FnZXMiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbCIsImpvaW4iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvRGF0ZVRpbWVPZmZzZXRcIjtcbmltcG9ydCB0eXBlIHsgRWFzeUZpbHRlclJlc3VsdCwgUHJvcGVydHlNZXRhZGF0YSB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0QmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRDb2RlTGlzdFR5cGUsXG5cdEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhLFxuXHRUb2tlbkRlZmluaXRpb24sXG5cdFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uLFxuXHRUb2tlblR5cGUsXG5cdFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0VmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uXG59IGZyb20gXCIuL0Vhc3lGaWx0ZXJCYXJDb250YWluZXJcIjtcblxudHlwZSBjb2RlTGlzdFR5cGUgPSBQcm9wZXJ0eU1ldGFkYXRhW1wiY29kZUxpc3RcIl07XG50eXBlIGZpbmFsQ29kZUxpc3RUeXBlID0geyB2YWx1ZTogUHJpbWl0aXZlVHlwZTsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfVtdO1xuY29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuY29uc3QgZGF0ZVRpbWVPZmZzZXQgPSBuZXcgRGF0ZVRpbWVPZmZzZXQoKTtcblxuZnVuY3Rpb24gYXJlSXRlbXNTYW1lKFxuXHRhcnIxOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdGFycjI6IHJlYWRvbmx5IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXVxuKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeShcblx0XHRcdFx0KHZhbHVlLCBpbmRleCkgPT5cblx0XHRcdFx0XHR2YWx1ZSA9PT0gYXJyMltpXS5zZWxlY3RlZFZhbHVlc1tpbmRleF0gfHxcblx0XHRcdFx0XHQodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRcdFx0XHRkZWVwRXF1YWwoKHZhbHVlIGFzIENvZGVMaXN0VHlwZSkudmFsdWUsIChhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSBhcyBDb2RlTGlzdFR5cGUpLnZhbHVlKSAmJlxuXHRcdFx0XHRcdFx0KHZhbHVlIGFzIENvZGVMaXN0VHlwZSkuZGVzY3JpcHRpb24gPT09IChhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSBhcyBDb2RlTGlzdFR5cGUpLmRlc2NyaXB0aW9uKVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5mdW5jdGlvbiBhcmVBcnJheVNhbWUoYXJyMTogcmVhZG9ubHkgdW5rbm93bltdLCBhcnIyOiByZWFkb25seSB1bmtub3duW10pOiBib29sZWFuIHtcblx0aWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHQvLyBDb21wYXJlIGVsZW1lbnRzIG9mIGJvdGggYXJyYXlzXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuXHRcdGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlOyAvLyBBcnJheXMgYXJlIHRoZSBzYW1lXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFyZUNvZGVMaXN0c1NhbWUoYXJyMTogY29kZUxpc3RUeXBlLCBhcnIyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3QgYXJyTmV3MTogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjEpO1xuXHRjb25zdCBhcnJOZXcyOiBmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGdldENvZGVMaXN0QXJyYXkoYXJyMik7XG5cdGNvbnN0IGRlc2NyaXB0aW9uTmV3MSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS5kZXNjcmlwdGlvbik7XG5cdGNvbnN0IGRlc2NyaXB0aW9uTmV3MiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS5kZXNjcmlwdGlvbik7XG5cblx0Y29uc3QgdmFsdWUxID0gYXJyTmV3MT8ubWFwKChkYXRhKSA9PiBkYXRhLnZhbHVlKTtcblx0Y29uc3QgdmFsdWUyID0gYXJyTmV3Mj8ubWFwKChkYXRhKSA9PiBkYXRhLnZhbHVlKTtcblx0aWYgKCFkZXNjcmlwdGlvbk5ldzEgfHwgIWRlc2NyaXB0aW9uTmV3Mikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gYXJlQXJyYXlTYW1lKGRlc2NyaXB0aW9uTmV3MSwgZGVzY3JpcHRpb25OZXcyKSAmJiBhcmVBcnJheVNhbWUodmFsdWUxIGFzIFByaW1pdGl2ZVR5cGUsIHZhbHVlMiBhcyBQcmltaXRpdmVUeXBlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29kZUxpc3RBcnJheShhcnI6IGNvZGVMaXN0VHlwZSk6IFByb21pc2U8ZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQ+IHtcblx0aWYgKHR5cGVvZiBhcnIgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdHJldHVybiBhcnIoKTtcblx0fVxuXHRyZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlOiBEYXRlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdGxldCBmb3JtYXR0ZWREYXRlVGltZSA9IFwiXCI7XG5cdGlmIChpc0RhdGVUaW1lT2Zmc2V0KSB7XG5cdFx0cmV0dXJuIGRhdGVUaW1lT2Zmc2V0LmZvcm1hdFZhbHVlKHZhbHVlLCBcInN0cmluZ1wiKSBhcyBzdHJpbmc7XG5cdH1cblx0c3dpdGNoICh0b2tlblR5cGUpIHtcblx0XHRjYXNlIFwiQ2FsZW5kYXJcIjpcblx0XHRcdGZvcm1hdHRlZERhdGVUaW1lID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKS5mb3JtYXQodmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIlRpbWVcIjpcblx0XHRcdGZvcm1hdHRlZERhdGVUaW1lID0gRGF0ZUZvcm1hdC5nZXRUaW1lSW5zdGFuY2UoKS5mb3JtYXQodmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBmb3JtYXR0ZWREYXRlVGltZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZS5cbiAqIEBwYXJhbSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgdG8gcmVwcmVzZW50XG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHRva2VuVHlwZSBUaGUgdG9rZW4ncyB0eXBlXG4gKiBAcGFyYW0gaXNEYXRlVGltZU9mZnNldCBDaGVja3MgaWYgdGhlIGRhdGEgdHlwZSBpcyBvZiBEYXRlVGltZU9mZnNldFxuICogQHJldHVybnMgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgYW5kIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSxcblx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cbik6IHN0cmluZyB7XG5cdGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgc3RyaW5nID0gXCJcIjtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWUpO1xuXHR9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0c3dpdGNoIChvcGVyYXRvcikge1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR1Q6XG5cdFx0XHRyZXR1cm4gYD4gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTFQ6XG5cdFx0XHRyZXR1cm4gYDwgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR0U6XG5cdFx0XHRyZXR1cm4gYD49ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxFOlxuXHRcdFx0cmV0dXJuIGA8PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5FUTpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuQ29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTkU6XG5cdFx0XHRyZXR1cm4gYCE9KCR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWluczpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0qKWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RFbmRzV2l0aDpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0pYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdFN0YXJ0c1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZX0qKWA7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBuZXdWYWx1ZT8udG9TdHJpbmcoKTtcblx0fVxufVxuXG5mdW5jdGlvbiBtYXBPcGVyYXRvckZvclZhbHVlSGVscChvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBDb2RlTGlzdFR5cGUsIHRva2VuVHlwZTogVG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIG1hcE9wZXJhdG9yKG9wZXJhdG9yLCB2YWx1ZS5kZXNjcmlwdGlvbiwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IoXG5cdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcblx0dmFsdWVzOiBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMgfCBWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWUxOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gXCJcIjtcblx0bGV0IG5ld1ZhbHVlMjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzBdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMF0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUxID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMF0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUxID0gdmFsdWVzWzBdO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB2YWx1ZXNbMV0gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZXNbMV0pO1xuXHR9IGVsc2UgaWYgKHZhbHVlc1sxXSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZTIgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlc1sxXSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZTIgPSB2YWx1ZXNbMV07XG5cdH1cblx0aWYgKG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCkge1xuXHRcdHJldHVybiBgJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9YDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9KWA7XG5cdH1cbn1cblxuZnVuY3Rpb24gaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yKTogYm9vbGVhbiB7XG5cdHJldHVybiBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQgfHwgb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLk5CO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIHZhbHVlXG5cdFx0PyByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TRUxFQ1RFRF9WQUxVRVNfVFJVRVwiKVxuXHRcdDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX0ZBTFNFXCIpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgdGhlIHNpbmdsZSByYW5nZSB2YWxpZGF0aW9uIGFuZCB1cGRhdGVzIGZvciBhIGZpbHRlciB2YWx1ZS5cbiAqIEBwYXJhbSBmaWx0ZXJDcml0ZXJpYSBUaGUgbWV0YWRhdGEgZm9yIHRoZSBmaWx0ZXJcbiAqIEBwYXJhbSBmaWx0ZXJWYWx1ZSBUaGUgZmlsdGVyIHZhbHVlIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2luZ2xlUmFuZ2VUb2tlbkxhYmVscyBBcnJheSB0byBjb2xsZWN0IGxhYmVscyBvZiBpbnZhbGlkIHNpbmdsZSByYW5nZSBmaWx0ZXJzXG4gKiBAcGFyYW0gc2luZ2xlUmFuZ2VVc2FnZSBSZWNvcmQgdG8gdHJhY2sgdXNhZ2UgY291bnQgb2Ygc2luZ2xlIHJhbmdlIGZpbHRlcnNcbiAqIEByZXR1cm5zIFRydWUgaWYgcHJvY2Vzc2luZyBzaG91bGQgY29udGludWUsIGZhbHNlIGlmIGl0IHNob3VsZCBza2lwXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVNpbmdsZVJhbmdlRmlsdGVyKFxuXHRmaWx0ZXJDcml0ZXJpYTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEsXG5cdGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdWzBdLFxuXHRzaW5nbGVSYW5nZVRva2VuTGFiZWxzOiBzdHJpbmdbXSxcblx0c2luZ2xlUmFuZ2VVc2FnZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuKTogYm9vbGVhbiB7XG5cdGlmIChmaWx0ZXJDcml0ZXJpYT8uZmlsdGVyUmVzdHJpY3Rpb24gIT09IFwiU2luZ2xlUmFuZ2VcIikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y29uc3QgaXNJbnZhbGlkID0gaXNJbnZhbGlkU2luZ2xlUmFuZ2UoZmlsdGVyVmFsdWUpIHx8IChzaW5nbGVSYW5nZVVzYWdlW2ZpbHRlclZhbHVlLm5hbWVdID8/IDApID4gMDtcblx0c2luZ2xlUmFuZ2VVc2FnZVtmaWx0ZXJWYWx1ZS5uYW1lXSA9IChzaW5nbGVSYW5nZVVzYWdlW2ZpbHRlclZhbHVlLm5hbWVdID8/IDApICsgMTtcblxuXHRpZiAoIWlzSW52YWxpZCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y29uc3QgbGFiZWwgPSBmaWx0ZXJDcml0ZXJpYS5sYWJlbCB8fCBmaWx0ZXJDcml0ZXJpYS5uYW1lO1xuXHRpZiAoIXNpbmdsZVJhbmdlVG9rZW5MYWJlbHMuaW5jbHVkZXMobGFiZWwpKSB7XG5cdFx0c2luZ2xlUmFuZ2VUb2tlbkxhYmVscy5wdXNoKGxhYmVsKTtcblx0fVxuXG5cdGlmIChmaWx0ZXJDcml0ZXJpYS50eXBlID09PSBcIkNhbGVuZGFyXCIgfHwgZmlsdGVyQ3JpdGVyaWEudHlwZSA9PT0gXCJUaW1lXCIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRmaWx0ZXJWYWx1ZS52YWx1ZXMgPSBbXTtcblx0cmV0dXJuIHRydWU7XG59XG5cbi8vIFZhbGlkYXRlcyBpZiBhIGZpbHRlciB2YWx1ZSB2aW9sYXRlcyB0aGUgU2luZ2xlUmFuZ2UgcmVzdHJpY3Rpb24uXG4vLyBSZXR1cm5zIHRydWUgaWYgaW52YWxpZCwgZmFsc2UgaWYgdmFsaWQuXG4vLyBSdWxlcyBmb3IgU2luZ2xlUmFuZ2U6XG4vLyAtIEFsbG93ZWQgb3BlcmF0b3JzOiBFUSwgTEUsIExULCBHRSwgR1QsIEJULCBOQlxuLy8gLSBTaW5nbGUtdmFsdWUgb3BlcmF0b3JzIChFUSwgTEUsIExULCBHRSwgR1QpOiBtdXN0IGhhdmUgZXhhY3RseSAxIHZhbHVlXG4vLyAtIFJhbmdlIG9wZXJhdG9ycyAoQlQsIE5CKTogbXVzdCBoYXZlIGV4YWN0bHkgMiB2YWx1ZXMgKGxvd2VyICYgdXBwZXIgYm91bmQpXG4vLyAtIE9ubHkgb25lIGNvbmRpdGlvbi90b2tlbiBpcyBhbGxvd2VkIHBlciBwcm9wZXJ0eSAoc2hvdWxkIGJlIGVuZm9yY2VkIG91dHNpZGUpXG4vL1xuZnVuY3Rpb24gaXNJbnZhbGlkU2luZ2xlUmFuZ2UoZmlsdGVyVmFsdWU6IHsgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yOyB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHwgYm9vbGVhbilbXSB9KTogYm9vbGVhbiB7XG5cdGNvbnN0IHNpbmdsZVZhbHVlT3BzID0gW0ZpbHRlck9wZXJhdG9yLkVRLCBGaWx0ZXJPcGVyYXRvci5MRSwgRmlsdGVyT3BlcmF0b3IuTFQsIEZpbHRlck9wZXJhdG9yLkdFLCBGaWx0ZXJPcGVyYXRvci5HVF07XG5cdGNvbnN0IHJhbmdlT3BzID0gW0ZpbHRlck9wZXJhdG9yLkJULCBGaWx0ZXJPcGVyYXRvci5OQl07XG5cblx0Y29uc3Qgb3AgPSBmaWx0ZXJWYWx1ZS5vcGVyYXRvcjtcblx0Y29uc3QgdmFsQ291bnQgPSBmaWx0ZXJWYWx1ZS52YWx1ZXM/Lmxlbmd0aCB8fCAwO1xuXG5cdC8vIFNpbmdsZS12YWx1ZSBvcGVyYXRvcnMg4oaSIG11c3QgaGF2ZSBleGFjdGx5IDEgdmFsdWVcblx0aWYgKHNpbmdsZVZhbHVlT3BzLmluY2x1ZGVzKG9wKSkge1xuXHRcdHJldHVybiB2YWxDb3VudCAhPT0gMTtcblx0fVxuXG5cdC8vIFJhbmdlIG9wZXJhdG9ycyAoQmV0d2VlbiAvIE5vdCBCZXR3ZWVuKSDihpIgbXVzdCBoYXZlIGV4YWN0bHkgMiB2YWx1ZXNcblx0aWYgKHJhbmdlT3BzLmluY2x1ZGVzKG9wKSkge1xuXHRcdHJldHVybiB2YWxDb3VudCAhPT0gMjtcblx0fVxuXG5cdC8vIEFueXRoaW5nIGVsc2UgaXMgbm90IGFsbG93ZWQgZm9yIFNpbmdsZVJhbmdlXG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRhKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZXM6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl0sXG5cdGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdLFxuXHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzOiAobXNnOiBzdHJpbmcpID0+IHZvaWRcbik6IHZvaWQge1xuXHRpZiAoZmlsdGVyVmFsdWVzKSB7XG5cdFx0Y29uc3QgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblx0XHRjb25zdCBub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc2luZ2xlUmFuZ2VUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBoaWRkZW5GaWx0ZXJUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBzaW5nbGVSYW5nZVVzYWdlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cblx0XHRmb3IgKGNvbnN0IGZpbHRlclZhbHVlIG9mIGZpbHRlclZhbHVlcykge1xuXHRcdFx0Y29uc3QgZmlsdGVyQ3JpdGVyaWEgPSBmaWx0ZXJCYXJNZXRhZGF0YS5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gZmlsdGVyVmFsdWUubmFtZSk7XG5cdFx0XHRpZiAoZmlsdGVyQ3JpdGVyaWEpIHtcblx0XHRcdFx0Ly8gT25seSBibG9jayBpZiBmaWx0ZXJhYmxlIGlzIGZhbHNlXG5cdFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmlsdGVyQ3JpdGVyaWEsIFwiZmlsdGVyYWJsZVwiKSAmJiAhZmlsdGVyQ3JpdGVyaWE/LmZpbHRlcmFibGUpIHtcblx0XHRcdFx0XHRub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMucHVzaChmaWx0ZXJDcml0ZXJpYS5sYWJlbCB8fCBmaWx0ZXJDcml0ZXJpYS5uYW1lKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBPbmx5IGJsb2NrIGlmIGhpZGRlbkZpbHRlciBpcyB0cnVlXG5cdFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmlsdGVyQ3JpdGVyaWEsIFwiaGlkZGVuRmlsdGVyXCIpICYmIGZpbHRlckNyaXRlcmlhPy5oaWRkZW5GaWx0ZXIpIHtcblx0XHRcdFx0XHRoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5wdXNoKGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IGZpbHRlckNyaXRlcmlhLm5hbWUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEhhbmRsZXMgdGhlIHNpbmdsZSByYW5nZSB2YWxpZGF0aW9uIGFuZCB1cGRhdGVzIGZvciBhIGZpbHRlciB2YWx1ZVxuXHRcdFx0XHRpZiAoIWhhbmRsZVNpbmdsZVJhbmdlRmlsdGVyKGZpbHRlckNyaXRlcmlhLCBmaWx0ZXJWYWx1ZSwgc2luZ2xlUmFuZ2VUb2tlbkxhYmVscywgc2luZ2xlUmFuZ2VVc2FnZSkpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHsgdHlwZSB9ID0gZmlsdGVyQ3JpdGVyaWE7XG5cdFx0XHRcdGNvbnN0IHRva2VuSW5kZXggPSB0b2tlbnMuZmluZEluZGV4KCh0b2tlbikgPT4gdG9rZW4ua2V5ID09PSBmaWx0ZXJWYWx1ZS5uYW1lKTtcblx0XHRcdFx0Y29uc3QgeyBvcGVyYXRvciwgdmFsdWVzIH0gPSBmaWx0ZXJWYWx1ZTtcblx0XHRcdFx0bGV0IGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uO1xuXHRcdFx0XHRpZiAoRWFzeUZpbHRlclV0aWxzLmlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yKSkge1xuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSB7XG5cdFx0XHRcdFx0XHRvcGVyYXRvcixcblx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiB2YWx1ZXMgYXMgQmV0d2VlblNlbGVjdGVkVmFsdWVzXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0ge1xuXHRcdFx0XHRcdFx0b3BlcmF0b3I6IG9wZXJhdG9yIGFzIEV4Y2x1ZGU8RmlsdGVyT3BlcmF0b3IsIEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI+LFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodG9rZW5JbmRleCA9PT0gLTEpIHtcblx0XHRcdFx0XHQvLyBBZGQgbmV3IHRva2VuIGlmIGl0IGRvZXNuJ3QgZXhpc3Rcblx0XHRcdFx0XHRjb25zdCBuZXdUb2tlbjogVG9rZW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdFx0a2V5OiBmaWx0ZXJWYWx1ZS5uYW1lLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGZpbHRlckNyaXRlcmlhLmxhYmVsIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFtrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSxcblx0XHRcdFx0XHRcdHR5cGU6IHR5cGUgYXMgRXhjbHVkZTxUb2tlblR5cGUsIFwiVmFsdWVIZWxwXCI+LFxuXHRcdFx0XHRcdFx0YnVzeTogdHlwZSA9PT0gXCJWYWx1ZUhlbHBcIiA/IHRydWUgOiBmYWxzZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0dG9rZW5zLnB1c2gobmV3VG9rZW4pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIFVwZGF0ZSBleGlzdGluZyB0b2tlblxuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRUb2tlbiA9IHRva2Vuc1t0b2tlbkluZGV4XTtcblx0XHRcdFx0XHQvL0lmIGl0cyBkZWZhdWx0IHZhbHVlICwgb3ZlcnJpZGUgaXRcblx0XHRcdFx0XHRpZiAoKGN1cnJlbnRUb2tlbi5pc1JlcXVpcmVkID8/IGZhbHNlKSAmJiAhdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBba2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc107XG5cdFx0XHRcdFx0XHR2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zW2N1cnJlbnRUb2tlbi5rZXldID0gdHJ1ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0KGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pLnB1c2goa2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fCBzaW5nbGVSYW5nZVRva2VuTGFiZWxzLmxlbmd0aCA+IDAgfHwgaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRpZiAobm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3Qgbm9uRmlsdGVyYWJsZVRva2VuTGFiZWwgPSBgPHN0cm9uZz4ke25vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5qb2luKFwiLCBcIil9PC9zdHJvbmc+YDtcblx0XHRcdFx0bWVzc2FnZXMucHVzaChyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9OT05fRklMVEVSQUJMRVwiLCBbbm9uRmlsdGVyYWJsZVRva2VuTGFiZWxdKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjb25zdCBsYWJlbCA9IGA8c3Ryb25nPiR7aGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmA7XG5cdFx0XHRcdG1lc3NhZ2VzLnB1c2gocmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfSElEREVOX0ZJTFRFUlwiLCBbbGFiZWxdKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2luZ2xlUmFuZ2VUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNvbnN0IGxhYmVsID0gYDxzdHJvbmc+JHtzaW5nbGVSYW5nZVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gO1xuXHRcdFx0XHRtZXNzYWdlcy5wdXNoKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NJTkdMRV9SQU5HRVwiLCBbbGFiZWxdKSk7XG5cdFx0XHR9XG5cdFx0XHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKG1lc3NhZ2VzLmpvaW4oXCI8YnI+XCIpKTtcblx0XHR9XG5cdH1cbn1cblxuY29uc3QgRWFzeUZpbHRlclV0aWxzID0ge1xuXHRhcmVJdGVtc1NhbWUsXG5cdGFyZUNvZGVMaXN0c1NhbWUsXG5cdGdldENvZGVMaXN0QXJyYXksXG5cdGFyZUFycmF5U2FtZSxcblx0bWFwT3BlcmF0b3IsXG5cdG1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yLFxuXHRpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Zm9ybWF0RGF0YSxcblx0bWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVhc3lGaWx0ZXJVdGlscztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQW9CQSxNQUFNQSxjQUFjLEdBQUdDLEdBQUcsQ0FBQ0Msb0JBQW9CLENBQUMsaUJBQWlCLENBQUU7RUFDbkUsTUFBTUMsY0FBYyxHQUFHLElBQUlDLGNBQWMsQ0FBQyxDQUFDO0VBRTNDLFNBQVNDLFlBQVlBLENBQ3BCQyxJQUFvRixFQUNwRkMsSUFBb0YsRUFDMUU7SUFDVixJQUFJRCxJQUFJLENBQUNFLE1BQU0sS0FBS0QsSUFBSSxDQUFDQyxNQUFNLEVBQUU7TUFDaEMsT0FBTyxLQUFLO0lBQ2I7SUFDQTtJQUNBLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHSCxJQUFJLENBQUNFLE1BQU0sRUFBRUMsQ0FBQyxFQUFFLEVBQUU7TUFDckMsSUFDQ0gsSUFBSSxDQUFDRyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxLQUFLSCxJQUFJLENBQUNFLENBQUMsQ0FBQyxDQUFDQyxRQUFRLElBQ3JDLENBQUNKLElBQUksQ0FBQ0csQ0FBQyxDQUFDLENBQUNFLGNBQWMsQ0FBQ0MsS0FBSyxDQUM1QixDQUFDQyxLQUFLLEVBQUVDLEtBQUssS0FDWkQsS0FBSyxLQUFLTixJQUFJLENBQUNFLENBQUMsQ0FBQyxDQUFDRSxjQUFjLENBQUNHLEtBQUssQ0FBQyxJQUN0QyxPQUFPRCxLQUFLLEtBQUssUUFBUSxJQUN6QkUsU0FBUyxDQUFFRixLQUFLLENBQWtCQSxLQUFLLEVBQUdOLElBQUksQ0FBQ0UsQ0FBQyxDQUFDLENBQUNFLGNBQWMsQ0FBQ0csS0FBSyxDQUFDLENBQWtCRCxLQUFLLENBQUMsSUFDOUZBLEtBQUssQ0FBa0JHLFdBQVcsS0FBTVQsSUFBSSxDQUFDRSxDQUFDLENBQUMsQ0FBQ0UsY0FBYyxDQUFDRyxLQUFLLENBQUMsQ0FBa0JFLFdBQzNGLENBQUMsRUFDQTtRQUNELE9BQU8sS0FBSztNQUNiO0lBQ0Q7SUFDQSxPQUFPLElBQUksQ0FBQyxDQUFDO0VBQ2Q7RUFFQSxTQUFTQyxZQUFZQSxDQUFDWCxJQUF3QixFQUFFQyxJQUF3QixFQUFXO0lBQ2xGLElBQUlELElBQUksQ0FBQ0UsTUFBTSxLQUFLRCxJQUFJLENBQUNDLE1BQU0sRUFBRTtNQUNoQyxPQUFPLEtBQUs7SUFDYjtJQUNBO0lBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILElBQUksQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtNQUNyQyxJQUFJSCxJQUFJLENBQUNHLENBQUMsQ0FBQyxLQUFLRixJQUFJLENBQUNFLENBQUMsQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sS0FBSztNQUNiO0lBQ0Q7SUFDQSxPQUFPLElBQUksQ0FBQyxDQUFDO0VBQ2Q7RUFFQSxlQUFlUyxnQkFBZ0JBLENBQUNaLElBQWtCLEVBQUVDLElBQWtCLEVBQW9CO0lBQ3pGLE1BQU1ZLE9BQXNDLEdBQUcsTUFBTUMsZ0JBQWdCLENBQUNkLElBQUksQ0FBQztJQUMzRSxNQUFNZSxPQUFzQyxHQUFHLE1BQU1ELGdCQUFnQixDQUFDYixJQUFJLENBQUM7SUFDM0UsTUFBTWUsZUFBZSxHQUFHSCxPQUFPLEVBQUVJLEdBQUcsQ0FBRUMsSUFBSSxJQUFLQSxJQUFJLENBQUNSLFdBQVcsQ0FBQztJQUNoRSxNQUFNUyxlQUFlLEdBQUdKLE9BQU8sRUFBRUUsR0FBRyxDQUFFQyxJQUFJLElBQUtBLElBQUksQ0FBQ1IsV0FBVyxDQUFDO0lBRWhFLE1BQU1VLE1BQU0sR0FBR1AsT0FBTyxFQUFFSSxHQUFHLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDWCxLQUFLLENBQUM7SUFDakQsTUFBTWMsTUFBTSxHQUFHTixPQUFPLEVBQUVFLEdBQUcsQ0FBRUMsSUFBSSxJQUFLQSxJQUFJLENBQUNYLEtBQUssQ0FBQztJQUNqRCxJQUFJLENBQUNTLGVBQWUsSUFBSSxDQUFDRyxlQUFlLEVBQUU7TUFDekMsT0FBTyxLQUFLO0lBQ2I7SUFDQSxPQUFPUixZQUFZLENBQUNLLGVBQWUsRUFBRUcsZUFBZSxDQUFDLElBQUlSLFlBQVksQ0FBQ1MsTUFBTSxFQUFtQkMsTUFBdUIsQ0FBQztFQUN4SDtFQUVBLGVBQWVQLGdCQUFnQkEsQ0FBQ1EsR0FBaUIsRUFBMEM7SUFDMUYsSUFBSSxPQUFPQSxHQUFHLEtBQUssVUFBVSxFQUFFO01BQzlCLE9BQU9BLEdBQUcsQ0FBQyxDQUFDO0lBQ2I7SUFDQSxPQUFPQSxHQUFHO0VBQ1g7RUFFQSxTQUFTQyxtQkFBbUJBLENBQUNoQixLQUFXLEVBQUVpQixTQUFvQixFQUFFQyxnQkFBeUIsRUFBVTtJQUNsRyxJQUFJQyxpQkFBaUIsR0FBRyxFQUFFO0lBQzFCLElBQUlELGdCQUFnQixFQUFFO01BQ3JCLE9BQU81QixjQUFjLENBQUM4QixXQUFXLENBQUNwQixLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ25EO0lBQ0EsUUFBUWlCLFNBQVM7TUFDaEIsS0FBSyxVQUFVO1FBQ2RFLGlCQUFpQixHQUFHRSxVQUFVLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLE1BQU0sQ0FBQ3ZCLEtBQUssQ0FBQztRQUM5RDtNQUNELEtBQUssTUFBTTtRQUNWbUIsaUJBQWlCLEdBQUdFLFVBQVUsQ0FBQ0csZUFBZSxDQUFDLENBQUMsQ0FBQ0QsTUFBTSxDQUFDdkIsS0FBSyxDQUFDO1FBQzlEO01BQ0Q7UUFDQztJQUNGO0lBQ0EsT0FBT21CLGlCQUFpQjtFQUN6Qjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU00sV0FBV0EsQ0FDbkI1QixRQUF3QixFQUN4QkcsS0FBdUMsRUFDdkNpQixTQUFvQixFQUNwQkMsZ0JBQXlCLEVBQ2hCO0lBQ1QsSUFBSVEsUUFBeUIsR0FBRyxFQUFFO0lBQ2xDLElBQUksT0FBTzFCLEtBQUssS0FBSyxTQUFTLEVBQUU7TUFDL0IwQixRQUFRLEdBQUdDLG1CQUFtQixDQUFDM0IsS0FBSyxDQUFDO0lBQ3RDLENBQUMsTUFBTSxJQUFJQSxLQUFLLFlBQVk0QixJQUFJLEVBQUU7TUFDakNGLFFBQVEsR0FBR1YsbUJBQW1CLENBQUNoQixLQUFLLEVBQUVpQixTQUFTLEVBQUVDLGdCQUFnQixDQUFDO0lBQ25FLENBQUMsTUFBTTtNQUNOUSxRQUFRLEdBQUcxQixLQUFLO0lBQ2pCO0lBRUEsUUFBUUgsUUFBUTtNQUNmLEtBQUtnQyxjQUFjLENBQUNDLEVBQUU7UUFDckIsT0FBTyxLQUFLSixRQUFRLEVBQUU7TUFDdkIsS0FBS0csY0FBYyxDQUFDRSxFQUFFO1FBQ3JCLE9BQU8sS0FBS0wsUUFBUSxFQUFFO01BQ3ZCLEtBQUtHLGNBQWMsQ0FBQ0csRUFBRTtRQUNyQixPQUFPLE1BQU1OLFFBQVEsRUFBRTtNQUN4QixLQUFLRyxjQUFjLENBQUNJLEVBQUU7UUFDckIsT0FBTyxNQUFNUCxRQUFRLEVBQUU7TUFDeEIsS0FBS0csY0FBYyxDQUFDSyxFQUFFO1FBQ3JCLE9BQU8sR0FBR1IsUUFBUSxFQUFFO01BQ3JCLEtBQUtHLGNBQWMsQ0FBQ00sUUFBUTtRQUMzQixPQUFPLElBQUlULFFBQVEsR0FBRztNQUN2QixLQUFLRyxjQUFjLENBQUNPLFFBQVE7UUFDM0IsT0FBTyxJQUFJVixRQUFRLEVBQUU7TUFDdEIsS0FBS0csY0FBYyxDQUFDUSxVQUFVO1FBQzdCLE9BQU8sR0FBR1gsUUFBUSxHQUFHO01BQ3RCLEtBQUtHLGNBQWMsQ0FBQ1MsRUFBRTtRQUNyQixPQUFPLE1BQU1aLFFBQVEsR0FBRztNQUN6QixLQUFLRyxjQUFjLENBQUNVLFdBQVc7UUFDOUIsT0FBTyxNQUFNYixRQUFRLElBQUk7TUFDMUIsS0FBS0csY0FBYyxDQUFDVyxXQUFXO1FBQzlCLE9BQU8sTUFBTWQsUUFBUSxHQUFHO01BQ3pCLEtBQUtHLGNBQWMsQ0FBQ1ksYUFBYTtRQUNoQyxPQUFPLEtBQUtmLFFBQVEsSUFBSTtNQUN6QjtRQUNDLE9BQU9BLFFBQVEsRUFBRWdCLFFBQVEsQ0FBQyxDQUFDO0lBQzdCO0VBQ0Q7RUFFQSxTQUFTQyx1QkFBdUJBLENBQUM5QyxRQUF3QixFQUFFRyxLQUFtQixFQUFFaUIsU0FBb0IsRUFBRUMsZ0JBQXlCLEVBQVU7SUFDeEksT0FBT08sV0FBVyxDQUFDNUIsUUFBUSxFQUFFRyxLQUFLLENBQUNHLFdBQVcsRUFBRWMsU0FBUyxFQUFFQyxnQkFBZ0IsQ0FBQztFQUM3RTtFQUVBLFNBQVMwQiw2QkFBNkJBLENBQ3JDL0MsUUFBd0IsRUFDeEJnRCxNQUE4RCxFQUM5RDVCLFNBQW9CLEVBQ3BCQyxnQkFBeUIsRUFDaEI7SUFDVCxJQUFJNEIsU0FBaUMsR0FBRyxFQUFFO0lBQzFDLElBQUlDLFNBQWlDLEdBQUcsRUFBRTtJQUMxQyxJQUFJLE9BQU9GLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7TUFDbkNDLFNBQVMsR0FBR25CLG1CQUFtQixDQUFDa0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsTUFBTSxJQUFJQSxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVlqQixJQUFJLEVBQUU7TUFDckNrQixTQUFTLEdBQUc5QixtQkFBbUIsQ0FBQzZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTVCLFNBQVMsRUFBRUMsZ0JBQWdCLENBQUM7SUFDeEUsQ0FBQyxNQUFNLElBQUksT0FBTzJCLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7TUFDekNDLFNBQVMsR0FBR0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDMUMsV0FBcUI7SUFDNUMsQ0FBQyxNQUFNO01BQ04yQyxTQUFTLEdBQUdELE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEI7SUFFQSxJQUFJLE9BQU9BLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7TUFDbkNFLFNBQVMsR0FBR3BCLG1CQUFtQixDQUFDa0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsTUFBTSxJQUFJQSxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVlqQixJQUFJLEVBQUU7TUFDckNtQixTQUFTLEdBQUcvQixtQkFBbUIsQ0FBQzZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTVCLFNBQVMsRUFBRUMsZ0JBQWdCLENBQUM7SUFDeEUsQ0FBQyxNQUFNLElBQUksT0FBTzJCLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7TUFDekNFLFNBQVMsR0FBR0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDMUMsV0FBcUI7SUFDNUMsQ0FBQyxNQUFNO01BQ040QyxTQUFTLEdBQUdGLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEI7SUFDQSxJQUFJaEQsUUFBUSxLQUFLZ0MsY0FBYyxDQUFDbUIsRUFBRSxFQUFFO01BQ25DLE9BQU8sR0FBR0YsU0FBUyxNQUFNQyxTQUFTLEVBQUU7SUFDckMsQ0FBQyxNQUFNO01BQ04sT0FBTyxLQUFLRCxTQUFTLE1BQU1DLFNBQVMsR0FBRztJQUN4QztFQUNEO0VBRUEsU0FBU0UsdUJBQXVCQSxDQUFDcEQsUUFBd0IsRUFBVztJQUNuRSxPQUFPQSxRQUFRLEtBQUtnQyxjQUFjLENBQUNtQixFQUFFLElBQUluRCxRQUFRLEtBQUtnQyxjQUFjLENBQUNxQixFQUFFO0VBQ3hFO0VBRUEsU0FBU3ZCLG1CQUFtQkEsQ0FBQzNCLEtBQWMsRUFBVTtJQUNwRCxPQUFPQSxLQUFLLEdBQ1RiLGNBQWMsQ0FBQ2dFLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxHQUM1RGhFLGNBQWMsQ0FBQ2dFLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQztFQUNqRTs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0MsdUJBQXVCQSxDQUMvQkMsY0FBMEMsRUFDMUNDLFdBQTBDLEVBQzFDQyxzQkFBZ0MsRUFDaENDLGdCQUF3QyxFQUM5QjtJQUNWLElBQUlILGNBQWMsRUFBRUksaUJBQWlCLEtBQUssYUFBYSxFQUFFO01BQ3hELE9BQU8sSUFBSTtJQUNaO0lBRUEsTUFBTUMsU0FBUyxHQUFHQyxvQkFBb0IsQ0FBQ0wsV0FBVyxDQUFDLElBQUksQ0FBQ0UsZ0JBQWdCLENBQUNGLFdBQVcsQ0FBQ00sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEdKLGdCQUFnQixDQUFDRixXQUFXLENBQUNNLElBQUksQ0FBQyxHQUFHLENBQUNKLGdCQUFnQixDQUFDRixXQUFXLENBQUNNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBRWxGLElBQUksQ0FBQ0YsU0FBUyxFQUFFO01BQ2YsT0FBTyxJQUFJO0lBQ1o7SUFFQSxNQUFNRyxLQUFLLEdBQUdSLGNBQWMsQ0FBQ1EsS0FBSyxJQUFJUixjQUFjLENBQUNPLElBQUk7SUFDekQsSUFBSSxDQUFDTCxzQkFBc0IsQ0FBQ08sUUFBUSxDQUFDRCxLQUFLLENBQUMsRUFBRTtNQUM1Q04sc0JBQXNCLENBQUNRLElBQUksQ0FBQ0YsS0FBSyxDQUFDO0lBQ25DO0lBRUEsSUFBSVIsY0FBYyxDQUFDVyxJQUFJLEtBQUssVUFBVSxJQUFJWCxjQUFjLENBQUNXLElBQUksS0FBSyxNQUFNLEVBQUU7TUFDekUsT0FBTyxLQUFLO0lBQ2I7SUFFQVYsV0FBVyxDQUFDVCxNQUFNLEdBQUcsRUFBRTtJQUN2QixPQUFPLElBQUk7RUFDWjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBU2Msb0JBQW9CQSxDQUFDTCxXQUF1RixFQUFXO0lBQy9ILE1BQU1XLGNBQWMsR0FBRyxDQUFDcEMsY0FBYyxDQUFDSyxFQUFFLEVBQUVMLGNBQWMsQ0FBQ0ksRUFBRSxFQUFFSixjQUFjLENBQUNFLEVBQUUsRUFBRUYsY0FBYyxDQUFDRyxFQUFFLEVBQUVILGNBQWMsQ0FBQ0MsRUFBRSxDQUFDO0lBQ3RILE1BQU1vQyxRQUFRLEdBQUcsQ0FBQ3JDLGNBQWMsQ0FBQ21CLEVBQUUsRUFBRW5CLGNBQWMsQ0FBQ3FCLEVBQUUsQ0FBQztJQUV2RCxNQUFNaUIsRUFBRSxHQUFHYixXQUFXLENBQUN6RCxRQUFRO0lBQy9CLE1BQU11RSxRQUFRLEdBQUdkLFdBQVcsQ0FBQ1QsTUFBTSxFQUFFbEQsTUFBTSxJQUFJLENBQUM7O0lBRWhEO0lBQ0EsSUFBSXNFLGNBQWMsQ0FBQ0gsUUFBUSxDQUFDSyxFQUFFLENBQUMsRUFBRTtNQUNoQyxPQUFPQyxRQUFRLEtBQUssQ0FBQztJQUN0Qjs7SUFFQTtJQUNBLElBQUlGLFFBQVEsQ0FBQ0osUUFBUSxDQUFDSyxFQUFFLENBQUMsRUFBRTtNQUMxQixPQUFPQyxRQUFRLEtBQUssQ0FBQztJQUN0Qjs7SUFFQTtJQUNBLE9BQU8sSUFBSTtFQUNaO0VBRUEsU0FBU0MsVUFBVUEsQ0FDbEJDLE1BQXlCLEVBQ3pCQyxZQUF3QyxFQUN4Q0MsaUJBQStDLEVBQy9DQyxrQ0FBeUQsRUFDbEQ7SUFDUCxJQUFJRixZQUFZLEVBQUU7TUFDakIsTUFBTUcsNEJBQXFELEdBQUcsQ0FBQyxDQUFDO01BQ2hFLE1BQU1DLHdCQUFrQyxHQUFHLEVBQUU7TUFDN0MsTUFBTXBCLHNCQUFnQyxHQUFHLEVBQUU7TUFDM0MsTUFBTXFCLHVCQUFpQyxHQUFHLEVBQUU7TUFDNUMsTUFBTXBCLGdCQUF3QyxHQUFHLENBQUMsQ0FBQztNQUVuRCxLQUFLLE1BQU1GLFdBQVcsSUFBSWlCLFlBQVksRUFBRTtRQUN2QyxNQUFNbEIsY0FBYyxHQUFHbUIsaUJBQWlCLENBQUNLLElBQUksQ0FBRUMsS0FBSyxJQUFLQSxLQUFLLENBQUNsQixJQUFJLEtBQUtOLFdBQVcsQ0FBQ00sSUFBSSxDQUFDO1FBQ3pGLElBQUlQLGNBQWMsRUFBRTtVQUNuQjtVQUNBLElBQUkwQixNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUM3QixjQUFjLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQ0EsY0FBYyxFQUFFOEIsVUFBVSxFQUFFO1lBQ3RHUix3QkFBd0IsQ0FBQ1osSUFBSSxDQUFDVixjQUFjLENBQUNRLEtBQUssSUFBSVIsY0FBYyxDQUFDTyxJQUFJLENBQUM7WUFDMUU7VUFDRDtVQUNBO1VBQ0EsSUFBSW1CLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQzdCLGNBQWMsRUFBRSxjQUFjLENBQUMsSUFBSUEsY0FBYyxFQUFFK0IsWUFBWSxFQUFFO1lBQ3pHUix1QkFBdUIsQ0FBQ2IsSUFBSSxDQUFDVixjQUFjLENBQUNRLEtBQUssSUFBSVIsY0FBYyxDQUFDTyxJQUFJLENBQUM7WUFDekU7VUFDRDtVQUNBO1VBQ0EsSUFBSSxDQUFDUix1QkFBdUIsQ0FBQ0MsY0FBYyxFQUFFQyxXQUFXLEVBQUVDLHNCQUFzQixFQUFFQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3BHO1VBQ0Q7VUFFQSxNQUFNO1lBQUVRO1VBQUssQ0FBQyxHQUFHWCxjQUFjO1VBQy9CLE1BQU1nQyxVQUFVLEdBQUdmLE1BQU0sQ0FBQ2dCLFNBQVMsQ0FBRUMsS0FBSyxJQUFLQSxLQUFLLENBQUNDLEdBQUcsS0FBS2xDLFdBQVcsQ0FBQ00sSUFBSSxDQUFDO1VBQzlFLE1BQU07WUFBRS9ELFFBQVE7WUFBRWdEO1VBQU8sQ0FBQyxHQUFHUyxXQUFXO1VBQ3hDLElBQUltQyx5QkFBd0Q7VUFDNUQsSUFBSUMsZUFBZSxDQUFDekMsdUJBQXVCLENBQUNwRCxRQUFRLENBQUMsRUFBRTtZQUN0RDRGLHlCQUF5QixHQUFHO2NBQzNCNUYsUUFBUTtjQUNSQyxjQUFjLEVBQUUrQztZQUNqQixDQUFDO1VBQ0YsQ0FBQyxNQUFNO1lBQ040Qyx5QkFBeUIsR0FBRztjQUMzQjVGLFFBQVEsRUFBRUEsUUFBMEU7Y0FDcEZDLGNBQWMsRUFBRStDO1lBQ2pCLENBQUM7VUFDRjtVQUNBLElBQUl3QyxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDdEI7WUFDQSxNQUFNTSxRQUF5QixHQUFHO2NBQ2pDSCxHQUFHLEVBQUVsQyxXQUFXLENBQUNNLElBQUk7Y0FDckJDLEtBQUssRUFBRVIsY0FBYyxDQUFDUSxLQUFlO2NBQ3JDNEIseUJBQXlCLEVBQUUsQ0FBQ0EseUJBQXlCLENBQUM7Y0FDdER6QixJQUFJLEVBQUVBLElBQXVDO2NBQzdDNEIsSUFBSSxFQUFFNUIsSUFBSSxLQUFLLFdBQVcsR0FBRyxJQUFJLEdBQUc7WUFDckMsQ0FBQztZQUNETSxNQUFNLENBQUNQLElBQUksQ0FBQzRCLFFBQVEsQ0FBQztVQUN0QixDQUFDLE1BQU07WUFDTjtZQUNBLE1BQU1FLFlBQVksR0FBR3ZCLE1BQU0sQ0FBQ2UsVUFBVSxDQUFDO1lBQ3ZDO1lBQ0EsSUFBSSxDQUFDUSxZQUFZLENBQUNDLFVBQVUsSUFBSSxLQUFLLEtBQUssQ0FBQ3BCLDRCQUE0QixDQUFDbUIsWUFBWSxDQUFDTCxHQUFHLENBQUMsRUFBRTtjQUMxRkssWUFBWSxDQUFDSix5QkFBeUIsR0FBRyxDQUFDQSx5QkFBeUIsQ0FBQztjQUNwRWYsNEJBQTRCLENBQUNtQixZQUFZLENBQUNMLEdBQUcsQ0FBQyxHQUFHLElBQUk7WUFDdEQsQ0FBQyxNQUFNO2NBQ0xLLFlBQVksQ0FBQ0oseUJBQXlCLENBQXFDMUIsSUFBSSxDQUFDMEIseUJBQXlCLENBQUM7WUFDNUc7VUFDRDtRQUNEO01BQ0Q7TUFDQSxJQUFJZCx3QkFBd0IsQ0FBQ2hGLE1BQU0sR0FBRyxDQUFDLElBQUk0RCxzQkFBc0IsQ0FBQzVELE1BQU0sR0FBRyxDQUFDLElBQUlpRix1QkFBdUIsQ0FBQ2pGLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDbkgsTUFBTW9HLFFBQWtCLEdBQUcsRUFBRTtRQUM3QixJQUFJcEIsd0JBQXdCLENBQUNoRixNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQ3hDLE1BQU1xRyx1QkFBdUIsR0FBRyxXQUFXckIsd0JBQXdCLENBQUNzQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7VUFDekZGLFFBQVEsQ0FBQ2hDLElBQUksQ0FBQzVFLGNBQWMsQ0FBQ2dFLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxDQUFDNkMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ2pHO1FBQ0EsSUFBSXBCLHVCQUF1QixDQUFDakYsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUN2QyxNQUFNa0UsS0FBSyxHQUFHLFdBQVdlLHVCQUF1QixDQUFDcUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1VBQ3RFRixRQUFRLENBQUNoQyxJQUFJLENBQUM1RSxjQUFjLENBQUNnRSxPQUFPLENBQUMsNkJBQTZCLEVBQUUsQ0FBQ1UsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5RTtRQUNBLElBQUlOLHNCQUFzQixDQUFDNUQsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUN0QyxNQUFNa0UsS0FBSyxHQUFHLFdBQVdOLHNCQUFzQixDQUFDMEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1VBQ3JFRixRQUFRLENBQUNoQyxJQUFJLENBQUM1RSxjQUFjLENBQUNnRSxPQUFPLENBQUMsNEJBQTRCLEVBQUUsQ0FBQ1UsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RTtRQUNBWSxrQ0FBa0MsQ0FBQ3NCLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO01BQzFEO0lBQ0Q7RUFDRDtFQUVBLE1BQU1QLGVBQWUsR0FBRztJQUN2QmxHLFlBQVk7SUFDWmEsZ0JBQWdCO0lBQ2hCRSxnQkFBZ0I7SUFDaEJILFlBQVk7SUFDWnFCLFdBQVc7SUFDWG1CLDZCQUE2QjtJQUM3QkssdUJBQXVCO0lBQ3ZCb0IsVUFBVTtJQUNWMUI7RUFDRCxDQUFDO0VBQUMsT0FFYStDLGVBQWU7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -199,15 +199,71 @@ function convertBoolToString(value: boolean): string {
|
|
|
199
199
|
: resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_FALSE");
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
/**
|
|
203
|
+
* Handles the single range validation and updates for a filter value.
|
|
204
|
+
* @param filterCriteria The metadata for the filter
|
|
205
|
+
* @param filterValue The filter value to validate
|
|
206
|
+
* @param singleRangeTokenLabels Array to collect labels of invalid single range filters
|
|
207
|
+
* @param singleRangeUsage Record to track usage count of single range filters
|
|
208
|
+
* @returns True if processing should continue, false if it should skip
|
|
209
|
+
*/
|
|
210
|
+
function handleSingleRangeFilter(
|
|
211
|
+
filterCriteria: EasyFilterPropertyMetadata,
|
|
212
|
+
filterValue: EasyFilterResult["filter"][0],
|
|
213
|
+
singleRangeTokenLabels: string[],
|
|
214
|
+
singleRangeUsage: Record<string, number>
|
|
215
|
+
): boolean {
|
|
216
|
+
if (filterCriteria?.filterRestriction !== "SingleRange") {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const isInvalid = isInvalidSingleRange(filterValue) || (singleRangeUsage[filterValue.name] ?? 0) > 0;
|
|
221
|
+
singleRangeUsage[filterValue.name] = (singleRangeUsage[filterValue.name] ?? 0) + 1;
|
|
222
|
+
|
|
223
|
+
if (!isInvalid) {
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const label = filterCriteria.label || filterCriteria.name;
|
|
228
|
+
if (!singleRangeTokenLabels.includes(label)) {
|
|
229
|
+
singleRangeTokenLabels.push(label);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (filterCriteria.type === "Calendar" || filterCriteria.type === "Time") {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
filterValue.values = [];
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Validates if a filter value violates the SingleRange restriction.
|
|
241
|
+
// Returns true if invalid, false if valid.
|
|
242
|
+
// Rules for SingleRange:
|
|
243
|
+
// - Allowed operators: EQ, LE, LT, GE, GT, BT, NB
|
|
244
|
+
// - Single-value operators (EQ, LE, LT, GE, GT): must have exactly 1 value
|
|
245
|
+
// - Range operators (BT, NB): must have exactly 2 values (lower & upper bound)
|
|
246
|
+
// - Only one condition/token is allowed per property (should be enforced outside)
|
|
247
|
+
//
|
|
203
248
|
function isInvalidSingleRange(filterValue: { operator: FilterOperator; values: (string | number | Date | boolean)[] }): boolean {
|
|
204
|
-
const
|
|
249
|
+
const singleValueOps = [FilterOperator.EQ, FilterOperator.LE, FilterOperator.LT, FilterOperator.GE, FilterOperator.GT];
|
|
250
|
+
const rangeOps = [FilterOperator.BT, FilterOperator.NB];
|
|
251
|
+
|
|
252
|
+
const op = filterValue.operator;
|
|
253
|
+
const valCount = filterValue.values?.length || 0;
|
|
205
254
|
|
|
206
|
-
//
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
255
|
+
// Single-value operators → must have exactly 1 value
|
|
256
|
+
if (singleValueOps.includes(op)) {
|
|
257
|
+
return valCount !== 1;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Range operators (Between / Not Between) → must have exactly 2 values
|
|
261
|
+
if (rangeOps.includes(op)) {
|
|
262
|
+
return valCount !== 2;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Anything else is not allowed for SingleRange
|
|
266
|
+
return true;
|
|
211
267
|
}
|
|
212
268
|
|
|
213
269
|
function formatData(
|
|
@@ -221,6 +277,7 @@ function formatData(
|
|
|
221
277
|
const nonFilterableTokenLabels: string[] = [];
|
|
222
278
|
const singleRangeTokenLabels: string[] = [];
|
|
223
279
|
const hiddenFilterTokenLabels: string[] = [];
|
|
280
|
+
const singleRangeUsage: Record<string, number> = {};
|
|
224
281
|
|
|
225
282
|
for (const filterValue of filterValues) {
|
|
226
283
|
const filterCriteria = filterBarMetadata.find((field) => field.name === filterValue.name);
|
|
@@ -235,10 +292,9 @@ function formatData(
|
|
|
235
292
|
hiddenFilterTokenLabels.push(filterCriteria.label || filterCriteria.name);
|
|
236
293
|
continue;
|
|
237
294
|
}
|
|
238
|
-
//
|
|
239
|
-
if (filterCriteria
|
|
240
|
-
|
|
241
|
-
filterValue.values = []; // Reset values to avoid adding invalid token values
|
|
295
|
+
// Handles the single range validation and updates for a filter value
|
|
296
|
+
if (!handleSingleRangeFilter(filterCriteria, filterValue, singleRangeTokenLabels, singleRangeUsage)) {
|
|
297
|
+
continue;
|
|
242
298
|
}
|
|
243
299
|
|
|
244
300
|
const { type } = filterCriteria;
|
|
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
|
|
|
22
22
|
controls: [],
|
|
23
23
|
elements: [],
|
|
24
24
|
// eslint-disable-next-line no-template-curly-in-string
|
|
25
|
-
version: "1.
|
|
25
|
+
version: "1.142.0",
|
|
26
26
|
noLibraryCSS: false
|
|
27
27
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
28
|
});
|
|
@@ -62,15 +62,15 @@ M_EASY_FILTER_FILLED_STAR=Remove from Favorites
|
|
|
62
62
|
# XMSG
|
|
63
63
|
M_EASY_FILTER_EMPTY_START=Add to Favorites
|
|
64
64
|
# XMSG: Text read out by the screenreader, telling users how to move to the list under the search field containing favorite queries and last used queries, if available
|
|
65
|
-
|
|
65
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queries and last used queries, press the Arrow Down key
|
|
66
66
|
# XMSG
|
|
67
67
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Only one single value can be applied to the following: {0}
|
|
68
68
|
# XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
|
|
69
|
-
M_EASY_FILTER_NON_FILTERABLE=
|
|
69
|
+
M_EASY_FILTER_NON_FILTERABLE=This specific app doesn''t support filtering on {0}.
|
|
70
70
|
# XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
|
|
71
|
-
M_EASY_FILTER_SINGLE_RANGE=
|
|
71
|
+
M_EASY_FILTER_SINGLE_RANGE=Only one single condition can be applied to {0}.
|
|
72
72
|
# XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
|
|
73
|
-
M_EASY_FILTER_HIDDEN_FILTER=
|
|
73
|
+
M_EASY_FILTER_HIDDEN_FILTER=This specific app doesn''t support filtering on {0}.
|
|
74
74
|
# XTIT: Title in the shell user menu to open the shortcut dialog and the dialog title
|
|
75
75
|
C_SHORTCUT_TITLE=Keyboard Shortcuts
|
|
76
76
|
# XMSG,30: Placeholder message for the keyboard interaction input field
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=\u0625\u063A\u0644\u0627\u0642
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=\u0644\u0627 \u062A\u0648\u062C\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0645\u0624\u062E\u0631\u064B\u0627
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=\u0625\u0632\u0627\u0644\u0629 \u0645\u0646 \u0627\u0644\u0645\u0641\u0636\u0644\u0629
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=\u0625\u0636\u0627\u0641\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0641\u0636\u0644\u0629
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0644\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0648\u0622\u062E\u0631 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0645\u0633\u062A\u062E\u062F\u0645\u0629\u060C \u0627\u0636\u063A\u0637 \u0639\u0644\u0649 \u0627\u0644\u0645\u0641\u062A\u0627\u062D \u0633\u0647\u0645 \u0644\u0623\u0633\u0641\u0644
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=\u064A\u0645\u0643\u0646 \u062A\u0637\u0628\u064A\u0642 \u0642\u064A\u0645\u0629 \u0648\u0627\u062D\u062F\u0629 \u0641\u0642\u0637 \u0639\u0644\u0649 \u0627\u0644\u062A\u0627\u0644\u064A\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=\u0644\u0627 \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0644\u0644\u062E\u0627\u0635\u064A\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=\u0644\u0627\u062D\u0638 \u0623\u0646\u0647 \u0644\u0627 \u064A\u0645\u0643\u0646 \u062A\u0637\u0628\u064A\u0642 \u0633\u0648\u0649 \u0634\u0631\u0637 \u0648\u0627\u062D\u062F \u0639\u0644\u0649 \u0645\u0627 \u064A\u0644\u064A\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=\u0644\u0627 \u064A\u0645\u0643\u0646\u0643 \u0627\u
|
|
|
37
37
|
C_SHORTCUT_TITLE=\u0627\u062E\u062A\u0635\u0627\u0631\u0627\u062A \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=\u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u0627\u062E\u062A\u0635\u0627\u0631 \u0644\u0648\u062D\u0629 \u0645\u0641\u0627\u062A\u064A\u062D
|
|
39
39
|
C_SHORTCUT_NODATA=\u062A\u0631\u0643\u064A\u0632 \u0639\u0644\u0649 \u062C\u0632\u0621 \u0645\u0646 \u0627\u0644\u0634\u0627\u0634\u0629 \u0644\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u0627\u062E\u062A\u0635\u0627\u0631\u0627\u062A \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=\u0625\u0628\u0647\u0627\u0645 \u0644\u0623\u0639\u0644\u0649 \u0644\u0633\u0647\u0648\u0644\u0629 \u0627\u0644\u062A\u0635\u0641\u064A\u0629
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=\u0625\u0628\u0647\u0627\u0645 \u0644\u0623\u0633\u0641\u0644 \u0644\u0633\u0647\u0648\u0644\u0629 \u0627\u0644\u062A\u0635\u0641\u064A\u0629
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0627\u062A
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=\u062A\u062D\u0631\u064A\u0631
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=\u062D\u0641\u0638
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=\u0625\u0644\u063A\u0627\u0621
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=\u0417\u0430\u0442\u0432\u0430\u0440\u044F\u043D\u04
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=\u041D\u044F\u043C\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=\u041F\u0440\u0435\u043C\u0430\u0445\u0432\u0430\u043D\u0435 \u043E\u0442 \u0444\u0430\u0432\u043E\u0440\u0438\u0442\u0438\u0442\u0435
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=\u0414\u043E\u0431\u0430\u0432\u044F\u043D\u0435 \u043A\u044A\u043C \u0444\u0430\u0432\u043E\u0440\u0438\u0442\u0438\u0442\u0435
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0417\u0430 \u043F\u0440\u0435\u043C\u0438\u043D\u0430\u0432\u0430\u043D\u0435 \u043A\u044A\u043C \u0441\u043F\u0438\u0441\u044A\u043A\u0430 \u0441 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u043D\u0438 \u0438 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F \u043D\u0430\u0442\u0438\u0441\u043D\u0435\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0430 \u0441\u044A\u0441 \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u043D\u0430\u0434\u043E\u043B\u0443
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=\u0421\u0430\u043C\u043E \u0435\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u043C\u043E\u0436\u0435 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0430 \u043A\u044A\u043C \u0441\u043B\u0435\u0434\u043D\u043E\u0442\u043E\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=\u0412 \u0442\u043E\u0432\u0430 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u043C\u043E\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0444\u0438\u043B\u0442\u0440\u0438\u0440\u0430 \u043F\u043E \u0441\u043B\u0435\u0434\u043D\u043E\u0442\u043E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=\u0418\u043C\u0430\u0439\u0442\u0435 \u043F\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0441\u0430\u043C\u043E \u0435\u0434\u043D\u043E \u0443\u0441\u043B\u043E\u0432\u0438\u0435 \u043C\u043E\u0436\u0435 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u043E \u043A\u044A\u043C \u0441\u043B\u0435\u0434\u043D\u043E\u0442\u043E\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=\u0412 \u0442\u043E\u0432\u0430 \u043F\u0440\u0438\u
|
|
|
37
37
|
C_SHORTCUT_TITLE=\u041A\u043B\u0430\u0432\u0438\u0448\u043D\u0438 \u043A\u043E\u043C\u0431\u0438\u043D\u0430\u0446\u0438\u0438
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043D\u0430 \u043A\u043B\u0430\u0432\u0438\u0448\u043D\u0430 \u043A\u043E\u043C\u0431\u0438\u043D\u0430\u0446\u0438\u044F
|
|
39
39
|
C_SHORTCUT_NODATA=\u0424\u043E\u043A\u0443\u0441\u0438\u0440\u0430\u0439\u0442\u0435 \u0447\u0430\u0441\u0442 \u043E\u0442 \u0435\u043A\u0440\u0430\u043D\u0430, \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u043D\u0438\u0442\u0435 \u043A\u043E\u043C\u0431\u0438\u043D\u0430\u0446\u0438\u0438
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=\u041F\u0430\u043B\u0435\u0446 \u043D\u0430\u0433\u043E\u0440\u0435 \u0437\u0430 easy filter
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=\u041F\u0430\u043B\u0435\u0446 \u043D\u0430\u0434\u043E\u043B\u0443 \u0437\u0430 easy filter
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u0442\u0430 \u0432\u0440\u044A\u0437\u043A\u0430 \u0435 \u0438\u0437\u043F\u0440\u0430\u0442\u0435\u043D\u0430
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u043D\u0435
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=\u0417\u0430\u043F\u0430\u0437\u0432\u0430\u043D\u0435
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=\u041E\u0442\u043A\u0430\u0437
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Tancar
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=No hi ha \u00FAltimes consultes utilitzades
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=Eliminar dels preferits
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=Afegir a preferits
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Per a despla\u00E7ar a la llista de consultes preferides i \u00FAltimes consultes utilitzades, premeu la tecla Fletxa cap avall
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Nom\u00E9s es pot aplicar un valor a l''element seg\u00FCent\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=No podeu filtrar per la propietat seg\u00FCent en aquesta aplicaci\u00F3\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=Tingueu en compte que nom\u00E9s es pot aplicar una condici\u00F3 a l''element seg\u00FCent\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=No podeu filtrar per la propietat seg\u00FCent en aq
|
|
|
37
37
|
C_SHORTCUT_TITLE=Acc\u00E9s r\u00E0pid
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=Cercar una drecera de teclat
|
|
39
39
|
C_SHORTCUT_NODATA=Centreu-vos en una part de la pantalla per a veure les dreceres de teclat
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=Polzes amunt per al filtre f\u00E0cil
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=Polzes avall per al filtre f\u00E0cil
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=Comentaris enviats
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=Editar
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=Desar
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Cancel\u00B7lar
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Zatvori
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Nema posljednje kori\u0161\u0107enih upita
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=Ukloni iz omiljenih
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=Dodaj u omiljene
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Da pomjerite listu omiljenih upita i posljednje kori\u0161\u0107enih upita, pritisnite taster Strelica nadolje
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Samo jedna vrijednost se mo\u017Ee primijeniti na sljede\u0107e\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=Ne mo\u017Eete filtrirati sljede\u0107e svojstvo u ovoj aplikaciji\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=Imajte u vidu da se samo jedan uslov mo\u017Ee primijeniti na sljede\u0107e\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=Ne mo\u017Eete filtrirati sljede\u0107e svojstvo u o
|
|
|
37
37
|
C_SHORTCUT_TITLE=Pre\u010Dice na tastaturi
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=Na\u0111i pre\u010Dicu na tastaturi
|
|
39
39
|
C_SHORTCUT_NODATA=Fokusirajte se na odre\u0111eni dio ekrana da vidite pre\u010Dice na tastaturi
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=Pozitivna ocjena za lako filtriranje
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=Negativna ocjena za lako filtriranje
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=Povratne informacije su poslate
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=Uredi
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=Sa\u010Duvaj
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Odustani
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Zav\u0159\u00EDt
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Ne naposledy pou\u017Eit\u00E9 dotazy
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=Odebrat z obl\u00EDben\u00FDch
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=P\u0159idat k obl\u00EDben\u00FDm
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Pro p\u0159echod k seznamu obl\u00EDben\u00FDch dotaz\u016F a naposledy pou\u017Eit\u00FDch dotaz\u016F stiskn\u011Bte \u0161ipku dol\u016F
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Jen jednu jednotlivou hodnotu lze pou\u017E\u00EDt pro toto\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=V t\u00E9to aplikaci nem\u016F\u017Eete filtrovat podle n\u00E1sleduj\u00EDc\u00ED vlastnosti\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=M\u011Bjte na z\u0159eteli, \u017Ee jen jednu jednotlivou podm\u00EDnku lze pou\u017E\u00EDt pro toto\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=V t\u00E9to aplikaci nem\u016F\u017Eete filtrovat po
|
|
|
37
37
|
C_SHORTCUT_TITLE=Kl\u00E1vesov\u00E9 zkratky
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=Najd\u011Bte kl\u00E1vesovou zkratku
|
|
39
39
|
C_SHORTCUT_NODATA=Zam\u011B\u0159it se na \u010D\u00E1st obrazovky pro kl\u00E1vesov\u00E9 zkratky
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=Palce nahoru pro snadn\u00E9 vypln\u011Bn\u00ED
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=Palce dol\u016F pro snadn\u00FD filtr
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=Zp\u011Btn\u00E1 vazba byla odesl\u00E1na
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=Upravit
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=Ulo\u017Eit
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Zru\u0161it
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Cau
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Dim ymholiadau a ddefnyddiwyd ddiwethaf
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=Tynnu o'r Ffefrynnau
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=Ychwanegu at y Ffefrynnau
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Er mwyn symud i'r rhestr o ymholiadau ffefryn ac ymholiadau a ddefnyddiwyd ddiwethaf, pwyswch yr allwedd Saeth i Lawr
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Nodwch mai dim ond un gwerth all gael ei gymhwyso i''r canlynol\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=Allwch chi ddim hidlo ar gyfer y briodwedd ganlynol yn yr ap hwn\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=Nodwch mai dim ond un amod all gael ei gymhwyso i''r canlynol\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=Allwch chi ddim hidlo ar gyfer y briodwedd ganlynol
|
|
|
37
37
|
C_SHORTCUT_TITLE=Bysellau Hwylus
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=Dod o hyd i fysellau hwylus
|
|
39
39
|
C_SHORTCUT_NODATA=Ffocyswch ar ran o'r sgrin i weld bysellau hwylus
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=Bawd i fyny am y hidlydd syml
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=Bawd i lawr am y hidlydd syml
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=Adborth wedi'i anfon
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=Golygu
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=Cadw
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Canslo
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Luk
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Ingen senest brugte foresp\u00F8rgsler
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=Fjern fra foretrukne
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=F\u00F8j til foretrukne
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Tryk p\u00E5 Pil ned for at flytte til listen over foretrukne foresp\u00F8rgsler og sidst brugte foresp\u00F8rgsler
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Kun en enkelt v\u00E6rdi kan anvendes p\u00E5 f\u00F8lgende\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=Du kan ikke filtrere efter f\u00F8lgende egenskab i denne app\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=Bem\u00E6rk, at kun en enkelt betingelse kan anvendes p\u00E5 f\u00F8lgende\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=Du kan ikke filtrere efter f\u00F8lgende egenskab i
|
|
|
37
37
|
C_SHORTCUT_TITLE=Tastaturgenveje
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=Find en tastaturgenvej
|
|
39
39
|
C_SHORTCUT_NODATA=Fokuser p\u00E5 en del af sk\u00E6rmen for at se tastaturgenvejene
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=Tommelfinger op til den nemme filtrering
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=Tommelfinger ned til den nemme filtrering
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=Feedback sendt
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=Rediger
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=Gem
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Annuller
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Schlie\u00DFen
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Kein zuletzt verwendeten Anfragen
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=Aus Favoriten entfernen
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=Zu Favoriten hinzuf\u00FCgen
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Um zu der Liste der Favoriten und zuletzt verwendeten Anfragen zu gelangen, dr\u00FCcken Sie die Taste "Pfeil nach unten".
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Es kann nur ein Einzelwert auf Folgendes angewandt werden\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=In dieser App k\u00F6nnen Sie nicht nach der folgenden Eigenschaft filtern\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=Beachten Sie, dass nur eine einzige Bedingung auf Folgendes angewandt werden kann\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=Sie k\u00F6nnen nicht nach der folgenden Eigenschaft
|
|
|
37
37
|
C_SHORTCUT_TITLE=Tastaturk\u00FCrzel
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=Tastaturk\u00FCrzel suchen
|
|
39
39
|
C_SHORTCUT_NODATA=Setzen Sie den Fokus auf eine Stelle auf dem Bildschirm, um die Tastaturk\u00FCrzel anzuzeigen.
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=Daumen hoch f\u00FCr Einfachen Filter
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=Daumen runter f\u00FCr Einfachen Filter
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=Feedback wurde gesendet
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=Bearbeiten
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=Sichern
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Abbrechen
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=\u0394\u03B5\u03BD \u03C5\u03C0\u03AC\u03C1\u03C7\u03BF\u03C5\u03BD \u03C0\u03C1\u03CC\u03C3\u03C6\u03B1\u03C4\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B1 \u03B5\u03C1\u03C9\u03C4\u03AE\u03BC\u03B1\u03C4\u03B1
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B1\u03C0\u03CC \u0391\u03B3\u03B1\u03C0\u03B7\u03BC\u03AD\u03BD\u03B1
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C4\u03B1 \u0391\u03B3\u03B1\u03C0\u03B7\u03BC\u03AD\u03BD\u03B1
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0393\u03B9\u03B1 \u03BD\u03B1 \u03BC\u03B5\u03C4\u03B1\u03BA\u03B9\u03BD\u03B7\u03B8\u03B5\u03AF\u03C4\u03B5 \u03C3\u03C4\u03B7\u03BD \u03BB\u03AF\u03C3\u03C4\u03B1 \u03BC\u03B5 \u03C4\u03B1 \u03B1\u03B3\u03B1\u03C0\u03B7\u03BC\u03AD\u03BD\u03B1 \u03B5\u03C1\u03C9\u03C4\u03AE\u03BC\u03B1\u03C4\u03B1 \u03BA\u03B1\u03B9 \u03C4\u03B1 \u03C0\u03C1\u03CC\u03C3\u03C6\u03B1\u03C4\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B1 \u03C0\u03B1\u03C4\u03AE\u03C3\u03C4\u03B5 \u03C4\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF \u039A\u03AC\u03C4\u03C9 \u0392\u03AD\u03BB\u03BF\u03C2
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=\u039C\u03CC\u03BD\u03BF \u03BC\u03AF\u03B1 \u03BC\u03B5\u03BC\u03BF\u03BD\u03C9\u03BC\u03AD\u03BD\u03B7 \u03C4\u03B9\u03BC\u03AE \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03C3\u03C4\u03B5\u03AF \u03C3\u03C4\u03B1 \u03B5\u03BE\u03AE\u03C2\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=\u0394\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF\u03C4\u03B5 \u03BD\u03B1 \u03C6\u03B9\u03BB\u03C4\u03C1\u03AC\u03C1\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B1\u03BA\u03CC\u03BB\u03BF\u03C5\u03B8\u03B7 \u03B9\u03B4\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03AE\u03BD \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=\u03A3\u03B7\u03BC\u03B5\u03B9\u03CE\u03C3\u03C4\u03B5 \u03CC\u03C4\u03B9 \u03BC\u03CC\u03BD\u03BF \u03BC\u03AF\u03B1 \u03C3\u03C5\u03BD\u03B8\u03AE\u03BA\u03B7 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03C3\u03C4\u03B5\u03AF \u03C3\u03C4\u03B1 \u03B1\u03BA\u03CC\u03BB\u03BF\u03C5\u03B8\u03B1\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=\u0394\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u0
|
|
|
37
37
|
C_SHORTCUT_TITLE=\u03A3\u03C5\u03BD\u03C4\u03BF\u03BC\u03B5\u03CD\u03C3\u03B5\u03B9\u03C2 \u03A0\u03BB\u03B7\u03BA\u03C4\u03C1\u03BF\u03BB\u03BF\u03B3\u03AF\u03BF\u03C5
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=\u0392\u03C1\u03B5\u03AF\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03C3\u03C5\u03BD\u03C4\u03CC\u03BC.\u03C0\u03BB\u03B7\u03BA\u03C4\u03C1.
|
|
39
39
|
C_SHORTCUT_NODATA=\u0395\u03C3\u03C4\u03B9\u03AC\u03C3\u03C4\u03B5 \u03C3\u03B5 \u03AD\u03BD\u03B1 \u03BC\u03AD\u03C1\u03BF\u03C2 \u03C4\u03B7\u03C2 \u03BF\u03B8\u03CC\u03BD\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B4\u03B5\u03AF\u03C4\u03B5 \u03C4\u03B9\u03C2 \u03C3\u03C5\u03BD\u03C4\u03BF\u03BC\u03B5\u03CD\u03C3\u03B5\u03B9\u03C2 \u03C0\u03BB\u03B7\u03BA\u03C4\u03C1\u03BF\u03BB\u03BF\u03B3\u03AF\u03BF\u03C5
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=\u039C\u03BF\u03C5 \u03B1\u03C1\u03AD\u03C3\u03B5\u03B9 \u03C4\u03BF \u03B5\u03CD\u03BA\u03BF\u03BB\u03BF \u03C6\u03B9\u03BB\u03C4\u03C1\u03AC\u03C1\u03B9\u03C3\u03BC\u03B1
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=\u0394\u03B5\u03BD \u03BC\u03BF\u03C5 \u03B1\u03C1\u03AD\u03C3\u03B5\u03B9 \u03C4\u03BF \u03B5\u03CD\u03BA\u03BF\u03BB\u03BF \u03C6\u03B9\u03BB\u03C4\u03C1\u03AC\u03C1\u03B9\u03C3\u03BC\u03B1
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=\u03A3\u03C7\u03CC\u03BB\u03B9\u03BF \u03B5\u03C3\u03C4\u03AC\u03BB\u03B7
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=E\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7
|
|
@@ -29,7 +29,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Close
|
|
|
29
29
|
M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=No last used queries
|
|
30
30
|
M_EASY_FILTER_FILLED_STAR=Remove from Favorites
|
|
31
31
|
M_EASY_FILTER_EMPTY_START=Add to Favorites
|
|
32
|
-
|
|
32
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queries and last used queries, press the Arrow Down key
|
|
33
33
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Only one single value can be applied to the following\: {0}
|
|
34
34
|
M_EASY_FILTER_NON_FILTERABLE=You can''t filter for the following property in this app\: {0}
|
|
35
35
|
M_EASY_FILTER_SINGLE_RANGE=Note that only one single condition can be applied to the following\: {0}
|
|
@@ -37,6 +37,12 @@ M_EASY_FILTER_HIDDEN_FILTER=You can''t filter for the following property in this
|
|
|
37
37
|
C_SHORTCUT_TITLE=Keyboard Shortcuts
|
|
38
38
|
C_SHORTCUT_PLACEHOLDER=Find a keyboard shortcut
|
|
39
39
|
C_SHORTCUT_NODATA=Focus on a part of the screen to see the keyboard shortcuts
|
|
40
|
+
|
|
41
|
+
C_EASY_FILTER_THUMBS_UP=Thumbs up for the easy filter
|
|
42
|
+
|
|
43
|
+
C_EASY_FILTER_THUMBS_DOWN=Thumbs down for the easy filter
|
|
44
|
+
|
|
45
|
+
C_EASY_FILTER_FEEDBACK_SENT=Feedback sent
|
|
40
46
|
M_INLINE_EDIT_TOOLTIP_EDIT=Edit
|
|
41
47
|
M_INLINE_EDIT_TOOLTIP_SAVE=Save
|
|
42
48
|
M_INLINE_EDIT_TOOLTIP_CANCEL=Cancel
|