fantasy-ngzorro 2.2.35 → 2.2.37
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/README.md +2 -1
- package/bundles/fantasy-ngzorro.umd.js +71 -22
- package/bundles/fantasy-ngzorro.umd.js.map +1 -1
- package/bundles/fantasy-ngzorro.umd.min.js +1 -1
- package/bundles/fantasy-ngzorro.umd.min.js.map +1 -1
- package/esm2015/hd-filter/hd-filter.component.js +15 -6
- package/esm2015/hd-table/hd-table.component.js +54 -18
- package/esm5/hd-filter/hd-filter.component.js +21 -8
- package/esm5/hd-table/hd-table.component.js +53 -17
- package/fantasy-ngzorro.metadata.json +1 -1
- package/fesm2015/fantasy-ngzorro.js +66 -21
- package/fesm2015/fantasy-ngzorro.js.map +1 -1
- package/fesm5/fantasy-ngzorro.js +71 -22
- package/fesm5/fantasy-ngzorro.js.map +1 -1
- package/hd-filter/hd-filter.component.d.ts +3 -1
- package/hd-table/hd-table.component.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1122,29 +1122,39 @@ var HdFilterComponent = /** @class */ (function () {
|
|
|
1122
1122
|
this.validateFilterForm.patchValue(patch);
|
|
1123
1123
|
};
|
|
1124
1124
|
/**
|
|
1125
|
-
*
|
|
1125
|
+
* 多选空态用 [],避免 FormControl 为 null 时 nz-select multiple 不显示 placeholder。
|
|
1126
|
+
* DateRange 必须保持 null(或把历史空数组归一为 null):业务侧大量用 !value 判断,
|
|
1127
|
+
* 若规范成 [] 会因 truthy 走进 moment(value[0]),被解析成「今天」。
|
|
1126
1128
|
*/
|
|
1127
1129
|
/**
|
|
1128
|
-
*
|
|
1130
|
+
* 多选空态用 [],避免 FormControl 为 null 时 nz-select multiple 不显示 placeholder。
|
|
1131
|
+
* DateRange 必须保持 null(或把历史空数组归一为 null):业务侧大量用 !value 判断,
|
|
1132
|
+
* 若规范成 [] 会因 truthy 走进 moment(value[0]),被解析成「今天」。
|
|
1129
1133
|
* @private
|
|
1130
1134
|
* @param {?} filter
|
|
1131
1135
|
* @param {?} value
|
|
1132
1136
|
* @return {?}
|
|
1133
1137
|
*/
|
|
1134
1138
|
HdFilterComponent.prototype.normalizeFilterControlValue = /**
|
|
1135
|
-
*
|
|
1139
|
+
* 多选空态用 [],避免 FormControl 为 null 时 nz-select multiple 不显示 placeholder。
|
|
1140
|
+
* DateRange 必须保持 null(或把历史空数组归一为 null):业务侧大量用 !value 判断,
|
|
1141
|
+
* 若规范成 [] 会因 truthy 走进 moment(value[0]),被解析成「今天」。
|
|
1136
1142
|
* @private
|
|
1137
1143
|
* @param {?} filter
|
|
1138
1144
|
* @param {?} value
|
|
1139
1145
|
* @return {?}
|
|
1140
1146
|
*/
|
|
1141
1147
|
function (filter, value) {
|
|
1142
|
-
if (filter
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1148
|
+
if (!filter) {
|
|
1149
|
+
return value;
|
|
1150
|
+
}
|
|
1151
|
+
if (filter.type === FilterListType.MultipleSelect && value == null) {
|
|
1146
1152
|
return [];
|
|
1147
1153
|
}
|
|
1154
|
+
if (filter.type === FilterListType.DateRange &&
|
|
1155
|
+
(value == null || (Array.isArray(value) && value.length === 0))) {
|
|
1156
|
+
return null;
|
|
1157
|
+
}
|
|
1148
1158
|
return value;
|
|
1149
1159
|
};
|
|
1150
1160
|
/**
|
|
@@ -1166,6 +1176,9 @@ var HdFilterComponent = /** @class */ (function () {
|
|
|
1166
1176
|
}
|
|
1167
1177
|
if (filter.type === FilterListType.DateRange) {
|
|
1168
1178
|
if (Array.isArray(value)) {
|
|
1179
|
+
if (value.length === 0) {
|
|
1180
|
+
return null;
|
|
1181
|
+
}
|
|
1169
1182
|
return value.map((/**
|
|
1170
1183
|
* @param {?} v
|
|
1171
1184
|
* @return {?}
|
|
@@ -1413,4 +1426,4 @@ if (false) {
|
|
|
1413
1426
|
*/
|
|
1414
1427
|
HdFilterComponent.prototype.schemeStore;
|
|
1415
1428
|
}
|
|
1416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWZpbHRlci9oZC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQVUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBRXRCLG1CQUFtQixFQUNwQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCO0lBb0RFLDJCQUNVLEVBQWUsRUFDNkIsV0FBZ0M7UUFGdEYsaUJBY0M7UUFiUyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQzZCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjs7OztRQTdDN0QsdUJBQWtCLEdBQUcsS0FBSyxDQUFDOzs7O1FBSTNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRW5DLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcxQyxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUN0QixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFnRCxDQUFDO1FBQzVFLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO1FBQzNELDhCQUF5QixHQUFXLENBQUMsQ0FBQzs7OztRQVF0Qyx3QkFBbUIsR0FBMkIsRUFBRSxDQUFDO1FBQ2pELDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUV0QyxlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN2QyxrQkFBYSxHQUFtQixJQUFJLENBQUM7UUFDckMsc0JBQWlCLEdBQUcsNkJBQTZCLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUdyQyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBRzVCLHNCQUFpQixHQUFHLDZCQUE2QixDQUFDO1FBQzFDLHFCQUFnQixHQUFHLGFBQWEsQ0FBQztRQTJxQmxELDBCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQzlDLDZCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3BELHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBdnFCMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMvQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUNuQyxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFDLEVBQTJCO2dCQUF6QixVQUFFLEVBQUUsZ0JBQUssRUFBRSw4QkFBWTtZQUFPLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUExQyxDQUEwQyxFQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQzthQUNsRCxTQUFTOzs7O1FBQUMsVUFBQyxFQUFhO2dCQUFYLFVBQUUsRUFBRSxnQkFBSztZQUNyQixJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7OztJQUVELG9DQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRUQsdUNBQVc7Ozs7SUFBWCxVQUFZLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO1FBQ0QsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTs7O2dCQUV6RCxXQUFXLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxXQUFXOztnQkFDekYsUUFBUSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVztZQUN0RixJQUFJLFdBQVcsSUFBSSxRQUFRLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7Ozs7SUFFRCx1Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDM0M7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELHNCQUFJLDJDQUFZOzs7O1FBQWhCO1lBQ0UsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakYsQ0FBQzs7O09BQUE7Ozs7O0lBRU8sZ0NBQUk7Ozs7SUFBWjtRQUFBLGlCQW1DQztRQWxDQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxpQkFBaUIsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzs7WUFDOUMsYUFBYSxHQUFHLEVBQUU7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7OztRQUFDLFVBQUMsSUFBSSxFQUFFLEtBQUs7WUFDbEMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FDeEMsS0FBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQ2xELEVBQUUsQ0FDSCxDQUFDO1lBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTzs7OztRQUFDLFVBQUMsSUFBSTtZQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO29CQUNsQyxLQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZO3lCQUNoRCxJQUFJLENBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUM3Qzt5QkFDQSxTQUFTOzs7O29CQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxFQUE1QyxDQUE0QyxFQUFDLENBQUM7aUJBQ3JFO3FCQUFNO29CQUNMLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTOzs7O29CQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxFQUE1QyxDQUE0QyxFQUFDLENBQUM7aUJBQ3RIO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7Ozs7O0lBRUQseUNBQWE7Ozs7Ozs7SUFBYixVQUFjLEVBQU8sRUFBRSxLQUFVLEVBQUUseUJBQThCLEVBQUUsWUFBa0I7UUFBckYsaUJBYUM7UUFaQyxJQUFJLHlCQUF5QixFQUFFO1lBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcseUJBQXlCLENBQUM7WUFDakQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN2QztZQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDbkMsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQyxFQUEyQjtvQkFBekIsVUFBRSxFQUFFLGdCQUFLLEVBQUUsOEJBQVk7Z0JBQU8sT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQTFDLENBQTBDLEVBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBQSxFQUFFLEtBQUssT0FBQSxFQUFFLFlBQVksY0FBQSxFQUFFLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzs7Ozs7Ozs7SUFFRCw2Q0FBaUI7Ozs7Ozs7SUFBakIsVUFDRSxFQUFPLEVBQ1AsSUFBYSxFQUNiLDZCQUFrQyxFQUNsQyxNQUFlO1FBSmpCLGlCQW9DQztRQTlCQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsT0FBTztTQUNSO1FBQ0QseUNBQXlDO1FBQ3pDLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZDOztZQUNLLFVBQVUsR0FDZCw2QkFBNkIsSUFBSSxJQUFJO1lBQ25DLENBQUMsQ0FBQyw2QkFBNkI7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdCO1lBQ0QsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixHQUFHLFVBQVUsQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDM0M7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjthQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2FBQ2xELFNBQVM7Ozs7UUFBQyxVQUFDLEVBQWE7Z0JBQVgsVUFBRSxFQUFFLGdCQUFLO1lBQ3JCLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFBLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGlEQUFpRDs7Ozs7OztJQUN6QyxvREFBd0I7Ozs7OztJQUFoQyxVQUFpQyxNQUFjO1FBQzdDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ25DLE9BQU87U0FDUjs7WUFDSyxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVk7UUFDL0IsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUMxQixHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7Ozs7Ozs7SUFFRCx3Q0FBWTs7Ozs7O0lBQVosVUFBYSxFQUFPLEVBQUUsS0FBVSxFQUFFLFlBQWtCO1FBQ2xELElBQUksRUFBRSxJQUFJLFlBQVksRUFBRTtZQUN0QixFQUFFLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxFQUFFLEVBQUU7WUFDYixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDWDthQUFNO1lBQ0wsT0FBTztTQUNSO0lBQ0gsQ0FBQztJQUVELHdDQUF3Qzs7Ozs7SUFDeEMsaURBQXFCOzs7O0lBQXJCO1FBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTs7OztRQUFDLFVBQUMsSUFBSSxJQUFLLE9BQUEsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQW5CLENBQW1CLEVBQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUUsQ0FBQztJQUVELDhCQUE4Qjs7Ozs7SUFDOUIsNENBQWdCOzs7O0lBQWhCOztZQUNRLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUU7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1gsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNYLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7Ozs7SUFFRCx5Q0FBYTs7O0lBQWI7O1lBQ1EsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtRQUNqRCxtQ0FBbUM7UUFDbkMsSUFBSSxZQUFZLElBQUksQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7O1lBQ0ssT0FBTyxHQUFHLFlBQVksR0FBRyxDQUFDO1FBQ2hDLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsK0JBQStCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVU7WUFDcEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7Ozs7SUFFTyxxQ0FBUzs7Ozs7SUFBakIsVUFBa0IsSUFBbUI7UUFDbkMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7O1lBQ0ssUUFBUSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFDLElBQUk7WUFDaEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLGlCQUFJLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pELE1BQU0sNEJBQTRCLENBQUM7U0FDcEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7SUFFTSxzQ0FBVTs7O0lBQWpCO1FBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7OztJQUVNLHFDQUFTOzs7SUFBaEI7UUFDRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDN0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO0lBQ0gsQ0FBQzs7OztJQUVNLG9EQUF3Qjs7O0lBQS9CO1FBQUEsaUJBTUM7O1lBTE8sVUFBVSxHQUEyQixFQUFFO1FBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTzs7OztRQUFDLFVBQUMsSUFBSTtZQUMzQixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdFLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7O0lBRU0seUNBQWE7OztJQUFwQjtRQUNFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLENBQUM7Ozs7SUFFTSxvQ0FBUTs7O0lBQWY7UUFBQSxpQkFLQztRQUpDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTzs7Ozs7UUFBQyxVQUFDLElBQUksRUFBRSxLQUFLO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pELENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTSxzQ0FBVTs7OztJQUFqQixVQUFrQixNQUFjOztZQUN4QixXQUFXLEdBQUcsRUFBRTtRQUN0QixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Ozs7O0lBRUQsd0NBQVk7Ozs7SUFBWixVQUFhLElBQVk7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO1lBQy9ELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsNEJBQTRCOzs7Ozs7O0lBRXBCLDBDQUFjOzs7Ozs7O0lBQXRCLFVBQXVCLFlBQXFCO1FBQTVDLGlCQStCQztRQTlCQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsNkJBQTZCLENBQUM7WUFDdkQsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVM7Ozs7UUFDcEYsVUFBQyxJQUFJO1lBQ0gsS0FBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsS0FBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksWUFBWSxFQUFFO2dCQUNoQixLQUFJLENBQUMsaUJBQWlCLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDN0Q7aUJBQU0sSUFBSSxLQUFJLENBQUMsYUFBYSxJQUFJLEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFOztvQkFDbEQsS0FBSyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTs7OztnQkFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQWxDLENBQWtDLEVBQUM7Z0JBQzNFLEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztnQkFDbkMsS0FBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7YUFDckY7UUFDSCxDQUFDOzs7O1FBQ0QsVUFBQyxHQUFHO1lBQ0YsS0FBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsS0FBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLFlBQVksRUFBRTtnQkFDaEIsS0FBSSxDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdEO1FBQ0gsQ0FBQyxFQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsc0JBQXNCOzs7OztJQUN0QixnREFBb0I7Ozs7SUFBcEI7O1lBQ1EsTUFBTSxHQUEwQixFQUFFOztZQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsWUFBWSxLQUFLLDZCQUE2QixFQUFoRCxDQUFnRCxFQUFDO1FBQzFGLElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQy9CLFlBQVksRUFBRSw2QkFBNkI7Z0JBQzNDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7YUFDNUQsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsQ0FBQztZQUMvQixJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssNkJBQTZCLEVBQUU7Z0JBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEI7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Ozs7SUFFRCwyQ0FBZTs7O0lBQWY7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7O1lBQ0ssT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhO2VBQzdCO2dCQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSw2QkFBNkI7Z0JBQ3JFLFdBQVcsRUFBRSxFQUFFO2FBQ2hCO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7OztJQUVELDRDQUFnQjs7O0lBQWhCO1FBQ0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDOzs7OztJQUVELGlEQUFxQjs7OztJQUFyQixVQUFzQixJQUFlO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7Ozs7SUFFRCw4Q0FBa0I7Ozs7SUFBbEIsVUFBbUIsSUFBb0I7UUFDckMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQzlCO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQzs7Ozs7O0lBRU8sK0NBQW1COzs7OztJQUEzQixVQUE0QixXQUFtQjtRQUEvQyxpQkF3QkM7O1lBdkJPLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHOzs7O1FBQUMsVUFBQSxJQUFJO1lBQ3JELE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTthQUN6QixDQUFDO1FBQ0osQ0FBQyxFQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQjtnQkFDRSxJQUFJLEVBQUUsWUFBWSxDQUFDLE1BQU07Z0JBQ3pCLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxXQUFXO2dCQUNqQixPQUFPLEVBQUUsSUFBSTtnQkFDYixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsV0FBVztnQkFDbEIsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLFlBQVksRUFBRTtvQkFDWixLQUFLLEVBQUUsT0FBTztvQkFDZCxLQUFLLEVBQUUsT0FBTztvQkFDZCxZQUFZLEVBQUUsSUFBSTtvQkFDbEIsVUFBVSxFQUFFLFVBQVU7aUJBQ3ZCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7OztJQUVELHlDQUFhOzs7SUFBYjtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO1lBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUM7U0FDZDs7WUFDSyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7UUFDakUsSUFBSSxTQUFTLElBQUksSUFBSSxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkOztZQUNLLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7O1lBQ3BDLE1BQU0sR0FBbUIsSUFBSTtRQUNqQyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsWUFBWSxLQUFLLDZCQUE2QixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBM0QsQ0FBMkQsRUFBQzttQkFDL0UsSUFBSSxDQUFDLElBQUk7Ozs7Z0JBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsWUFBWSxLQUFLLDZCQUE2QixFQUFoRCxDQUFnRCxFQUFDLENBQUM7U0FDdkU7YUFBTTtZQUNMLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSTs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQXBCLENBQW9CLEVBQUMsQ0FBQztTQUMvQztRQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7Ozs7SUFFRCwyQ0FBZTs7OztJQUFmLFVBQWdCLElBQW9CO1FBQ2xDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssNkJBQTZCLENBQUMsQ0FBQztJQUN6RSxDQUFDOzs7O0lBRUQsNENBQWdCOzs7SUFBaEI7UUFDRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJO2VBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxLQUFLLDZCQUE2QixDQUFDLENBQUM7SUFDMUUsQ0FBQzs7OztJQUVELDZDQUFpQjs7O0lBQWpCO1FBQUEsaUJBNEJDO1FBM0JDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE9BQU87U0FDUjs7WUFDSyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLDZCQUE2Qjs7WUFDOUQsSUFBSSxHQUFtQjtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDcEYsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQy9CLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7U0FDekM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUzs7OztRQUMxRCxVQUFDLEtBQUs7WUFDSixLQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzVDLEtBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7Ozs7UUFDRCxVQUFDLEdBQUc7WUFDRixLQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixLQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsRUFDRixDQUFDO0lBQ0osQ0FBQzs7OztJQUVELDJDQUFlOzs7SUFBZjtRQUNFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7OztJQUVELDRDQUFnQjs7O0lBQWhCO1FBQ0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDOzs7OztJQUVELGlEQUFxQjs7OztJQUFyQixVQUFzQixJQUFlO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7Ozs7SUFFTywrQ0FBbUI7Ozs7SUFBM0I7UUFDRSxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCO2dCQUNFLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSztnQkFDeEIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxDQUFDO2dCQUNSLFNBQVMsRUFBRSxFQUFFO2dCQUNiLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxVQUFVO2FBQ3hCO1NBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCx5Q0FBYTs7O0lBQWI7UUFBQSxpQkEyQ0M7UUExQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQixPQUFPLEtBQUssQ0FBQztTQUNkOztZQUNLLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRTtRQUNoRixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLEtBQUssNkJBQTZCLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7O1lBQ0ssTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksRUFBdkIsQ0FBdUIsRUFBQztRQUN6RSxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDZDs7WUFDSyxJQUFJLEdBQW1CO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMvQixZQUFZLEVBQUUsSUFBSTtZQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVM7Ozs7UUFDMUQsVUFBQyxLQUFLO1lBQ0osS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUNoQyxLQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzVDLEtBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7Ozs7UUFDRCxVQUFDLEdBQUc7WUFDRixLQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixLQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFDRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7O0lBRUQsK0NBQW1COzs7SUFBbkI7UUFBQSxpQkFxQkM7UUFwQkMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQzVCLE9BQU87U0FDUjs7WUFDSyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTOzs7UUFDNUQ7WUFDRSxLQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLEtBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU07Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFmLENBQWUsRUFBQyxDQUFDO1lBQ3ZFLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxDQUFDOzs7O1FBQ0QsVUFBQyxHQUFHO1lBQ0YsS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDLEVBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7O0lBRU8sd0RBQTRCOzs7O0lBQXBDO1FBQUEsaUJBaUJDO1FBaEJDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVM7Ozs7UUFDL0QsVUFBQyxJQUFJO1lBQ0gsS0FBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksS0FBSSxDQUFDLGFBQWEsSUFBSSxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTs7b0JBQzNDLEtBQUssR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7Ozs7Z0JBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFsQyxDQUFrQyxFQUFDO2dCQUMzRSxJQUFJLEtBQUssRUFBRTtvQkFDVCxLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDM0IsS0FBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7aUJBQzdDO2FBQ0Y7UUFDSCxDQUFDOzs7UUFDRCxjQUFxQixDQUFDLEVBQ3ZCLENBQUM7SUFDSixDQUFDOzs7Ozs7O0lBRU8sNkNBQWlCOzs7Ozs7SUFBekIsVUFBMEIsSUFBWSxFQUFFLFVBQW1COztZQUNuRCxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFOztZQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUk7Ozs7UUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUF2QixDQUF1QixFQUFDO1FBQ3RELElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7Ozs7O0lBRU8sdUNBQVc7Ozs7OztJQUFuQixVQUFvQixNQUFzQixFQUFFLFVBQW1CO1FBQzdELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEQsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQy9CLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtZQUMxRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7U0FDMUYsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksSUFBSSw2QkFBNkIsQ0FBQzs7WUFFdEYsTUFBTSxHQUFRLEVBQUU7UUFDcEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssNkJBQTZCLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEYsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDTCxJQUFJO2dCQUNGLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLENBQUM7YUFDakQ7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixNQUFNLEdBQUcsRUFBRSxDQUFDO2FBQ2I7WUFDRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyw2QkFBNkIsRUFBRTtnQkFDNUQsMkJBQTJCO2dCQUMzQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7YUFDMUU7U0FDRjtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7Ozs7O0lBRU8sZ0RBQW9COzs7O0lBQTVCO1FBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDOzs7Ozs7SUFFTyw2Q0FBaUI7Ozs7O0lBQXpCLFVBQTBCLE1BQThCO1FBQXhELGlCQVdDO1FBVkMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDaEQsT0FBTztTQUNSOztZQUNLLEtBQUssR0FBMkIsRUFBRTtRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLElBQUk7WUFDMUIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDcEU7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHOzs7Ozs7OztJQUNLLHVEQUEyQjs7Ozs7OztJQUFuQyxVQUFvQyxNQUFjLEVBQUUsS0FBVTtRQUM1RCxJQUNFLE1BQU07WUFDTixDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGNBQWM7Z0JBQzVDLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUMzQyxLQUFLLElBQUksSUFBSSxFQUNiO1lBQ0EsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7OztJQUVPLDZDQUFpQjs7Ozs7O0lBQXpCLFVBQTBCLE1BQWMsRUFBRSxLQUFVO1FBQXBELGlCQWNDO1FBYkMsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQzVDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxLQUFLLENBQUMsR0FBRzs7OztnQkFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQXJCLENBQXFCLEVBQUMsQ0FBQzthQUM5QztZQUNELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxLQUFLLEVBQUU7WUFDL0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7SUFFTyx5Q0FBYTs7Ozs7SUFBckIsVUFBc0IsS0FBVTtRQUM5QixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUMxQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFOztnQkFDM0QsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTs7Z0JBQ3ZCLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7SUFFTyxzQ0FBVTs7Ozs7SUFBbEIsVUFBbUIsR0FBUTtRQUN6QixJQUFJO1lBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sdUNBQVc7Ozs7O0lBQW5CLFVBQW9CLEdBQVc7UUFDN0IsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLGdCQUFnQixFQUFFO1lBQ3JFLENBQUMsbUJBQUEsTUFBTSxFQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8scUNBQVM7Ozs7O0lBQWpCLFVBQWtCLEdBQVc7UUFDM0IsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLGdCQUFnQixFQUFFO1lBQ3JFLENBQUMsbUJBQUEsTUFBTSxFQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQjtJQUNILENBQUM7O2dCQTN0QkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQiwydlVBQXlDOztpQkFFMUM7Ozs7Z0JBdEJRLFdBQVc7Z0JBZWxCLG1CQUFtQix1QkF5RGhCLFFBQVEsWUFBSSxNQUFNLFNBQUMsc0JBQXNCOzs7NkJBL0MzQyxLQUFLO3FDQUVMLEtBQUs7a0NBRUwsS0FBSzs4QkFFTCxLQUFLOzhCQUVMLE1BQU07NkJBQ04sTUFBTTs7SUFQa0I7UUFBZixZQUFZLEVBQUU7O2lFQUE0QjtJQUkzQjtRQUFmLFlBQVksRUFBRTs7MERBQXFCO0lBbXRCL0Msd0JBQUM7Q0FBQSxBQWh1QkQsSUFndUJDO1NBM3RCWSxpQkFBaUI7OztJQUU1Qix1Q0FBbUM7Ozs7O0lBRW5DLCtDQUFvRDs7Ozs7SUFFcEQsNENBQWlDOzs7OztJQUVqQyx3Q0FBNkM7O0lBRTdDLHdDQUEyQzs7SUFDM0MsdUNBQTBDOztJQUUxQywrQ0FBOEI7O0lBQzlCLHVDQUEyQjs7SUFDM0IsOENBQThCOzs7OztJQUM5QiwwQ0FBb0Y7Ozs7O0lBQ3BGLDRDQUFvQzs7Ozs7SUFDcEMsOENBQW1FOzs7OztJQUNuRSxzREFBOEM7Ozs7O0lBRTlDLCtDQUFxRDs7Ozs7SUFDckQsbURBQXlEOzs7OztJQUN6RCwwQ0FBZ0Q7Ozs7O0lBQ2hELDRDQUFrRDs7Ozs7O0lBR2xELGdEQUF5RDs7Ozs7SUFDekQsa0RBQXNDOztJQUV0Qyx1Q0FBdUM7O0lBQ3ZDLDBDQUFxQzs7SUFDckMsOENBQWtEOztJQUNsRCwwQ0FBc0I7O0lBQ3RCLHlDQUFxQjs7SUFFckIsK0NBQTJCOztJQUMzQiwyQ0FBcUM7O0lBQ3JDLCtDQUE4Qjs7SUFFOUIsK0NBQTJCOztJQUMzQiwyQ0FBcUM7O0lBQ3JDLCtDQUE4Qjs7SUFFOUIsOENBQTJEOzs7OztJQUMzRCw2Q0FBa0Q7O0lBMnFCbEQsa0RBQThDOztJQUM5QyxxREFBb0Q7O0lBQ3BELGlEQUE0Qzs7Ozs7SUExcUIxQywrQkFBdUI7Ozs7O0lBQ3ZCLHdDQUFvRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyTGlzdFR5cGUgfSBmcm9tICcuL2hkLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1JdGVtLCBGb3JtTGlzdFR5cGUgfSBmcm9tICcuLi9oZC1mb3JtL2hkLWZvcm0uc2VydmljZSc7XG5pbXBvcnQge1xuICBnZXRDYXNjYWRlck1lbnVDbGFzc05hbWUsXG4gIGdldENhc2NhZGVyTWVudVN0eWxlLFxuICBnZXRDYXNjYWRlclNob3dTZWFyY2gsXG59IGZyb20gJy4uL3V0aWxzL2Nhc2NhZGVyLnV0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZy16b3Jyby1hbnRkJztcbmltcG9ydCB7XG4gIEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLFxuICBIRF9GSUxURVJfU0NIRU1FX1NUT1JFLFxuICBIZEZpbHRlclNjaGVtZSxcbiAgSGRGaWx0ZXJTY2hlbWVTdG9yZVxufSBmcm9tICcuL2hkLWZpbHRlci1zY2hlbWUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGQtZmlsdGVyLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGRGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBmaWx0ZXJMaXN0OiBBcnJheTxGaWx0ZXI+O1xuICAvKiog5piv5ZCm5ZCv55So562b6YCJ57uE77yI6buY6K6k5YWz6Zet77yJICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBlbmFibGVGaWx0ZXJTY2hlbWUgPSBmYWxzZTtcbiAgLyoqIOetm+mAieWZqOagh+ivhu+8jOW8gOWQr+etm+mAiee7hOaXtuW/heS8oCAqL1xuICBASW5wdXQoKSBmaWx0ZXJTY2hlbWVLZXk6IHN0cmluZztcbiAgLyoqIOaYr+WQpuWOu+aOiSBoZC1maWx0ZXItY29udGFpbmVyIOeahCBwYWRkaW5n77yM6buY6K6kIGZhbHNlICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBoaWRlUGFkZGluZyA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlc2V0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdmFsaWRhdGVGaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG4gIGlzU2hvd01vcmU6IGJvb2xlYW4gPSB0cnVlO1xuICBmaWx0ZXJMaXN0TW9kdWxhcjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8eyBmbjogYW55LCBldmVudDogYW55LCBzZWxlY3RPcHRpb24/OiBhbnk7IH0+KCk7XG4gIHByaXZhdGUgZGVib3VuY2VUaW1lb3V0OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIG9wZW5DaGFuZ2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8eyBmbjogYW55OyBldmVudDogYW55IH0+KCk7XG4gIHByaXZhdGUgb3BlbkNoYW5nZURlYm91bmNlVGltZW91dDogbnVtYmVyID0gMDtcblxuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5DaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzY2hlbWVMb2FkU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc2NoZW1lQWN0aW9uU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgLyoqIOmhtemdoumFjee9rueahOWIneWni+WAvO+8iOiZmuaLn+OAjOm7mOiupOadoeS7tuOAje+8iSAqL1xuICBwcml2YXRlIGRlZmF1bHRGaWx0ZXJWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWVzQ2FwdHVyZWQgPSBmYWxzZTtcblxuICBzY2hlbWVMaXN0OiBBcnJheTxIZEZpbHRlclNjaGVtZT4gPSBbXTtcbiAgY3VycmVudFNjaGVtZTogSGRGaWx0ZXJTY2hlbWUgPSBudWxsO1xuICBjdXJyZW50U2NoZW1lTmFtZSA9IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FO1xuICBzY2hlbWVMb2FkaW5nID0gZmFsc2U7XG4gIHNjaGVtZVNhdmluZyA9IGZhbHNlO1xuXG4gIHN3aXRjaE1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICBzd2l0Y2hGb3JtTGlzdDogQXJyYXk8Rm9ybUl0ZW0+ID0gW107XG4gIHN3aXRjaFZhbGlkYXRlRm9ybTogRm9ybUdyb3VwO1xuXG4gIHNhdmVBc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICBzYXZlQXNGb3JtTGlzdDogQXJyYXk8Rm9ybUl0ZW0+ID0gW107XG4gIHNhdmVBc1ZhbGlkYXRlRm9ybTogRm9ybUdyb3VwO1xuXG4gIHJlYWRvbmx5IGRlZmF1bHRTY2hlbWVOYW1lID0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUU7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3dpdGNoRGVmYXVsdEtleSA9ICdfX0RFRkFVTFRfXyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChIRF9GSUxURVJfU0NIRU1FX1NUT1JFKSBwcml2YXRlIHNjaGVtZVN0b3JlOiBIZEZpbHRlclNjaGVtZVN0b3JlXG4gICkge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5zZWFyY2hTdWJqZWN0LnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVvdXQpXG4gICAgKS5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24gfSkgPT4gdGhpcy50cmlnZ2VyRXZlbnQoZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24pKTtcbiAgICB0aGlzLm9wZW5DaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLm9wZW5DaGFuZ2VTdWJqZWN0XG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5vcGVuQ2hhbmdlRGVib3VuY2VUaW1lb3V0KSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50IH0pID0+IHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoZm4sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgICAvLyDpppbmrKHliqDovb3lj6rlnKjov5nph4zor7fmsYLkuIDmrKHvvJtuZ09uQ2hhbmdlcyDpppbmrKHkuZ/kvJrluKbkuIogZW5hYmxlRmlsdGVyU2NoZW1lL2ZpbHRlclNjaGVtZUtlee+8jOmBv+WFjemHjeWkjeiwg+aOpeWPo1xuICAgIHRoaXMudHJ5TG9hZFNjaGVtZXModHJ1ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlckxpc3QnXSkge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydlbmFibGVGaWx0ZXJTY2hlbWUnXSB8fCBjaGFuZ2VzWydmaWx0ZXJTY2hlbWVLZXknXSkge1xuICAgICAgLy8g6aaW5qyh5Y+Y5pu05LiOIG5nT25Jbml0IOmHjeWkje+8iOesrOS6jOasoeS8miB1bnN1YnNjcmliZSDnrKzkuIDmrKHvvIzooajnjrDkuLror7fmsYLml6Dov5Tlm57vvInvvJvku4XlkI7nu63liIfmjaLlho3liqDovb1cbiAgICAgIGNvbnN0IGVuYWJsZUxhdGVyID0gY2hhbmdlc1snZW5hYmxlRmlsdGVyU2NoZW1lJ10gJiYgIWNoYW5nZXNbJ2VuYWJsZUZpbHRlclNjaGVtZSddLmZpcnN0Q2hhbmdlO1xuICAgICAgY29uc3Qga2V5TGF0ZXIgPSBjaGFuZ2VzWydmaWx0ZXJTY2hlbWVLZXknXSAmJiAhY2hhbmdlc1snZmlsdGVyU2NoZW1lS2V5J10uZmlyc3RDaGFuZ2U7XG4gICAgICBpZiAoZW5hYmxlTGF0ZXIgfHwga2V5TGF0ZXIpIHtcbiAgICAgICAgdGhpcy50cnlMb2FkU2NoZW1lcyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW5DaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMub3BlbkNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zY2hlbWVMb2FkU3ViKSB7XG4gICAgICB0aGlzLnNjaGVtZUxvYWRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2NoZW1lQWN0aW9uU3ViKSB7XG4gICAgICB0aGlzLnNjaGVtZUFjdGlvblN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjYW5Vc2VTY2hlbWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuZW5hYmxlRmlsdGVyU2NoZW1lICYmIHRoaXMuZmlsdGVyU2NoZW1lS2V5ICYmIHRoaXMuc2NoZW1lU3RvcmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNTaG93TW9yZSA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmNoZWNrTGlzdCh0aGlzLmZpbHRlckxpc3QpKSB7XG4gICAgICB0aHJvdyAnZmlsdGVy57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyDJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLmZpbHRlckxpc3QpIHtcbiAgICAgIHRoaXMuZmlsdGVyTGlzdCA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlckxpc3RNb2R1bGFyID0gdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCAlIDQ7XG4gICAgY29uc3QgZm9ybUdyb3VwTGlzdCA9IHt9O1xuICAgIHRoaXMuZmlsdGVyTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgZm9ybUdyb3VwTGlzdFtpdGVtLm5hbWVdID0gdGhpcy5mYi5jb250cm9sKFxuICAgICAgICB0aGlzLm5vcm1hbGl6ZUZpbHRlckNvbnRyb2xWYWx1ZShpdGVtLCBpdGVtLnZhbHVlKSxcbiAgICAgICAgW10sXG4gICAgICApO1xuICAgICAgaXRlbS5zaG93ID0gaW5kZXggPCA3O1xuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cChmb3JtR3JvdXBMaXN0KTtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlc0NhcHR1cmVkKSB7XG4gICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJWYWx1ZXMgPSB0aGlzLmNsb25lUGxhaW4odGhpcy5nZXRGaWx0ZXJEYXRhKCkpO1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWVzQ2FwdHVyZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0ub25DaGFuZ2VFdmVudCkge1xuICAgICAgICBpZiAoaXRlbS5vbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZpbHRlckZvcm0uZ2V0KGl0ZW0ubmFtZSkudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKGl0ZW0ub25DaGFuZ2VFdmVudERlYm91bmNlVGltZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldChpdGVtLm5hbWUpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblNlYXJjaEV2ZW50KGZuOiBhbnksIGV2ZW50OiBhbnksIG9uU2VhcmNoRXZlbnREZWJvdW5jZVRpbWU6IGFueSwgc2VsZWN0T3B0aW9uPzogYW55KSB7XG4gICAgaWYgKG9uU2VhcmNoRXZlbnREZWJvdW5jZVRpbWUpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VUaW1lb3V0ID0gb25TZWFyY2hFdmVudERlYm91bmNlVGltZTtcbiAgICAgIGlmICh0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaFN1YmplY3QucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lb3V0KVxuICAgICAgKS5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24gfSkgPT4gdGhpcy50cmlnZ2VyRXZlbnQoZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24pKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHsgZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCwgc2VsZWN0T3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICBvbk9wZW5DaGFuZ2VFdmVudChcbiAgICBmbjogYW55LFxuICAgIG9wZW46IGJvb2xlYW4sXG4gICAgb25PcGVuQ2hhbmdlRXZlbnREZWJvdW5jZVRpbWU6IGFueSxcbiAgICBmaWx0ZXI/OiBGaWx0ZXIsXG4gICkge1xuICAgIGlmICghZm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8g5bGV5byA5pe25YWI5riF56m65penIG9wdGlvbnPvvIzpgb/lhY3mnaHku7blj5jljJblkI7or7fmsYLov5Tlm57liY3ku43lsZXnpLrkuIrkuIDmibnkuIvmi4nmlbDmja5cbiAgICBpZiAob3Blbikge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdE9wdGlvbnNPbk9wZW4oZmlsdGVyKTtcbiAgICB9XG4gICAgY29uc3QgZGVib3VuY2VNcyA9XG4gICAgICBvbk9wZW5DaGFuZ2VFdmVudERlYm91bmNlVGltZSAhPSBudWxsXG4gICAgICAgID8gb25PcGVuQ2hhbmdlRXZlbnREZWJvdW5jZVRpbWVcbiAgICAgICAgOiAwO1xuICAgIC8vIOacqumFjee9ruaIluS4uiAw77ya5ZCM5q2l6Kem5Y+R77yM5LiN6LWwIGRlYm91bmNlVGltZe+8iOmBv+WFjeW8guatpe+8iVxuICAgIGlmICghZGVib3VuY2VNcykge1xuICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoZm4sIG9wZW4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW5DaGFuZ2VEZWJvdW5jZVRpbWVvdXQgPSBkZWJvdW5jZU1zO1xuICAgIGlmICh0aGlzLm9wZW5DaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMub3BlbkNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLm9wZW5DaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLm9wZW5DaGFuZ2VTdWJqZWN0XG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5vcGVuQ2hhbmdlRGVib3VuY2VUaW1lb3V0KSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50IH0pID0+IHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoZm4sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5vcGVuQ2hhbmdlU3ViamVjdC5uZXh0KHsgZm4sIGV2ZW50OiBvcGVuIH0pO1xuICB9XG5cbiAgLyoqIOaciSBvbk9wZW5DaGFuZ2VFdmVudCDml7blsZXlvIDkuIvmi4nlhYjmuIXnqbrpgInpobnvvIznlLHkuJrliqHlm57osIPlho3lhpnlhaXmlrDmlbDmja4gKi9cbiAgcHJpdmF0ZSBjbGVhclNlbGVjdE9wdGlvbnNPbk9wZW4oZmlsdGVyOiBGaWx0ZXIpOiB2b2lkIHtcbiAgICBpZiAoIWZpbHRlciB8fCAhZmlsdGVyLnNlbGVjdE9wdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcHQgPSBmaWx0ZXIuc2VsZWN0T3B0aW9uO1xuICAgIGlmIChvcHQuc2VsZWN0TGlzdCAhPSBudWxsKSB7XG4gICAgICBvcHQuc2VsZWN0TGlzdCA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHRyaWdnZXJFdmVudChmbjogYW55LCBldmVudDogYW55LCBzZWxlY3RPcHRpb24/OiBhbnkpIHtcbiAgICBpZiAoZm4gJiYgc2VsZWN0T3B0aW9uKSB7XG4gICAgICBmbihldmVudCwgc2VsZWN0T3B0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGZuKSB7XG4gICAgICBmbihldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICAvKiog5b2T5YmN5bGV56S655qE562b6YCJ6aG55pWw6YeP77yI5bCK6YeNIGl0ZW0uc2hvd++8jOS4juWxleW8gC/mlLbotbfkuIDoh7TvvIkgKi9cbiAgZ2V0VmlzaWJsZUZpbHRlckNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmZpbHRlckxpc3QgfHwgW10pLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5zaG93ICE9PSBmYWxzZSkubGVuZ3RoO1xuICB9XG5cbiAgLyoqIOWwkeadoeS7tuaXtuWKoOWuveWtl+auteWIl++8mjHihpIxOOOAgTLihpI544CB4omlM+KGkjYgKi9cbiAgZ2V0RmlsdGVyQ29sU3BhbigpOiBudW1iZXIge1xuICAgIGNvbnN0IG4gPSB0aGlzLmdldFZpc2libGVGaWx0ZXJDb3VudCgpO1xuICAgIGlmIChuID09PSAxKSB7XG4gICAgICByZXR1cm4gMTg7XG4gICAgfVxuICAgIGlmIChuID09PSAyKSB7XG4gICAgICByZXR1cm4gOTtcbiAgICB9XG4gICAgcmV0dXJuIDY7XG4gIH1cblxuICBjb21wdXRlT2Zmc2V0KCkge1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHRoaXMuZ2V0VmlzaWJsZUZpbHRlckNvdW50KCk7XG4gICAgLy8g4omkMiDkuKrlj6/op4HmnaHku7bml7blrZfmrrXlt7LliqDlrr3ljaDmu6HkuIDooYzliankvZnvvIzmjInpkq7kuI3lho0gb2Zmc2V0XG4gICAgaWYgKHZpc2libGVDb3VudCA8PSAyKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3QgbW9kdWxhciA9IHZpc2libGVDb3VudCAlIDQ7XG4gICAgaWYgKHZpc2libGVDb3VudCA9PT0gNCkge1xuICAgICAgcmV0dXJuIDE4O1xuICAgIH1cbiAgICAvLyDiiaUz77ya5rK/55So5Y6fICU0IOmAu+i+ke+8jOaMieWPr+ingeaVsOiuoeeul++8iOmBv+WFjeaUtui1t+WQjumUmeS9je+8iVxuICAgIHJldHVybiB0aGlzLmlzU2hvd01vcmVcbiAgICAgID8gKChtb2R1bGFyID09PSAwIHx8IHZpc2libGVDb3VudCA+IDcpID8gMCA6ICgzIC0gbW9kdWxhcikgKiA2KVxuICAgICAgOiAobW9kdWxhciA9PT0gMCA/IDE4IDogKDMgLSBtb2R1bGFyKSAqIDYpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0xpc3QobGlzdDogQXJyYXk8RmlsdGVyPik6IGJvb2xlYW4ge1xuICAgIGlmICghbGlzdCB8fCAobGlzdCAmJiBsaXN0Lmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBuYW1lTGlzdCA9IFtdO1xuICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgbmFtZUxpc3QucHVzaChpdGVtLm5hbWUpO1xuICAgIH0pO1xuICAgIGlmIChbLi4ubmV3IFNldChuYW1lTGlzdCldLmxlbmd0aCAhPT0gbGlzdC5sZW5ndGgpIHtcbiAgICAgIHRocm93ICdmaWx0ZXLnu4Tku7bmlbDmja7moLzlvI/kuI3op4TojIPvvIzlrZjlnKjph43lpI1uYW1l5YC8ISc7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hFdmVudC5lbWl0KHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RmlsdGVyRm9ybVdpdGhWYWx1ZSgpO1xuICAgIGlmICh0aGlzLnJlc2V0RXZlbnQub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVzZXRFdmVudC5lbWl0KHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaEV2ZW50LmVtaXQodGhpcy52YWxpZGF0ZUZpbHRlckZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0RmlsdGVyRm9ybVdpdGhWYWx1ZSgpIHtcbiAgICBjb25zdCByZXNldFZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIHJlc2V0VmFsdWVbaXRlbS5uYW1lXSA9IHRoaXMubm9ybWFsaXplRmlsdGVyQ29udHJvbFZhbHVlKGl0ZW0sIGl0ZW0udmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLnBhdGNoVmFsdWUocmVzZXRWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsdGVyRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUZpbHRlckZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93TW9yZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2hvd01vcmUgPSAhdGhpcy5pc1Nob3dNb3JlO1xuICAgIHRoaXMuZmlsdGVyTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaXRlbS5zaG93ID0gdGhpcy5pc1Nob3dNb3JlID8gaW5kZXggPCA3IDogdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbnB1dENsZWFuKGZpbHRlcjogRmlsdGVyKTogdm9pZCB7XG4gICAgY29uc3QgcGF0Y2hPYmplY3QgPSB7fTtcbiAgICBwYXRjaE9iamVjdFtmaWx0ZXIubmFtZV0gPSBudWxsO1xuICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLnBhdGNoVmFsdWUocGF0Y2hPYmplY3QpO1xuICB9XG5cbiAgaXNBbGxvd0NsZWFyKGl0ZW06IEZpbHRlcik6IGJvb2xlYW4ge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChpdGVtLmhkQWxsb3dDbGVhciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gISFpdGVtLmhkQWxsb3dDbGVhcjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc2VsZWN0T3B0aW9uICYmIGl0ZW0uc2VsZWN0T3B0aW9uLmhkQWxsb3dDbGVhciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gISFpdGVtLnNlbGVjdE9wdGlvbi5oZEFsbG93Q2xlYXI7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLSDnrZvpgInnu4QgLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgdHJ5TG9hZFNjaGVtZXMoYXBwbHlEZWZhdWx0OiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmNhblVzZVNjaGVtZSkge1xuICAgICAgdGhpcy5zY2hlbWVMaXN0ID0gW107XG4gICAgICB0aGlzLmN1cnJlbnRTY2hlbWUgPSBudWxsO1xuICAgICAgdGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNjaGVtZUxvYWRpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNjaGVtZUxvYWRTdWIpIHtcbiAgICAgIHRoaXMuc2NoZW1lTG9hZFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnNjaGVtZUxvYWRTdWIgPSB0aGlzLnNjaGVtZVN0b3JlLnF1ZXJ5QnlGaWx0ZXJLZXkodGhpcy5maWx0ZXJTY2hlbWVLZXkpLnN1YnNjcmliZShcbiAgICAgIChsaXN0KSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNjaGVtZUxpc3QgPSBsaXN0IHx8IFtdO1xuICAgICAgICBpZiAoYXBwbHlEZWZhdWx0KSB7XG4gICAgICAgICAgdGhpcy5hcHBseVNjaGVtZUJ5TmFtZShIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50U2NoZW1lICYmIHRoaXMuY3VycmVudFNjaGVtZS51dWlkKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLnNjaGVtZUxpc3QuZmluZChzID0+IHMudXVpZCA9PT0gdGhpcy5jdXJyZW50U2NoZW1lLnV1aWQpO1xuICAgICAgICAgIHRoaXMuY3VycmVudFNjaGVtZSA9IGZvdW5kIHx8IG51bGw7XG4gICAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9IGZvdW5kID8gZm91bmQudGVtcGxhdGVOYW1lIDogSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFcnJvcign5Yqg6L29562b6YCJ5qih54mI5aSx6LSl77yaJyArIChlcnIgfHwgJycpKTtcbiAgICAgICAgaWYgKGFwcGx5RGVmYXVsdCkge1xuICAgICAgICAgIHRoaXMuYXBwbHlTY2hlbWVCeU5hbWUoSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKiDlsZXnpLrnlKjliJfooajvvJrkv53or4HmnInjgIzpu5jorqTmnaHku7bjgI0gKi9cbiAgZ2V0RGlzcGxheVNjaGVtZUxpc3QoKTogQXJyYXk8SGRGaWx0ZXJTY2hlbWU+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PEhkRmlsdGVyU2NoZW1lPiA9IFtdO1xuICAgIGNvbnN0IGZyb21EYiA9IHRoaXMuc2NoZW1lTGlzdC5maW5kKHMgPT4gcy50ZW1wbGF0ZU5hbWUgPT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FKTtcbiAgICBpZiAoZnJvbURiKSB7XG4gICAgICByZXN1bHQucHVzaChmcm9tRGIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIGZpbHRlcktleTogdGhpcy5maWx0ZXJTY2hlbWVLZXksXG4gICAgICAgIHRlbXBsYXRlTmFtZTogSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUsXG4gICAgICAgIGZpbHRlclZhbHVlOiBKU09OLnN0cmluZ2lmeSh0aGlzLmRlZmF1bHRGaWx0ZXJWYWx1ZXMgfHwge30pXG4gICAgICB9KTtcbiAgICB9XG4gICAgKHRoaXMuc2NoZW1lTGlzdCB8fCBbXSkuZm9yRWFjaChzID0+IHtcbiAgICAgIGlmIChzLnRlbXBsYXRlTmFtZSAhPT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9wZW5Td2l0Y2hNb2RhbCgpIHtcbiAgICBpZiAoIXRoaXMuY2FuVXNlU2NoZW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmN1cnJlbnRTY2hlbWVcbiAgICAgIHx8IHtcbiAgICAgICAgZmlsdGVyS2V5OiB0aGlzLmZpbHRlclNjaGVtZUtleSxcbiAgICAgICAgdGVtcGxhdGVOYW1lOiB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lIHx8IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLFxuICAgICAgICBmaWx0ZXJWYWx1ZTogJydcbiAgICAgIH07XG4gICAgdGhpcy5idWlsZFN3aXRjaEZvcm1MaXN0KHRoaXMuZ2V0U3dpdGNoT3B0aW9uS2V5KGN1cnJlbnQpKTtcbiAgICB0aGlzLnN3aXRjaE1vZGFsVmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBjbG9zZVN3aXRjaE1vZGFsKCkge1xuICAgIHRoaXMuc3dpdGNoTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBzd2l0Y2hGb3JtQ2hhbmdlRXZlbnQoZm9ybTogRm9ybUdyb3VwKSB7XG4gICAgdGhpcy5zd2l0Y2hWYWxpZGF0ZUZvcm0gPSBmb3JtO1xuICB9XG5cbiAgZ2V0U3dpdGNoT3B0aW9uS2V5KGl0ZW06IEhkRmlsdGVyU2NoZW1lKTogc3RyaW5nIHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnN3aXRjaERlZmF1bHRLZXk7XG4gICAgfVxuICAgIGlmIChpdGVtLnV1aWQpIHtcbiAgICAgIHJldHVybiBpdGVtLnV1aWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN3aXRjaERlZmF1bHRLZXk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3dpdGNoRm9ybUxpc3Qoc2VsZWN0ZWRLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdExpc3QgPSB0aGlzLmdldERpc3BsYXlTY2hlbWVMaXN0KCkubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZ2V0U3dpdGNoT3B0aW9uS2V5KGl0ZW0pLFxuICAgICAgICBsYWJlbDogaXRlbS50ZW1wbGF0ZU5hbWVcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5zd2l0Y2hGb3JtTGlzdCA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogRm9ybUxpc3RUeXBlLlNlbGVjdCxcbiAgICAgICAgbGFiZWw6ICfnrZvpgInnu4QnLFxuICAgICAgICBuYW1lOiAnc2NoZW1lS2V5JyxcbiAgICAgICAgcmVxdWlyZTogdHJ1ZSxcbiAgICAgICAgd2lkdGg6IDQsXG4gICAgICAgIHZhbHVlOiBzZWxlY3RlZEtleSxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICfor7fpgInmi6nnrZvpgInnu4QnLFxuICAgICAgICBzZWxlY3RPcHRpb246IHtcbiAgICAgICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgICAgICBsYWJlbDogJ2xhYmVsJyxcbiAgICAgICAgICBoZFNob3dTZWFyY2g6IHRydWUsXG4gICAgICAgICAgc2VsZWN0TGlzdDogc2VsZWN0TGlzdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIGNvbmZpcm1Td2l0Y2goKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnN3aXRjaFZhbGlkYXRlRm9ybSB8fCAhdGhpcy5zd2l0Y2hWYWxpZGF0ZUZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCfor7fpgInmi6nnrZvpgInnu4QnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1lS2V5ID0gdGhpcy5zd2l0Y2hWYWxpZGF0ZUZvcm0uZ2V0UmF3VmFsdWUoKS5zY2hlbWVLZXk7XG4gICAgaWYgKHNjaGVtZUtleSA9PSBudWxsIHx8IHNjaGVtZUtleSA9PT0gJycpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCfor7fpgInmi6nnrZvpgInnu4QnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuZ2V0RGlzcGxheVNjaGVtZUxpc3QoKTtcbiAgICBsZXQgdGFyZ2V0OiBIZEZpbHRlclNjaGVtZSA9IG51bGw7XG4gICAgaWYgKHNjaGVtZUtleSA9PT0gdGhpcy5zd2l0Y2hEZWZhdWx0S2V5KSB7XG4gICAgICB0YXJnZXQgPSBsaXN0LmZpbmQocyA9PiBzLnRlbXBsYXRlTmFtZSA9PT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUgJiYgIXMudXVpZClcbiAgICAgICAgfHwgbGlzdC5maW5kKHMgPT4gcy50ZW1wbGF0ZU5hbWUgPT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0ID0gbGlzdC5maW5kKHMgPT4gcy51dWlkID09PSBzY2hlbWVLZXkpO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhpcy5zaG93RXJyb3IoJ+ivt+mAieaLqeetm+mAiee7hCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmFwcGx5U2NoZW1lKHRhcmdldCwgdHJ1ZSk7XG4gICAgdGhpcy5zd2l0Y2hNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlzRGVmYXVsdFNjaGVtZShpdGVtOiBIZEZpbHRlclNjaGVtZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShpdGVtICYmIGl0ZW0udGVtcGxhdGVOYW1lID09PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSk7XG4gIH1cblxuICBjYW5EZWxldGVDdXJyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmN1cnJlbnRTY2hlbWUgJiYgdGhpcy5jdXJyZW50U2NoZW1lLnV1aWRcbiAgICAgICYmIHRoaXMuY3VycmVudFNjaGVtZS50ZW1wbGF0ZU5hbWUgIT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FKTtcbiAgfVxuXG4gIHNhdmVDdXJyZW50U2NoZW1lKCkge1xuICAgIGlmICghdGhpcy5jYW5Vc2VTY2hlbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuY3VycmVudFNjaGVtZU5hbWUgfHwgSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUU7XG4gICAgY29uc3QgYm9keTogSGRGaWx0ZXJTY2hlbWUgPSB7XG4gICAgICB1dWlkOiB0aGlzLmN1cnJlbnRTY2hlbWUgJiYgdGhpcy5jdXJyZW50U2NoZW1lLnV1aWQgPyB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZCA6IG51bGwsXG4gICAgICBmaWx0ZXJLZXk6IHRoaXMuZmlsdGVyU2NoZW1lS2V5LFxuICAgICAgdGVtcGxhdGVOYW1lOiBuYW1lLFxuICAgICAgZmlsdGVyVmFsdWU6IHRoaXMuc2VyaWFsaXplRmlsdGVyVmFsdWUoKVxuICAgIH07XG4gICAgdGhpcy5zY2hlbWVTYXZpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNjaGVtZUFjdGlvblN1Yikge1xuICAgICAgdGhpcy5zY2hlbWVBY3Rpb25TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlbWVBY3Rpb25TdWIgPSB0aGlzLnNjaGVtZVN0b3JlLnNhdmUoYm9keSkuc3Vic2NyaWJlKFxuICAgICAgKHNhdmVkKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3MoJ+S/neWtmOaIkOWKnycpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWUgPSBzYXZlZDtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9IHNhdmVkLnRlbXBsYXRlTmFtZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoU2NoZW1lTGlzdEtlZXBDdXJyZW50KCk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZVNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFcnJvcign5L+d5a2Y5aSx6LSl77yaJyArIChlcnIgfHwgJycpKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgb3BlblNhdmVBc01vZGFsKCkge1xuICAgIHRoaXMuYnVpbGRTYXZlQXNGb3JtTGlzdCgpO1xuICAgIHRoaXMuc2F2ZUFzTW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIGNsb3NlU2F2ZUFzTW9kYWwoKSB7XG4gICAgdGhpcy5zYXZlQXNNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHNhdmVBc0Zvcm1DaGFuZ2VFdmVudChmb3JtOiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLnNhdmVBc1ZhbGlkYXRlRm9ybSA9IGZvcm07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2F2ZUFzRm9ybUxpc3QoKSB7XG4gICAgdGhpcy5zYXZlQXNGb3JtTGlzdCA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogRm9ybUxpc3RUeXBlLklucHV0LFxuICAgICAgICBsYWJlbDogJ+etm+mAiee7hOWQjeensCcsXG4gICAgICAgIG5hbWU6ICd0ZW1wbGF0ZU5hbWUnLFxuICAgICAgICByZXF1aXJlOiB0cnVlLFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgbWF4TGVuZ3RoOiA1MCxcbiAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAn6K+36L6T5YWl562b6YCJ57uE5ZCN56ewJ1xuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBjb25maXJtU2F2ZUFzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zYXZlQXNWYWxpZGF0ZUZvcm0gfHwgIXRoaXMuc2F2ZUFzVmFsaWRhdGVGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLnNob3dFcnJvcign6K+36L6T5YWl562b6YCJ57uE5ZCN56ewJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSAoKHRoaXMuc2F2ZUFzVmFsaWRhdGVGb3JtLmdldFJhd1ZhbHVlKCkudGVtcGxhdGVOYW1lKSB8fCAnJykudHJpbSgpO1xuICAgIGlmICghbmFtZSkge1xuICAgICAgdGhpcy5zaG93RXJyb3IoJ+ivt+i+k+WFpeetm+mAiee7hOWQjeensCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobmFtZSA9PT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCfkuI3og73kvb/nlKjjgIzpu5jorqTmnaHku7bjgI3kvZzkuLrnrZvpgInnu4TlkI3np7DvvIzor7fkvb/nlKjjgIzkv53lrZjkuLrlvZPliY3jgI3opobnm5bpu5jorqTmnaHku7YnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZXhpc3RzID0gKHRoaXMuc2NoZW1lTGlzdCB8fCBbXSkuc29tZShzID0+IHMudGVtcGxhdGVOYW1lID09PSBuYW1lKTtcbiAgICBpZiAoZXhpc3RzKSB7XG4gICAgICB0aGlzLnNob3dFcnJvcign562b6YCJ57uE5ZCN56ew5bey5a2Y5ZyoJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGJvZHk6IEhkRmlsdGVyU2NoZW1lID0ge1xuICAgICAgZmlsdGVyS2V5OiB0aGlzLmZpbHRlclNjaGVtZUtleSxcbiAgICAgIHRlbXBsYXRlTmFtZTogbmFtZSxcbiAgICAgIGZpbHRlclZhbHVlOiB0aGlzLnNlcmlhbGl6ZUZpbHRlclZhbHVlKClcbiAgICB9O1xuICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zY2hlbWVBY3Rpb25TdWIpIHtcbiAgICAgIHRoaXMuc2NoZW1lQWN0aW9uU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuc2NoZW1lQWN0aW9uU3ViID0gdGhpcy5zY2hlbWVTdG9yZS5zYXZlKGJvZHkpLnN1YnNjcmliZShcbiAgICAgIChzYXZlZCkgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZVNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNhdmVBc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dTdWNjZXNzKCflj6blrZjkuLrmiJDlip8nKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lID0gc2F2ZWQ7XG4gICAgICAgIHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPSBzYXZlZC50ZW1wbGF0ZU5hbWU7XG4gICAgICAgIHRoaXMucmVmcmVzaFNjaGVtZUxpc3RLZWVwQ3VycmVudCgpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IoJ+WPpuWtmOS4uuWksei0pe+8micgKyAoZXJyIHx8ICcnKSk7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBkZWxldGVDdXJyZW50U2NoZW1lKCkge1xuICAgIGlmICghdGhpcy5jYW5EZWxldGVDdXJyZW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdXVpZCA9IHRoaXMuY3VycmVudFNjaGVtZS51dWlkO1xuICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zY2hlbWVBY3Rpb25TdWIpIHtcbiAgICAgIHRoaXMuc2NoZW1lQWN0aW9uU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuc2NoZW1lQWN0aW9uU3ViID0gdGhpcy5zY2hlbWVTdG9yZS5kZWxldGUodXVpZCkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZVNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dTdWNjZXNzKCfliKDpmaTmiJDlip8nKTtcbiAgICAgICAgdGhpcy5zY2hlbWVMaXN0ID0gKHRoaXMuc2NoZW1lTGlzdCB8fCBbXSkuZmlsdGVyKHMgPT4gcy51dWlkICE9PSB1dWlkKTtcbiAgICAgICAgdGhpcy5hcHBseVNjaGVtZUJ5TmFtZShIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSwgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZVNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFcnJvcign5Yig6Zmk5aSx6LSl77yaJyArIChlcnIgfHwgJycpKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoU2NoZW1lTGlzdEtlZXBDdXJyZW50KCkge1xuICAgIGlmICghdGhpcy5jYW5Vc2VTY2hlbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zY2hlbWVTdG9yZS5xdWVyeUJ5RmlsdGVyS2V5KHRoaXMuZmlsdGVyU2NoZW1lS2V5KS5zdWJzY3JpYmUoXG4gICAgICAobGlzdCkgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZUxpc3QgPSBsaXN0IHx8IFtdO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50U2NoZW1lICYmIHRoaXMuY3VycmVudFNjaGVtZS51dWlkKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLnNjaGVtZUxpc3QuZmluZChzID0+IHMudXVpZCA9PT0gdGhpcy5jdXJyZW50U2NoZW1lLnV1aWQpO1xuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lID0gZm91bmQ7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID0gZm91bmQudGVtcGxhdGVOYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICgpID0+IHsgLyogaWdub3JlICovIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNjaGVtZUJ5TmFtZShuYW1lOiBzdHJpbmcsIGVtaXRTZWFyY2g6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5nZXREaXNwbGF5U2NoZW1lTGlzdCgpO1xuICAgIGNvbnN0IHRhcmdldCA9IGxpc3QuZmluZChzID0+IHMudGVtcGxhdGVOYW1lID09PSBuYW1lKTtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICB0aGlzLmFwcGx5U2NoZW1lKHRhcmdldCwgZW1pdFNlYXJjaCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNjaGVtZShzY2hlbWU6IEhkRmlsdGVyU2NoZW1lLCBlbWl0U2VhcmNoOiBib29sZWFuKSB7XG4gICAgdGhpcy5jdXJyZW50U2NoZW1lID0gc2NoZW1lICYmIHNjaGVtZS51dWlkID8gc2NoZW1lIDoge1xuICAgICAgZmlsdGVyS2V5OiB0aGlzLmZpbHRlclNjaGVtZUtleSxcbiAgICAgIHRlbXBsYXRlTmFtZTogc2NoZW1lID8gc2NoZW1lLnRlbXBsYXRlTmFtZSA6IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLFxuICAgICAgZmlsdGVyVmFsdWU6IHNjaGVtZSA/IHNjaGVtZS5maWx0ZXJWYWx1ZSA6IEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVsdEZpbHRlclZhbHVlcyB8fCB7fSlcbiAgICB9O1xuICAgIHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPSB0aGlzLmN1cnJlbnRTY2hlbWUudGVtcGxhdGVOYW1lIHx8IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FO1xuXG4gICAgbGV0IHZhbHVlczogYW55ID0ge307XG4gICAgaWYgKHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FICYmICEoc2NoZW1lICYmIHNjaGVtZS51dWlkKSkge1xuICAgICAgdmFsdWVzID0gdGhpcy5jbG9uZVBsYWluKHRoaXMuZGVmYXVsdEZpbHRlclZhbHVlcyB8fCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlcyA9IEpTT04ucGFyc2Uoc2NoZW1lLmZpbHRlclZhbHVlIHx8ICd7fScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB2YWx1ZXMgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID09PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSkge1xuICAgICAgICAvLyDlupPkuK3pu5jorqTmnaHku7bopobnm5bliJ3lp4vlgLzvvJrku6Xpu5jorqTlgLzkuLrlupXvvIzlho3lj6DliqDlupPlgLxcbiAgICAgICAgdmFsdWVzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0RmlsdGVyVmFsdWVzIHx8IHt9LCB2YWx1ZXMgfHwge30pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBhdGNoRmlsdGVyVmFsdWVzKHZhbHVlcyk7XG4gICAgaWYgKGVtaXRTZWFyY2gpIHtcbiAgICAgIHRoaXMuc3VibWl0Rm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VyaWFsaXplRmlsdGVyVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRGaWx0ZXJEYXRhKCkgfHwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEZpbHRlclZhbHVlcyh2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtIHx8ICF0aGlzLmZpbHRlckxpc3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGF0Y2g6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICh2YWx1ZXMgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlcywgaXRlbS5uYW1lKSkge1xuICAgICAgICBwYXRjaFtpdGVtLm5hbWVdID0gdGhpcy5yZXZpdmVGaWx0ZXJWYWx1ZShpdGVtLCB2YWx1ZXNbaXRlbS5uYW1lXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy52YWxpZGF0ZUZpbHRlckZvcm0ucGF0Y2hWYWx1ZShwYXRjaCk7XG4gIH1cblxuICAvKipcbiAgICog5aSa6YCJIC8g5pel5pyf6IyD5Zu056m65oCB55SoIFtd77yM6YG/5YWNIEZvcm1Db250cm9sIOS4uiBudWxsIOaXtiBuei1zZWxlY3QgbXVsdGlwbGUg5LiN5pi+56S6IHBsYWNlaG9sZGVy44CCXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUZpbHRlckNvbnRyb2xWYWx1ZShmaWx0ZXI6IEZpbHRlciwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKFxuICAgICAgZmlsdGVyICYmXG4gICAgICAoZmlsdGVyLnR5cGUgPT09IEZpbHRlckxpc3RUeXBlLk11bHRpcGxlU2VsZWN0IHx8XG4gICAgICAgIGZpbHRlci50eXBlID09PSBGaWx0ZXJMaXN0VHlwZS5EYXRlUmFuZ2UpICYmXG4gICAgICB2YWx1ZSA9PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmV2aXZlRmlsdGVyVmFsdWUoZmlsdGVyOiBGaWx0ZXIsIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVGaWx0ZXJDb250cm9sVmFsdWUoZmlsdGVyLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gRmlsdGVyTGlzdFR5cGUuRGF0ZVJhbmdlKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHRoaXMucGFyc2VEYXRlTGlrZSh2KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gRmlsdGVyTGlzdFR5cGUuRGF0ZSB8fCBmaWx0ZXIudHlwZSA9PT0gRmlsdGVyTGlzdFR5cGUuTW9udGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlRGF0ZUxpa2UodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZUxpa2UodmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0vLnRlc3QodmFsdWUpKSB7XG4gICAgICBjb25zdCBkID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgcmV0dXJuIGlzTmFOKGQuZ2V0VGltZSgpKSA/IHZhbHVlIDogZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICByZXR1cm4gaXNOYU4oZC5nZXRUaW1lKCkpID8gdmFsdWUgOiBkO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNsb25lUGxhaW4ob2JqOiBhbnkpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmogPT0gbnVsbCA/IHt9IDogb2JqKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd1N1Y2Nlc3MobXNnOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLmhkTWVzc2FnZVNlcnZpY2UpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5oZE1lc3NhZ2VTZXJ2aWNlLnByb3RvdHlwZS5zdWNjZXNzKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93RXJyb3IobXNnOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLmhkTWVzc2FnZVNlcnZpY2UpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5oZE1lc3NhZ2VTZXJ2aWNlLnByb3RvdHlwZS5lcnJvcihtc2cpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGdldENhc2NhZGVyU2hvd1NlYXJjaCA9IGdldENhc2NhZGVyU2hvd1NlYXJjaDtcbiAgZ2V0Q2FzY2FkZXJNZW51Q2xhc3NOYW1lID0gZ2V0Q2FzY2FkZXJNZW51Q2xhc3NOYW1lO1xuICBnZXRDYXNjYWRlck1lbnVTdHlsZSA9IGdldENhc2NhZGVyTWVudVN0eWxlO1xufVxuIl19
|
|
1429
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWZpbHRlci9oZC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQVUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBRXRCLG1CQUFtQixFQUNwQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCO0lBb0RFLDJCQUNVLEVBQWUsRUFDNkIsV0FBZ0M7UUFGdEYsaUJBY0M7UUFiUyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQzZCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjs7OztRQTdDN0QsdUJBQWtCLEdBQUcsS0FBSyxDQUFDOzs7O1FBSTNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRW5DLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcxQyxlQUFVLEdBQVksSUFB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SUFFNUIsdUNBQW1DOzs7OztJQUVuQywrQ0FBb0Q7Ozs7O0lBRXBELDRDQUFpQzs7Ozs7SUFFakMsd0NBQTZDOztJQUU3Qyx3Q0FBMkM7O0lBQzNDLHVDQUEwQzs7SUFFMUMsK0NBQThCOztJQUM5Qix1Q0FBMkI7O0lBQzNCLDhDQUE4Qjs7Ozs7SUFDOUIsMENBQW9GOzs7OztJQUNwRiw0Q0FBb0M7Ozs7O0lBQ3BDLDhDQUFtRTs7Ozs7SUFDbkUsc0RBQThDOzs7OztJQUU5QywrQ0FBcUQ7Ozs7O0lBQ3JELG1EQUF5RDs7Ozs7SUFDekQsMENBQWdEOzs7OztJQUNoRCw0Q0FBa0Q7Ozs7OztJQUdsRCxnREFBeUQ7Ozs7O0lBQ3pELGtEQUFzQzs7SUFFdEMsdUNBQXVDOztJQUN2QywwQ0FBcUM7O0lBQ3JDLDhDQUFrRDs7SUFDbEQsMENBQXNCOztJQUN0Qix5Q0FBcUI7O0lBRXJCLCtDQUEyQjs7SUFDM0IsMkNBQXFDOztJQUNyQywrQ0FBOEI7O0lBRTlCLCtDQUEyQjs7SUFDM0IsMkNBQXFDOztJQUNyQywrQ0FBOEI7O0lBRTlCLDhDQUEyRDs7Ozs7SUFDM0QsNkNBQWtEOztJQW9yQmxELGtEQUE4Qzs7SUFDOUMscURBQW9EOztJQUNwRCxpREFBNEM7Ozs7O0lBbnJCMUMsK0JBQXVCOzs7OztJQUN2Qix3Q0FBb0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlckxpc3RUeXBlIH0gZnJvbSAnLi9oZC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtSXRlbSwgRm9ybUxpc3RUeXBlIH0gZnJvbSAnLi4vaGQtZm9ybS9oZC1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgZ2V0Q2FzY2FkZXJNZW51Q2xhc3NOYW1lLFxuICBnZXRDYXNjYWRlck1lbnVTdHlsZSxcbiAgZ2V0Q2FzY2FkZXJTaG93U2VhcmNoLFxufSBmcm9tICcuLi91dGlscy9jYXNjYWRlci51dGlsJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmctem9ycm8tYW50ZCc7XG5pbXBvcnQge1xuICBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSxcbiAgSERfRklMVEVSX1NDSEVNRV9TVE9SRSxcbiAgSGRGaWx0ZXJTY2hlbWUsXG4gIEhkRmlsdGVyU2NoZW1lU3RvcmVcbn0gZnJvbSAnLi9oZC1maWx0ZXItc2NoZW1lJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hkLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hkLWZpbHRlci5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIEhkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgZmlsdGVyTGlzdDogQXJyYXk8RmlsdGVyPjtcbiAgLyoqIOaYr+WQpuWQr+eUqOetm+mAiee7hO+8iOm7mOiupOWFs+mXre+8iSAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZW5hYmxlRmlsdGVyU2NoZW1lID0gZmFsc2U7XG4gIC8qKiDnrZvpgInlmajmoIfor4bvvIzlvIDlkK/nrZvpgInnu4Tml7blv4XkvKAgKi9cbiAgQElucHV0KCkgZmlsdGVyU2NoZW1lS2V5OiBzdHJpbmc7XG4gIC8qKiDmmK/lkKbljrvmjokgaGQtZmlsdGVyLWNvbnRhaW5lciDnmoQgcGFkZGluZ++8jOm7mOiupCBmYWxzZSAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGlkZVBhZGRpbmcgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZXNldEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHZhbGlkYXRlRmlsdGVyRm9ybTogRm9ybUdyb3VwO1xuICBpc1Nob3dNb3JlOiBib29sZWFuID0gdHJ1ZTtcbiAgZmlsdGVyTGlzdE1vZHVsYXI6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZm46IGFueSwgZXZlbnQ6IGFueSwgc2VsZWN0T3B0aW9uPzogYW55OyB9PigpO1xuICBwcml2YXRlIGRlYm91bmNlVGltZW91dDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBvcGVuQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZm46IGFueTsgZXZlbnQ6IGFueSB9PigpO1xuICBwcml2YXRlIG9wZW5DaGFuZ2VEZWJvdW5jZVRpbWVvdXQ6IG51bWJlciA9IDA7XG5cbiAgcHJpdmF0ZSBzZWFyY2hTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc2NoZW1lTG9hZFN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNjaGVtZUFjdGlvblN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiDpobXpnaLphY3nva7nmoTliJ3lp4vlgLzvvIjomZrmi5/jgIzpu5jorqTmnaHku7bjgI3vvIkgKi9cbiAgcHJpdmF0ZSBkZWZhdWx0RmlsdGVyVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIHByaXZhdGUgZGVmYXVsdFZhbHVlc0NhcHR1cmVkID0gZmFsc2U7XG5cbiAgc2NoZW1lTGlzdDogQXJyYXk8SGRGaWx0ZXJTY2hlbWU+ID0gW107XG4gIGN1cnJlbnRTY2hlbWU6IEhkRmlsdGVyU2NoZW1lID0gbnVsbDtcbiAgY3VycmVudFNjaGVtZU5hbWUgPSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRTtcbiAgc2NoZW1lTG9hZGluZyA9IGZhbHNlO1xuICBzY2hlbWVTYXZpbmcgPSBmYWxzZTtcblxuICBzd2l0Y2hNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgc3dpdGNoRm9ybUxpc3Q6IEFycmF5PEZvcm1JdGVtPiA9IFtdO1xuICBzd2l0Y2hWYWxpZGF0ZUZvcm06IEZvcm1Hcm91cDtcblxuICBzYXZlQXNNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgc2F2ZUFzRm9ybUxpc3Q6IEFycmF5PEZvcm1JdGVtPiA9IFtdO1xuICBzYXZlQXNWYWxpZGF0ZUZvcm06IEZvcm1Hcm91cDtcblxuICByZWFkb25seSBkZWZhdWx0U2NoZW1lTmFtZSA9IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FO1xuICBwcml2YXRlIHJlYWRvbmx5IHN3aXRjaERlZmF1bHRLZXkgPSAnX19ERUZBVUxUX18nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSERfRklMVEVSX1NDSEVNRV9TVE9SRSkgcHJpdmF0ZSBzY2hlbWVTdG9yZTogSGRGaWx0ZXJTY2hlbWVTdG9yZVxuICApIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VhcmNoU3ViamVjdC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lb3V0KVxuICAgICkuc3Vic2NyaWJlKCh7IGZuLCBldmVudCwgc2VsZWN0T3B0aW9uIH0pID0+IHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCwgc2VsZWN0T3B0aW9uKSk7XG4gICAgdGhpcy5vcGVuQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5vcGVuQ2hhbmdlU3ViamVjdFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMub3BlbkNoYW5nZURlYm91bmNlVGltZW91dCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IGZuLCBldmVudCB9KSA9PiB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgLy8g6aaW5qyh5Yqg6L295Y+q5Zyo6L+Z6YeM6K+35rGC5LiA5qyh77ybbmdPbkNoYW5nZXMg6aaW5qyh5Lmf5Lya5bim5LiKIGVuYWJsZUZpbHRlclNjaGVtZS9maWx0ZXJTY2hlbWVLZXnvvIzpgb/lhY3ph43lpI3osIPmjqXlj6NcbiAgICB0aGlzLnRyeUxvYWRTY2hlbWVzKHRydWUpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydmaWx0ZXJMaXN0J10pIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZW5hYmxlRmlsdGVyU2NoZW1lJ10gfHwgY2hhbmdlc1snZmlsdGVyU2NoZW1lS2V5J10pIHtcbiAgICAgIC8vIOmmluasoeWPmOabtOS4jiBuZ09uSW5pdCDph43lpI3vvIjnrKzkuozmrKHkvJogdW5zdWJzY3JpYmUg56ys5LiA5qyh77yM6KGo546w5Li66K+35rGC5peg6L+U5Zue77yJ77yb5LuF5ZCO57ut5YiH5o2i5YaN5Yqg6L29XG4gICAgICBjb25zdCBlbmFibGVMYXRlciA9IGNoYW5nZXNbJ2VuYWJsZUZpbHRlclNjaGVtZSddICYmICFjaGFuZ2VzWydlbmFibGVGaWx0ZXJTY2hlbWUnXS5maXJzdENoYW5nZTtcbiAgICAgIGNvbnN0IGtleUxhdGVyID0gY2hhbmdlc1snZmlsdGVyU2NoZW1lS2V5J10gJiYgIWNoYW5nZXNbJ2ZpbHRlclNjaGVtZUtleSddLmZpcnN0Q2hhbmdlO1xuICAgICAgaWYgKGVuYWJsZUxhdGVyIHx8IGtleUxhdGVyKSB7XG4gICAgICAgIHRoaXMudHJ5TG9hZFNjaGVtZXModHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcGVuQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2NoZW1lTG9hZFN1Yikge1xuICAgICAgdGhpcy5zY2hlbWVMb2FkU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNjaGVtZUFjdGlvblN1Yikge1xuICAgICAgdGhpcy5zY2hlbWVBY3Rpb25TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FuVXNlU2NoZW1lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmVuYWJsZUZpbHRlclNjaGVtZSAmJiB0aGlzLmZpbHRlclNjaGVtZUtleSAmJiB0aGlzLnNjaGVtZVN0b3JlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2hvd01vcmUgPSB0cnVlO1xuICAgIGlmICghdGhpcy5jaGVja0xpc3QodGhpcy5maWx0ZXJMaXN0KSkge1xuICAgICAgdGhyb3cgJ2ZpbHRlcue7hOS7tuaVsOaNruagvOW8j+S4jeinhOiMgyc7XG4gICAgfVxuICAgIGlmICghdGhpcy5maWx0ZXJMaXN0KSB7XG4gICAgICB0aGlzLmZpbHRlckxpc3QgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJMaXN0TW9kdWxhciA9IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggJSA0O1xuICAgIGNvbnN0IGZvcm1Hcm91cExpc3QgPSB7fTtcbiAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGZvcm1Hcm91cExpc3RbaXRlbS5uYW1lXSA9IHRoaXMuZmIuY29udHJvbChcbiAgICAgICAgdGhpcy5ub3JtYWxpemVGaWx0ZXJDb250cm9sVmFsdWUoaXRlbSwgaXRlbS52YWx1ZSksXG4gICAgICAgIFtdLFxuICAgICAgKTtcbiAgICAgIGl0ZW0uc2hvdyA9IGluZGV4IDwgNztcbiAgICB9KTtcbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoZm9ybUdyb3VwTGlzdCk7XG4gICAgaWYgKCF0aGlzLmRlZmF1bHRWYWx1ZXNDYXB0dXJlZCkge1xuICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyVmFsdWVzID0gdGhpcy5jbG9uZVBsYWluKHRoaXMuZ2V0RmlsdGVyRGF0YSgpKTtcbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc0NhcHR1cmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLm9uQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgaWYgKGl0ZW0ub25DaGFuZ2VFdmVudERlYm91bmNlVGltZSkge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldChpdGVtLm5hbWUpLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZShpdGVtLm9uQ2hhbmdlRXZlbnREZWJvdW5jZVRpbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMudHJpZ2dlckV2ZW50KGl0ZW0ub25DaGFuZ2VFdmVudCwgdmFsdWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5nZXQoaXRlbS5uYW1lKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMudHJpZ2dlckV2ZW50KGl0ZW0ub25DaGFuZ2VFdmVudCwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25TZWFyY2hFdmVudChmbjogYW55LCBldmVudDogYW55LCBvblNlYXJjaEV2ZW50RGVib3VuY2VUaW1lOiBhbnksIHNlbGVjdE9wdGlvbj86IGFueSkge1xuICAgIGlmIChvblNlYXJjaEV2ZW50RGVib3VuY2VUaW1lKSB7XG4gICAgICB0aGlzLmRlYm91bmNlVGltZW91dCA9IG9uU2VhcmNoRXZlbnREZWJvdW5jZVRpbWU7XG4gICAgICBpZiAodGhpcy5zZWFyY2hTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5zZWFyY2hTdWJqZWN0LnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZW91dClcbiAgICAgICkuc3Vic2NyaWJlKCh7IGZuLCBldmVudCwgc2VsZWN0T3B0aW9uIH0pID0+IHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCwgc2VsZWN0T3B0aW9uKSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3QubmV4dCh7IGZuLCBldmVudCwgc2VsZWN0T3B0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyaWdnZXJFdmVudChmbiwgZXZlbnQsIHNlbGVjdE9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ2hhbmdlRXZlbnQoXG4gICAgZm46IGFueSxcbiAgICBvcGVuOiBib29sZWFuLFxuICAgIG9uT3BlbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lOiBhbnksXG4gICAgZmlsdGVyPzogRmlsdGVyLFxuICApIHtcbiAgICBpZiAoIWZuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIOWxleW8gOaXtuWFiOa4heepuuaXpyBvcHRpb25z77yM6YG/5YWN5p2h5Lu25Y+Y5YyW5ZCO6K+35rGC6L+U5Zue5YmN5LuN5bGV56S65LiK5LiA5om55LiL5ouJ5pWw5o2uXG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3RPcHRpb25zT25PcGVuKGZpbHRlcik7XG4gICAgfVxuICAgIGNvbnN0IGRlYm91bmNlTXMgPVxuICAgICAgb25PcGVuQ2hhbmdlRXZlbnREZWJvdW5jZVRpbWUgIT0gbnVsbFxuICAgICAgICA/IG9uT3BlbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lXG4gICAgICAgIDogMDtcbiAgICAvLyDmnKrphY3nva7miJbkuLogMO+8muWQjOatpeinpuWPke+8jOS4jei1sCBkZWJvdW5jZVRpbWXvvIjpgb/lhY3lvILmraXvvIlcbiAgICBpZiAoIWRlYm91bmNlTXMpIHtcbiAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KGZuLCBvcGVuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuQ2hhbmdlRGVib3VuY2VUaW1lb3V0ID0gZGVib3VuY2VNcztcbiAgICBpZiAodGhpcy5vcGVuQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5vcGVuQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5vcGVuQ2hhbmdlU3ViamVjdFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMub3BlbkNoYW5nZURlYm91bmNlVGltZW91dCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IGZuLCBldmVudCB9KSA9PiB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMub3BlbkNoYW5nZVN1YmplY3QubmV4dCh7IGZuLCBldmVudDogb3BlbiB9KTtcbiAgfVxuXG4gIC8qKiDmnIkgb25PcGVuQ2hhbmdlRXZlbnQg5pe25bGV5byA5LiL5ouJ5YWI5riF56m66YCJ6aG577yM55Sx5Lia5Yqh5Zue6LCD5YaN5YaZ5YWl5paw5pWw5o2uICovXG4gIHByaXZhdGUgY2xlYXJTZWxlY3RPcHRpb25zT25PcGVuKGZpbHRlcjogRmlsdGVyKTogdm9pZCB7XG4gICAgaWYgKCFmaWx0ZXIgfHwgIWZpbHRlci5zZWxlY3RPcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3B0ID0gZmlsdGVyLnNlbGVjdE9wdGlvbjtcbiAgICBpZiAob3B0LnNlbGVjdExpc3QgIT0gbnVsbCkge1xuICAgICAgb3B0LnNlbGVjdExpc3QgPSBbXTtcbiAgICB9XG4gIH1cblxuICB0cmlnZ2VyRXZlbnQoZm46IGFueSwgZXZlbnQ6IGFueSwgc2VsZWN0T3B0aW9uPzogYW55KSB7XG4gICAgaWYgKGZuICYmIHNlbGVjdE9wdGlvbikge1xuICAgICAgZm4oZXZlbnQsIHNlbGVjdE9wdGlvbik7XG4gICAgfSBlbHNlIGlmIChmbikge1xuICAgICAgZm4oZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgLyoqIOW9k+WJjeWxleekuueahOetm+mAiemhueaVsOmHj++8iOWwiumHjSBpdGVtLnNob3fvvIzkuI7lsZXlvIAv5pS26LW35LiA6Ie077yJICovXG4gIGdldFZpc2libGVGaWx0ZXJDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5maWx0ZXJMaXN0IHx8IFtdKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2hvdyAhPT0gZmFsc2UpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiDlsJHmnaHku7bml7bliqDlrr3lrZfmrrXliJfvvJox4oaSMTjjgIEy4oaSOeOAgeKJpTPihpI2ICovXG4gIGdldEZpbHRlckNvbFNwYW4oKTogbnVtYmVyIHtcbiAgICBjb25zdCBuID0gdGhpcy5nZXRWaXNpYmxlRmlsdGVyQ291bnQoKTtcbiAgICBpZiAobiA9PT0gMSkge1xuICAgICAgcmV0dXJuIDE4O1xuICAgIH1cbiAgICBpZiAobiA9PT0gMikge1xuICAgICAgcmV0dXJuIDk7XG4gICAgfVxuICAgIHJldHVybiA2O1xuICB9XG5cbiAgY29tcHV0ZU9mZnNldCgpIHtcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB0aGlzLmdldFZpc2libGVGaWx0ZXJDb3VudCgpO1xuICAgIC8vIOKJpDIg5Liq5Y+v6KeB5p2h5Lu25pe25a2X5q615bey5Yqg5a695Y2g5ruh5LiA6KGM5Ymp5L2Z77yM5oyJ6ZKu5LiN5YaNIG9mZnNldFxuICAgIGlmICh2aXNpYmxlQ291bnQgPD0gMikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IG1vZHVsYXIgPSB2aXNpYmxlQ291bnQgJSA0O1xuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDQpIHtcbiAgICAgIHJldHVybiAxODtcbiAgICB9XG4gICAgLy8g4omlM++8muayv+eUqOWOnyAlNCDpgLvovpHvvIzmjInlj6/op4HmlbDorqHnrpfvvIjpgb/lhY3mlLbotbflkI7plJnkvY3vvIlcbiAgICByZXR1cm4gdGhpcy5pc1Nob3dNb3JlXG4gICAgICA/ICgobW9kdWxhciA9PT0gMCB8fCB2aXNpYmxlQ291bnQgPiA3KSA/IDAgOiAoMyAtIG1vZHVsYXIpICogNilcbiAgICAgIDogKG1vZHVsYXIgPT09IDAgPyAxOCA6ICgzIC0gbW9kdWxhcikgKiA2KTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tMaXN0KGxpc3Q6IEFycmF5PEZpbHRlcj4pOiBib29sZWFuIHtcbiAgICBpZiAoIWxpc3QgfHwgKGxpc3QgJiYgbGlzdC5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgbmFtZUxpc3QgPSBbXTtcbiAgICBsaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIG5hbWVMaXN0LnB1c2goaXRlbS5uYW1lKTtcbiAgICB9KTtcbiAgICBpZiAoWy4uLm5ldyBTZXQobmFtZUxpc3QpXS5sZW5ndGggIT09IGxpc3QubGVuZ3RoKSB7XG4gICAgICB0aHJvdyAnZmlsdGVy57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyD77yM5a2Y5Zyo6YeN5aSNbmFtZeWAvCEnO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoRXZlbnQuZW1pdCh0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEZpbHRlckZvcm1XaXRoVmFsdWUoKTtcbiAgICBpZiAodGhpcy5yZXNldEV2ZW50Lm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc2V0RXZlbnQuZW1pdCh0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hFdmVudC5lbWl0KHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldEZpbHRlckZvcm1XaXRoVmFsdWUoKSB7XG4gICAgY29uc3QgcmVzZXRWYWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHRoaXMuZmlsdGVyTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICByZXNldFZhbHVlW2l0ZW0ubmFtZV0gPSB0aGlzLm5vcm1hbGl6ZUZpbHRlckNvbnRyb2xWYWx1ZShpdGVtLCBpdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5wYXRjaFZhbHVlKHJlc2V0VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldEZpbHRlckRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldFJhd1ZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd01vcmUoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Nob3dNb3JlID0gIXRoaXMuaXNTaG93TW9yZTtcbiAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGl0ZW0uc2hvdyA9IHRoaXMuaXNTaG93TW9yZSA/IGluZGV4IDwgNyA6IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRDbGVhbihmaWx0ZXI6IEZpbHRlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhdGNoT2JqZWN0ID0ge307XG4gICAgcGF0Y2hPYmplY3RbZmlsdGVyLm5hbWVdID0gbnVsbDtcbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5wYXRjaFZhbHVlKHBhdGNoT2JqZWN0KTtcbiAgfVxuXG4gIGlzQWxsb3dDbGVhcihpdGVtOiBGaWx0ZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoaXRlbS5oZEFsbG93Q2xlYXIgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuICEhaXRlbS5oZEFsbG93Q2xlYXI7XG4gICAgfVxuICAgIGlmIChpdGVtLnNlbGVjdE9wdGlvbiAmJiBpdGVtLnNlbGVjdE9wdGlvbi5oZEFsbG93Q2xlYXIgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuICEhaXRlbS5zZWxlY3RPcHRpb24uaGRBbGxvd0NsZWFyO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0g562b6YCJ57uEIC0tLS0tLS0tLS1cblxuICBwcml2YXRlIHRyeUxvYWRTY2hlbWVzKGFwcGx5RGVmYXVsdDogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5jYW5Vc2VTY2hlbWUpIHtcbiAgICAgIHRoaXMuc2NoZW1lTGlzdCA9IFtdO1xuICAgICAgdGhpcy5jdXJyZW50U2NoZW1lID0gbnVsbDtcbiAgICAgIHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zY2hlbWVMb2FkaW5nID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zY2hlbWVMb2FkU3ViKSB7XG4gICAgICB0aGlzLnNjaGVtZUxvYWRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlbWVMb2FkU3ViID0gdGhpcy5zY2hlbWVTdG9yZS5xdWVyeUJ5RmlsdGVyS2V5KHRoaXMuZmlsdGVyU2NoZW1lS2V5KS5zdWJzY3JpYmUoXG4gICAgICAobGlzdCkgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zY2hlbWVMaXN0ID0gbGlzdCB8fCBbXTtcbiAgICAgICAgaWYgKGFwcGx5RGVmYXVsdCkge1xuICAgICAgICAgIHRoaXMuYXBwbHlTY2hlbWVCeU5hbWUoSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUsIHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFNjaGVtZSAmJiB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZCkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5zY2hlbWVMaXN0LmZpbmQocyA9PiBzLnV1aWQgPT09IHRoaXMuY3VycmVudFNjaGVtZS51dWlkKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWUgPSBmb3VuZCB8fCBudWxsO1xuICAgICAgICAgIHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPSBmb3VuZCA/IGZvdW5kLnRlbXBsYXRlTmFtZSA6IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IoJ+WKoOi9veetm+mAieaooeeJiOWksei0pe+8micgKyAoZXJyIHx8ICcnKSk7XG4gICAgICAgIGlmIChhcHBseURlZmF1bHQpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5U2NoZW1lQnlOYW1lKEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKiog5bGV56S655So5YiX6KGo77ya5L+d6K+B5pyJ44CM6buY6K6k5p2h5Lu244CNICovXG4gIGdldERpc3BsYXlTY2hlbWVMaXN0KCk6IEFycmF5PEhkRmlsdGVyU2NoZW1lPiB7XG4gICAgY29uc3QgcmVzdWx0OiBBcnJheTxIZEZpbHRlclNjaGVtZT4gPSBbXTtcbiAgICBjb25zdCBmcm9tRGIgPSB0aGlzLnNjaGVtZUxpc3QuZmluZChzID0+IHMudGVtcGxhdGVOYW1lID09PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSk7XG4gICAgaWYgKGZyb21EYikge1xuICAgICAgcmVzdWx0LnB1c2goZnJvbURiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBmaWx0ZXJLZXk6IHRoaXMuZmlsdGVyU2NoZW1lS2V5LFxuICAgICAgICB0ZW1wbGF0ZU5hbWU6IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLFxuICAgICAgICBmaWx0ZXJWYWx1ZTogSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0RmlsdGVyVmFsdWVzIHx8IHt9KVxuICAgICAgfSk7XG4gICAgfVxuICAgICh0aGlzLnNjaGVtZUxpc3QgfHwgW10pLmZvckVhY2gocyA9PiB7XG4gICAgICBpZiAocy50ZW1wbGF0ZU5hbWUgIT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBvcGVuU3dpdGNoTW9kYWwoKSB7XG4gICAgaWYgKCF0aGlzLmNhblVzZVNjaGVtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5jdXJyZW50U2NoZW1lXG4gICAgICB8fCB7XG4gICAgICAgIGZpbHRlcktleTogdGhpcy5maWx0ZXJTY2hlbWVLZXksXG4gICAgICAgIHRlbXBsYXRlTmFtZTogdGhpcy5jdXJyZW50U2NoZW1lTmFtZSB8fCBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSxcbiAgICAgICAgZmlsdGVyVmFsdWU6ICcnXG4gICAgICB9O1xuICAgIHRoaXMuYnVpbGRTd2l0Y2hGb3JtTGlzdCh0aGlzLmdldFN3aXRjaE9wdGlvbktleShjdXJyZW50KSk7XG4gICAgdGhpcy5zd2l0Y2hNb2RhbFZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VTd2l0Y2hNb2RhbCgpIHtcbiAgICB0aGlzLnN3aXRjaE1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoRm9ybUNoYW5nZUV2ZW50KGZvcm06IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuc3dpdGNoVmFsaWRhdGVGb3JtID0gZm9ybTtcbiAgfVxuXG4gIGdldFN3aXRjaE9wdGlvbktleShpdGVtOiBIZEZpbHRlclNjaGVtZSk6IHN0cmluZyB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zd2l0Y2hEZWZhdWx0S2V5O1xuICAgIH1cbiAgICBpZiAoaXRlbS51dWlkKSB7XG4gICAgICByZXR1cm4gaXRlbS51dWlkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zd2l0Y2hEZWZhdWx0S2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN3aXRjaEZvcm1MaXN0KHNlbGVjdGVkS2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RMaXN0ID0gdGhpcy5nZXREaXNwbGF5U2NoZW1lTGlzdCgpLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLmdldFN3aXRjaE9wdGlvbktleShpdGVtKSxcbiAgICAgICAgbGFiZWw6IGl0ZW0udGVtcGxhdGVOYW1lXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuc3dpdGNoRm9ybUxpc3QgPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IEZvcm1MaXN0VHlwZS5TZWxlY3QsXG4gICAgICAgIGxhYmVsOiAn562b6YCJ57uEJyxcbiAgICAgICAgbmFtZTogJ3NjaGVtZUtleScsXG4gICAgICAgIHJlcXVpcmU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA0LFxuICAgICAgICB2YWx1ZTogc2VsZWN0ZWRLZXksXG4gICAgICAgIHBsYWNlaG9sZGVyOiAn6K+36YCJ5oup562b6YCJ57uEJyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiB7XG4gICAgICAgICAgdmFsdWU6ICd2YWx1ZScsXG4gICAgICAgICAgbGFiZWw6ICdsYWJlbCcsXG4gICAgICAgICAgaGRTaG93U2VhcmNoOiB0cnVlLFxuICAgICAgICAgIHNlbGVjdExpc3Q6IHNlbGVjdExpc3RcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBjb25maXJtU3dpdGNoKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zd2l0Y2hWYWxpZGF0ZUZvcm0gfHwgIXRoaXMuc3dpdGNoVmFsaWRhdGVGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLnNob3dFcnJvcign6K+36YCJ5oup562b6YCJ57uEJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHNjaGVtZUtleSA9IHRoaXMuc3dpdGNoVmFsaWRhdGVGb3JtLmdldFJhd1ZhbHVlKCkuc2NoZW1lS2V5O1xuICAgIGlmIChzY2hlbWVLZXkgPT0gbnVsbCB8fCBzY2hlbWVLZXkgPT09ICcnKSB7XG4gICAgICB0aGlzLnNob3dFcnJvcign6K+36YCJ5oup562b6YCJ57uEJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldERpc3BsYXlTY2hlbWVMaXN0KCk7XG4gICAgbGV0IHRhcmdldDogSGRGaWx0ZXJTY2hlbWUgPSBudWxsO1xuICAgIGlmIChzY2hlbWVLZXkgPT09IHRoaXMuc3dpdGNoRGVmYXVsdEtleSkge1xuICAgICAgdGFyZ2V0ID0gbGlzdC5maW5kKHMgPT4gcy50ZW1wbGF0ZU5hbWUgPT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FICYmICFzLnV1aWQpXG4gICAgICAgIHx8IGxpc3QuZmluZChzID0+IHMudGVtcGxhdGVOYW1lID09PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldCA9IGxpc3QuZmluZChzID0+IHMudXVpZCA9PT0gc2NoZW1lS2V5KTtcbiAgICB9XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCfor7fpgInmi6nnrZvpgInnu4QnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5hcHBseVNjaGVtZSh0YXJnZXQsIHRydWUpO1xuICAgIHRoaXMuc3dpdGNoTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc0RlZmF1bHRTY2hlbWUoaXRlbTogSGRGaWx0ZXJTY2hlbWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoaXRlbSAmJiBpdGVtLnRlbXBsYXRlTmFtZSA9PT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUpO1xuICB9XG5cbiAgY2FuRGVsZXRlQ3VycmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5jdXJyZW50U2NoZW1lICYmIHRoaXMuY3VycmVudFNjaGVtZS51dWlkXG4gICAgICAmJiB0aGlzLmN1cnJlbnRTY2hlbWUudGVtcGxhdGVOYW1lICE9PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSk7XG4gIH1cblxuICBzYXZlQ3VycmVudFNjaGVtZSgpIHtcbiAgICBpZiAoIXRoaXMuY2FuVXNlU2NoZW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lIHx8IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FO1xuICAgIGNvbnN0IGJvZHk6IEhkRmlsdGVyU2NoZW1lID0ge1xuICAgICAgdXVpZDogdGhpcy5jdXJyZW50U2NoZW1lICYmIHRoaXMuY3VycmVudFNjaGVtZS51dWlkID8gdGhpcy5jdXJyZW50U2NoZW1lLnV1aWQgOiBudWxsLFxuICAgICAgZmlsdGVyS2V5OiB0aGlzLmZpbHRlclNjaGVtZUtleSxcbiAgICAgIHRlbXBsYXRlTmFtZTogbmFtZSxcbiAgICAgIGZpbHRlclZhbHVlOiB0aGlzLnNlcmlhbGl6ZUZpbHRlclZhbHVlKClcbiAgICB9O1xuICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zY2hlbWVBY3Rpb25TdWIpIHtcbiAgICAgIHRoaXMuc2NoZW1lQWN0aW9uU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuc2NoZW1lQWN0aW9uU3ViID0gdGhpcy5zY2hlbWVTdG9yZS5zYXZlKGJvZHkpLnN1YnNjcmliZShcbiAgICAgIChzYXZlZCkgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZVNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dTdWNjZXNzKCfkv53lrZjmiJDlip8nKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lID0gc2F2ZWQ7XG4gICAgICAgIHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPSBzYXZlZC50ZW1wbGF0ZU5hbWU7XG4gICAgICAgIHRoaXMucmVmcmVzaFNjaGVtZUxpc3RLZWVwQ3VycmVudCgpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IoJ+S/neWtmOWksei0pe+8micgKyAoZXJyIHx8ICcnKSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9wZW5TYXZlQXNNb2RhbCgpIHtcbiAgICB0aGlzLmJ1aWxkU2F2ZUFzRm9ybUxpc3QoKTtcbiAgICB0aGlzLnNhdmVBc01vZGFsVmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBjbG9zZVNhdmVBc01vZGFsKCkge1xuICAgIHRoaXMuc2F2ZUFzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBzYXZlQXNGb3JtQ2hhbmdlRXZlbnQoZm9ybTogRm9ybUdyb3VwKSB7XG4gICAgdGhpcy5zYXZlQXNWYWxpZGF0ZUZvcm0gPSBmb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNhdmVBc0Zvcm1MaXN0KCkge1xuICAgIHRoaXMuc2F2ZUFzRm9ybUxpc3QgPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IEZvcm1MaXN0VHlwZS5JbnB1dCxcbiAgICAgICAgbGFiZWw6ICfnrZvpgInnu4TlkI3np7AnLFxuICAgICAgICBuYW1lOiAndGVtcGxhdGVOYW1lJyxcbiAgICAgICAgcmVxdWlyZTogdHJ1ZSxcbiAgICAgICAgd2lkdGg6IDQsXG4gICAgICAgIG1heExlbmd0aDogNTAsXG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ+ivt+i+k+WFpeetm+mAiee7hOWQjeensCdcbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgY29uZmlybVNhdmVBcygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2F2ZUFzVmFsaWRhdGVGb3JtIHx8ICF0aGlzLnNhdmVBc1ZhbGlkYXRlRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5zaG93RXJyb3IoJ+ivt+i+k+WFpeetm+mAiee7hOWQjeensCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBuYW1lID0gKCh0aGlzLnNhdmVBc1ZhbGlkYXRlRm9ybS5nZXRSYXdWYWx1ZSgpLnRlbXBsYXRlTmFtZSkgfHwgJycpLnRyaW0oKTtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCfor7fovpPlhaXnrZvpgInnu4TlkI3np7AnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG5hbWUgPT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FKSB7XG4gICAgICB0aGlzLnNob3dFcnJvcign5LiN6IO95L2/55So44CM6buY6K6k5p2h5Lu244CN5L2c5Li6562b6YCJ57uE5ZCN56ew77yM6K+35L2/55So44CM5L+d5a2Y5Li65b2T5YmN44CN6KaG55uW6buY6K6k5p2h5Lu2Jyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGV4aXN0cyA9ICh0aGlzLnNjaGVtZUxpc3QgfHwgW10pLnNvbWUocyA9PiBzLnRlbXBsYXRlTmFtZSA9PT0gbmFtZSk7XG4gICAgaWYgKGV4aXN0cykge1xuICAgICAgdGhpcy5zaG93RXJyb3IoJ+etm+mAiee7hOWQjeensOW3suWtmOWcqCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBib2R5OiBIZEZpbHRlclNjaGVtZSA9IHtcbiAgICAgIGZpbHRlcktleTogdGhpcy5maWx0ZXJTY2hlbWVLZXksXG4gICAgICB0ZW1wbGF0ZU5hbWU6IG5hbWUsXG4gICAgICBmaWx0ZXJWYWx1ZTogdGhpcy5zZXJpYWxpemVGaWx0ZXJWYWx1ZSgpXG4gICAgfTtcbiAgICB0aGlzLnNjaGVtZVNhdmluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2NoZW1lQWN0aW9uU3ViKSB7XG4gICAgICB0aGlzLnNjaGVtZUFjdGlvblN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnNjaGVtZUFjdGlvblN1YiA9IHRoaXMuc2NoZW1lU3RvcmUuc2F2ZShib2R5KS5zdWJzY3JpYmUoXG4gICAgICAoc2F2ZWQpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zYXZlQXNNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93U3VjY2Vzcygn5Y+m5a2Y5Li65oiQ5YqfJyk7XG4gICAgICAgIHRoaXMuY3VycmVudFNjaGVtZSA9IHNhdmVkO1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID0gc2F2ZWQudGVtcGxhdGVOYW1lO1xuICAgICAgICB0aGlzLnJlZnJlc2hTY2hlbWVMaXN0S2VlcEN1cnJlbnQoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKCflj6blrZjkuLrlpLHotKXvvJonICsgKGVyciB8fCAnJykpO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZGVsZXRlQ3VycmVudFNjaGVtZSgpIHtcbiAgICBpZiAoIXRoaXMuY2FuRGVsZXRlQ3VycmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHV1aWQgPSB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZDtcbiAgICB0aGlzLnNjaGVtZVNhdmluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2NoZW1lQWN0aW9uU3ViKSB7XG4gICAgICB0aGlzLnNjaGVtZUFjdGlvblN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnNjaGVtZUFjdGlvblN1YiA9IHRoaXMuc2NoZW1lU3RvcmUuZGVsZXRlKHV1aWQpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93U3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJyk7XG4gICAgICAgIHRoaXMuc2NoZW1lTGlzdCA9ICh0aGlzLnNjaGVtZUxpc3QgfHwgW10pLmZpbHRlcihzID0+IHMudXVpZCAhPT0gdXVpZCk7XG4gICAgICAgIHRoaXMuYXBwbHlTY2hlbWVCeU5hbWUoSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IoJ+WIoOmZpOWksei0pe+8micgKyAoZXJyIHx8ICcnKSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFNjaGVtZUxpc3RLZWVwQ3VycmVudCgpIHtcbiAgICBpZiAoIXRoaXMuY2FuVXNlU2NoZW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2NoZW1lU3RvcmUucXVlcnlCeUZpbHRlcktleSh0aGlzLmZpbHRlclNjaGVtZUtleSkuc3Vic2NyaWJlKFxuICAgICAgKGxpc3QpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVMaXN0ID0gbGlzdCB8fCBbXTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFNjaGVtZSAmJiB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZCkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5zY2hlbWVMaXN0LmZpbmQocyA9PiBzLnV1aWQgPT09IHRoaXMuY3VycmVudFNjaGVtZS51dWlkKTtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNjaGVtZSA9IGZvdW5kO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9IGZvdW5kLnRlbXBsYXRlTmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoKSA9PiB7IC8qIGlnbm9yZSAqLyB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTY2hlbWVCeU5hbWUobmFtZTogc3RyaW5nLCBlbWl0U2VhcmNoOiBib29sZWFuKSB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuZ2V0RGlzcGxheVNjaGVtZUxpc3QoKTtcbiAgICBjb25zdCB0YXJnZXQgPSBsaXN0LmZpbmQocyA9PiBzLnRlbXBsYXRlTmFtZSA9PT0gbmFtZSk7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGhpcy5hcHBseVNjaGVtZSh0YXJnZXQsIGVtaXRTZWFyY2gpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTY2hlbWUoc2NoZW1lOiBIZEZpbHRlclNjaGVtZSwgZW1pdFNlYXJjaDogYm9vbGVhbikge1xuICAgIHRoaXMuY3VycmVudFNjaGVtZSA9IHNjaGVtZSAmJiBzY2hlbWUudXVpZCA/IHNjaGVtZSA6IHtcbiAgICAgIGZpbHRlcktleTogdGhpcy5maWx0ZXJTY2hlbWVLZXksXG4gICAgICB0ZW1wbGF0ZU5hbWU6IHNjaGVtZSA/IHNjaGVtZS50ZW1wbGF0ZU5hbWUgOiBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSxcbiAgICAgIGZpbHRlclZhbHVlOiBzY2hlbWUgPyBzY2hlbWUuZmlsdGVyVmFsdWUgOiBKU09OLnN0cmluZ2lmeSh0aGlzLmRlZmF1bHRGaWx0ZXJWYWx1ZXMgfHwge30pXG4gICAgfTtcbiAgICB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID0gdGhpcy5jdXJyZW50U2NoZW1lLnRlbXBsYXRlTmFtZSB8fCBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRTtcblxuICAgIGxldCB2YWx1ZXM6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID09PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSAmJiAhKHNjaGVtZSAmJiBzY2hlbWUudXVpZCkpIHtcbiAgICAgIHZhbHVlcyA9IHRoaXMuY2xvbmVQbGFpbih0aGlzLmRlZmF1bHRGaWx0ZXJWYWx1ZXMgfHwge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZXMgPSBKU09OLnBhcnNlKHNjaGVtZS5maWx0ZXJWYWx1ZSB8fCAne30nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdmFsdWVzID0ge307XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9PT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUpIHtcbiAgICAgICAgLy8g5bqT5Lit6buY6K6k5p2h5Lu26KaG55uW5Yid5aeL5YC877ya5Lul6buY6K6k5YC85Li65bqV77yM5YaN5Y+g5Yqg5bqT5YC8XG4gICAgICAgIHZhbHVlcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdEZpbHRlclZhbHVlcyB8fCB7fSwgdmFsdWVzIHx8IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYXRjaEZpbHRlclZhbHVlcyh2YWx1ZXMpO1xuICAgIGlmIChlbWl0U2VhcmNoKSB7XG4gICAgICB0aGlzLnN1Ym1pdEZvcm0oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZUZpbHRlclZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0RmlsdGVyRGF0YSgpIHx8IHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hGaWx0ZXJWYWx1ZXModmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybSB8fCAhdGhpcy5maWx0ZXJMaXN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhdGNoOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAodmFsdWVzICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZXMsIGl0ZW0ubmFtZSkpIHtcbiAgICAgICAgcGF0Y2hbaXRlbS5uYW1lXSA9IHRoaXMucmV2aXZlRmlsdGVyVmFsdWUoaXRlbSwgdmFsdWVzW2l0ZW0ubmFtZV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLnBhdGNoVmFsdWUocGF0Y2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWkmumAieepuuaAgeeUqCBbXe+8jOmBv+WFjSBGb3JtQ29udHJvbCDkuLogbnVsbCDml7Ygbnotc2VsZWN0IG11bHRpcGxlIOS4jeaYvuekuiBwbGFjZWhvbGRlcuOAglxuICAgKiBEYXRlUmFuZ2Ug5b+F6aG75L+d5oyBIG51bGzvvIjmiJbmiorljoblj7LnqbrmlbDnu4TlvZLkuIDkuLogbnVsbO+8ie+8muS4muWKoeS+p+Wkp+mHj+eUqCAhdmFsdWUg5Yik5pat77yMXG4gICAqIOiLpeinhOiMg+aIkCBbXSDkvJrlm6AgdHJ1dGh5IOi1sOi/myBtb21lbnQodmFsdWVbMF0p77yM6KKr6Kej5p6Q5oiQ44CM5LuK5aSp44CN44CCXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUZpbHRlckNvbnRyb2xWYWx1ZShmaWx0ZXI6IEZpbHRlciwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci50eXBlID09PSBGaWx0ZXJMaXN0VHlwZS5NdWx0aXBsZVNlbGVjdCAmJiB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGZpbHRlci50eXBlID09PSBGaWx0ZXJMaXN0VHlwZS5EYXRlUmFuZ2UgJiZcbiAgICAgICh2YWx1ZSA9PSBudWxsIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmV2aXZlRmlsdGVyVmFsdWUoZmlsdGVyOiBGaWx0ZXIsIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVGaWx0ZXJDb250cm9sVmFsdWUoZmlsdGVyLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gRmlsdGVyTGlzdFR5cGUuRGF0ZVJhbmdlKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAodiA9PiB0aGlzLnBhcnNlRGF0ZUxpa2UodikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLnR5cGUgPT09IEZpbHRlckxpc3RUeXBlLkRhdGUgfHwgZmlsdGVyLnR5cGUgPT09IEZpbHRlckxpc3RUeXBlLk1vbnRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZURhdGVMaWtlKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURhdGVMaWtlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9Ly50ZXN0KHZhbHVlKSkge1xuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBpc05hTihkLmdldFRpbWUoKSkgPyB2YWx1ZSA6IGQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBkID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgcmV0dXJuIGlzTmFOKGQuZ2V0VGltZSgpKSA/IHZhbHVlIDogZDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZVBsYWluKG9iajogYW55KTogYW55IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqID09IG51bGwgPyB7fSA6IG9iaikpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dTdWNjZXNzKG1zZzogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5oZE1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgICAod2luZG93IGFzIGFueSkuaGRNZXNzYWdlU2VydmljZS5wcm90b3R5cGUuc3VjY2Vzcyhtc2cpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd0Vycm9yKG1zZzogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5oZE1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgICAod2luZG93IGFzIGFueSkuaGRNZXNzYWdlU2VydmljZS5wcm90b3R5cGUuZXJyb3IobXNnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXNjYWRlclNob3dTZWFyY2ggPSBnZXRDYXNjYWRlclNob3dTZWFyY2g7XG4gIGdldENhc2NhZGVyTWVudUNsYXNzTmFtZSA9IGdldENhc2NhZGVyTWVudUNsYXNzTmFtZTtcbiAgZ2V0Q2FzY2FkZXJNZW51U3R5bGUgPSBnZXRDYXNjYWRlck1lbnVTdHlsZTtcbn1cbiJdfQ==
|