fantasy-ngzorro 2.2.30 → 2.2.32

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.
@@ -163,7 +163,7 @@ var HdFilterComponent = /** @class */ (function () {
163
163
  * @return {?}
164
164
  */
165
165
  function (item, index) {
166
- formGroupList[item.name] = _this.fb.control(item.value, []);
166
+ formGroupList[item.name] = _this.fb.control(_this.normalizeFilterControlValue(item, item.value), []);
167
167
  item.show = index < 7;
168
168
  }));
169
169
  this.validateFilterForm = this.fb.group(formGroupList);
@@ -447,6 +447,7 @@ var HdFilterComponent = /** @class */ (function () {
447
447
  * @return {?}
448
448
  */
449
449
  function () {
450
+ var _this = this;
450
451
  /** @type {?} */
451
452
  var resetValue = {};
452
453
  this.filterList.forEach((/**
@@ -454,7 +455,7 @@ var HdFilterComponent = /** @class */ (function () {
454
455
  * @return {?}
455
456
  */
456
457
  function (item) {
457
- resetValue[item.name] = item.value;
458
+ resetValue[item.name] = _this.normalizeFilterControlValue(item, item.value);
458
459
  }));
459
460
  this.validateFilterForm.patchValue(resetValue);
460
461
  };
@@ -1120,6 +1121,32 @@ var HdFilterComponent = /** @class */ (function () {
1120
1121
  }));
1121
1122
  this.validateFilterForm.patchValue(patch);
1122
1123
  };
1124
+ /**
1125
+ * 多选 / 日期范围空态用 [],避免 FormControl 为 null 时 nz-select multiple 不显示 placeholder。
1126
+ */
1127
+ /**
1128
+ * 多选 / 日期范围空态用 [],避免 FormControl 为 null 时 nz-select multiple 不显示 placeholder。
1129
+ * @private
1130
+ * @param {?} filter
1131
+ * @param {?} value
1132
+ * @return {?}
1133
+ */
1134
+ HdFilterComponent.prototype.normalizeFilterControlValue = /**
1135
+ * 多选 / 日期范围空态用 [],避免 FormControl 为 null 时 nz-select multiple 不显示 placeholder。
1136
+ * @private
1137
+ * @param {?} filter
1138
+ * @param {?} value
1139
+ * @return {?}
1140
+ */
1141
+ function (filter, value) {
1142
+ if (filter &&
1143
+ (filter.type === FilterListType.MultipleSelect ||
1144
+ filter.type === FilterListType.DateRange) &&
1145
+ value == null) {
1146
+ return [];
1147
+ }
1148
+ return value;
1149
+ };
1123
1150
  /**
1124
1151
  * @private
1125
1152
  * @param {?} filter
@@ -1135,7 +1162,7 @@ var HdFilterComponent = /** @class */ (function () {
1135
1162
  function (filter, value) {
1136
1163
  var _this = this;
1137
1164
  if (value == null) {
1138
- return value;
1165
+ return this.normalizeFilterControlValue(filter, value);
1139
1166
  }
1140
1167
  if (filter.type === FilterListType.DateRange) {
1141
1168
  if (Array.isArray(value)) {
@@ -1386,4 +1413,4 @@ if (false) {
1386
1413
  */
1387
1414
  HdFilterComponent.prototype.schemeStore;
1388
1415
  }
1389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWZpbHRlci9oZC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQVUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBRXRCLG1CQUFtQixFQUNwQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCO0lBb0RFLDJCQUNVLEVBQWUsRUFDNkIsV0FBZ0M7UUFGdEYsaUJBY0M7UUFiUyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQzZCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjs7OztRQTdDN0QsdUJBQWtCLEdBQUcsS0FBSyxDQUFDOzs7O1FBSTNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRW5DLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcxQyxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUN0QixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFnRCxDQUFDO1FBQzVFLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO1FBQzNELDhCQUF5QixHQUFXLENBQUMsQ0FBQzs7OztRQVF0Qyx3QkFBbUIsR0FBMkIsRUFBRSxDQUFDO1FBQ2pELDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUV0QyxlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN2QyxrQkFBYSxHQUFtQixJQUFJLENBQUM7UUFDckMsc0JBQWlCLEdBQUcsNkJBQTZCLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUdyQyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBRzVCLHNCQUFpQixHQUFHLDZCQUE2QixDQUFDO1FBQzFDLHFCQUFnQixHQUFHLGFBQWEsQ0FBQztRQXlwQmxELDBCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQzlDLDZCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3BELHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBcnBCMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMvQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUNuQyxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFDLEVBQTJCO2dCQUF6QixVQUFFLEVBQUUsZ0JBQUssRUFBRSw4QkFBWTtZQUFPLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUExQyxDQUEwQyxFQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQzthQUNsRCxTQUFTOzs7O1FBQUMsVUFBQyxFQUFhO2dCQUFYLFVBQUUsRUFBRSxnQkFBSztZQUNyQixJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7OztJQUVELG9DQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRUQsdUNBQVc7Ozs7SUFBWCxVQUFZLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO1FBQ0QsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTs7O2dCQUV6RCxXQUFXLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxXQUFXOztnQkFDekYsUUFBUSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVztZQUN0RixJQUFJLFdBQVcsSUFBSSxRQUFRLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7Ozs7SUFFRCx1Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDM0M7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELHNCQUFJLDJDQUFZOzs7O1FBQWhCO1lBQ0UsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakYsQ0FBQzs7O09BQUE7Ozs7O0lBRU8sZ0NBQUk7Ozs7SUFBWjtRQUFBLGlCQWdDQztRQS9CQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxpQkFBaUIsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzs7WUFDOUMsYUFBYSxHQUFHLEVBQUU7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7OztRQUFDLFVBQUMsSUFBSSxFQUFFLEtBQUs7WUFDbEMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFDLElBQUk7WUFDM0IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtvQkFDbEMsS0FBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTt5QkFDaEQsSUFBSSxDQUNILFlBQVksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FDN0M7eUJBQ0EsU0FBUzs7OztvQkFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBNUMsQ0FBNEMsRUFBQyxDQUFDO2lCQUNyRTtxQkFBTTtvQkFDTCxLQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUzs7OztvQkFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBNUMsQ0FBNEMsRUFBQyxDQUFDO2lCQUN0SDthQUNGO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7OztJQUVELHlDQUFhOzs7Ozs7O0lBQWIsVUFBYyxFQUFPLEVBQUUsS0FBVSxFQUFFLHlCQUE4QixFQUFFLFlBQWtCO1FBQXJGLGlCQWFDO1FBWkMsSUFBSSx5QkFBeUIsRUFBRTtZQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLHlCQUF5QixDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdkM7WUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQy9DLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQ25DLENBQUMsU0FBUzs7OztZQUFDLFVBQUMsRUFBMkI7b0JBQXpCLFVBQUUsRUFBRSxnQkFBSyxFQUFFLDhCQUFZO2dCQUFPLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUExQyxDQUEwQyxFQUFDLENBQUM7WUFDekYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxZQUFZLGNBQUEsRUFBRSxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7Ozs7Ozs7O0lBRUQsNkNBQWlCOzs7Ozs7O0lBQWpCLFVBQ0UsRUFBTyxFQUNQLElBQWEsRUFDYiw2QkFBa0MsRUFDbEMsTUFBZTtRQUpqQixpQkFvQ0M7UUE5QkMsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNQLE9BQU87U0FDUjtRQUNELHlDQUF5QztRQUN6QyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2Qzs7WUFDSyxVQUFVLEdBQ2QsNkJBQTZCLElBQUksSUFBSTtZQUNuQyxDQUFDLENBQUMsNkJBQTZCO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ1AscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUM3QjtZQUNELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxVQUFVLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQzthQUNsRCxTQUFTOzs7O1FBQUMsVUFBQyxFQUFhO2dCQUFYLFVBQUUsRUFBRSxnQkFBSztZQUNyQixJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBQSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxpREFBaUQ7Ozs7Ozs7SUFDekMsb0RBQXdCOzs7Ozs7SUFBaEMsVUFBaUMsTUFBYztRQUM3QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUNuQyxPQUFPO1NBQ1I7O1lBQ0ssR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZO1FBQy9CLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDMUIsR0FBRyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDOzs7Ozs7O0lBRUQsd0NBQVk7Ozs7OztJQUFaLFVBQWEsRUFBTyxFQUFFLEtBQVUsRUFBRSxZQUFrQjtRQUNsRCxJQUFJLEVBQUUsSUFBSSxZQUFZLEVBQUU7WUFDdEIsRUFBRSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztTQUN6QjthQUFNLElBQUksRUFBRSxFQUFFO1lBQ2IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ1g7YUFBTTtZQUNMLE9BQU87U0FDUjtJQUNILENBQUM7SUFFRCx3Q0FBd0M7Ozs7O0lBQ3hDLGlEQUFxQjs7OztJQUFyQjtRQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU07Ozs7UUFBQyxVQUFDLElBQUksSUFBSyxPQUFBLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFuQixDQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlFLENBQUM7SUFFRCw4QkFBOEI7Ozs7O0lBQzlCLDRDQUFnQjs7OztJQUFoQjs7WUFDUSxDQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDWCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOzs7O0lBRUQseUNBQWE7OztJQUFiOztZQUNRLFlBQVksR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUU7UUFDakQsbUNBQW1DO1FBQ25DLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRTtZQUNyQixPQUFPLENBQUMsQ0FBQztTQUNWOztZQUNLLE9BQU8sR0FBRyxZQUFZLEdBQUcsQ0FBQztRQUNoQyxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELCtCQUErQjtRQUMvQixPQUFPLElBQUksQ0FBQyxVQUFVO1lBQ3BCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7Ozs7O0lBRU8scUNBQVM7Ozs7O0lBQWpCLFVBQWtCLElBQW1CO1FBQ25DLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNiOztZQUNLLFFBQVEsR0FBRyxFQUFFO1FBQ25CLElBQUksQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQyxJQUFJO1lBQ2hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxpQkFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNqRCxNQUFNLDRCQUE0QixDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O0lBRU0sc0NBQVU7OztJQUFqQjtRQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Ozs7SUFFTSxxQ0FBUzs7O0lBQWhCO1FBQ0UsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQzdEO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7Ozs7SUFFTSxvREFBd0I7OztJQUEvQjs7WUFDUSxVQUFVLEdBQTJCLEVBQUU7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQyxJQUFJO1lBQzNCLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyQyxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7OztJQUVNLHlDQUFhOzs7SUFBcEI7UUFDRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzs7O0lBRU0sb0NBQVE7OztJQUFmO1FBQUEsaUJBS0M7UUFKQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU87Ozs7O1FBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztZQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRU0sc0NBQVU7Ozs7SUFBakIsVUFBa0IsTUFBYzs7WUFDeEIsV0FBVyxHQUFHLEVBQUU7UUFDdEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDOzs7OztJQUVELHdDQUFZOzs7O0lBQVosVUFBYSxJQUFZO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTtZQUM3QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTtZQUMvRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztTQUN6QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0Qjs7Ozs7OztJQUVwQiwwQ0FBYzs7Ozs7OztJQUF0QixVQUF1QixZQUFxQjtRQUE1QyxpQkErQkM7UUE5QkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLDZCQUE2QixDQUFDO1lBQ3ZELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTOzs7O1FBQ3BGLFVBQUMsSUFBSTtZQUNILEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLEtBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLFlBQVksRUFBRTtnQkFDaEIsS0FBSSxDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdEO2lCQUFNLElBQUksS0FBSSxDQUFDLGFBQWEsSUFBSSxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTs7b0JBQ2xELEtBQUssR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7Ozs7Z0JBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFsQyxDQUFrQyxFQUFDO2dCQUMzRSxLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7Z0JBQ25DLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO2FBQ3JGO1FBQ0gsQ0FBQzs7OztRQUNELFVBQUMsR0FBRztZQUNGLEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLEtBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUM3RDtRQUNILENBQUMsRUFDRixDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFzQjs7Ozs7SUFDdEIsZ0RBQW9COzs7O0lBQXBCOztZQUNRLE1BQU0sR0FBMEIsRUFBRTs7WUFDbEMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksS0FBSyw2QkFBNkIsRUFBaEQsQ0FBZ0QsRUFBQztRQUMxRixJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckI7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUMvQixZQUFZLEVBQUUsNkJBQTZCO2dCQUMzQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO2FBQzVELENBQUMsQ0FBQztTQUNKO1FBQ0QsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLENBQUM7WUFDL0IsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLDZCQUE2QixFQUFFO2dCQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7O0lBRUQsMkNBQWU7OztJQUFmO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsT0FBTztTQUNSOztZQUNLLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYTtlQUM3QjtnQkFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCLElBQUksNkJBQTZCO2dCQUNyRSxXQUFXLEVBQUUsRUFBRTthQUNoQjtRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFFRCw0Q0FBZ0I7OztJQUFoQjtRQUNFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQzs7Ozs7SUFFRCxpREFBcUI7Ozs7SUFBckIsVUFBc0IsSUFBZTtRQUNuQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7Ozs7O0lBRUQsOENBQWtCOzs7O0lBQWxCLFVBQW1CLElBQW9CO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUNsQjtRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Ozs7OztJQUVPLCtDQUFtQjs7Ozs7SUFBM0IsVUFBNEIsV0FBbUI7UUFBL0MsaUJBd0JDOztZQXZCTyxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsSUFBSTtZQUNyRCxPQUFPO2dCQUNMLEtBQUssRUFBRSxLQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7YUFDekIsQ0FBQztRQUNKLENBQUMsRUFBQztRQUNGLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEI7Z0JBQ0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxNQUFNO2dCQUN6QixLQUFLLEVBQUUsS0FBSztnQkFDWixJQUFJLEVBQUUsV0FBVztnQkFDakIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLFdBQVcsRUFBRSxRQUFRO2dCQUNyQixZQUFZLEVBQUU7b0JBQ1osS0FBSyxFQUFFLE9BQU87b0JBQ2QsS0FBSyxFQUFFLE9BQU87b0JBQ2QsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLFVBQVUsRUFBRSxVQUFVO2lCQUN2QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCx5Q0FBYTs7O0lBQWI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRTtZQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7O1lBQ0ssU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTO1FBQ2pFLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLEtBQUssRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUM7U0FDZDs7WUFDSyxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFOztZQUNwQyxNQUFNLEdBQW1CLElBQUk7UUFDakMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSTs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksS0FBSyw2QkFBNkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQTNELENBQTJELEVBQUM7bUJBQy9FLElBQUksQ0FBQyxJQUFJOzs7O2dCQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksS0FBSyw2QkFBNkIsRUFBaEQsQ0FBZ0QsRUFBQyxDQUFDO1NBQ3ZFO2FBQU07WUFDTCxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUk7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFwQixDQUFvQixFQUFDLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7O0lBRUQsMkNBQWU7Ozs7SUFBZixVQUFnQixJQUFvQjtRQUNsQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLDZCQUE2QixDQUFDLENBQUM7SUFDekUsQ0FBQzs7OztJQUVELDRDQUFnQjs7O0lBQWhCO1FBQ0UsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSTtlQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksS0FBSyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7Ozs7SUFFRCw2Q0FBaUI7OztJQUFqQjtRQUFBLGlCQTRCQztRQTNCQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7O1lBQ0ssSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSw2QkFBNkI7O1lBQzlELElBQUksR0FBbUI7WUFDM0IsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3BGLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMvQixZQUFZLEVBQUUsSUFBSTtZQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVM7Ozs7UUFDMUQsVUFBQyxLQUFLO1lBQ0osS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixLQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUM1QyxLQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUN0QyxDQUFDOzs7O1FBQ0QsVUFBQyxHQUFHO1lBQ0YsS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDLEVBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCwyQ0FBZTs7O0lBQWY7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFFRCw0Q0FBZ0I7OztJQUFoQjtRQUNFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQzs7Ozs7SUFFRCxpREFBcUI7Ozs7SUFBckIsVUFBc0IsSUFBZTtRQUNuQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7Ozs7O0lBRU8sK0NBQW1COzs7O0lBQTNCO1FBQ0UsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQjtnQkFDRSxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7Z0JBQ3hCLEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxjQUFjO2dCQUNwQixPQUFPLEVBQUUsSUFBSTtnQkFDYixLQUFLLEVBQUUsQ0FBQztnQkFDUixTQUFTLEVBQUUsRUFBRTtnQkFDYixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsVUFBVTthQUN4QjtTQUNGLENBQUM7SUFDSixDQUFDOzs7O0lBRUQseUNBQWE7OztJQUFiO1FBQUEsaUJBMkNDO1FBMUNDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO1lBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDZDs7WUFDSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFDaEYsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksSUFBSSxLQUFLLDZCQUE2QixFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUNyRCxPQUFPLEtBQUssQ0FBQztTQUNkOztZQUNLLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQXZCLENBQXVCLEVBQUM7UUFDekUsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7O1lBQ0ssSUFBSSxHQUFtQjtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDL0IsWUFBWSxFQUFFLElBQUk7WUFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtTQUN6QztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTOzs7O1FBQzFELFVBQUMsS0FBSztZQUNKLEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixLQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUM1QyxLQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUN0QyxDQUFDOzs7O1FBQ0QsVUFBQyxHQUFHO1lBQ0YsS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDLEVBQ0YsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7OztJQUVELCtDQUFtQjs7O0lBQW5CO1FBQUEsaUJBcUJDO1FBcEJDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUM1QixPQUFPO1NBQ1I7O1lBQ0ssSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSTtRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUzs7O1FBQzVEO1lBQ0UsS0FBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixLQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksRUFBZixDQUFlLEVBQUMsQ0FBQztZQUN2RSxLQUFJLENBQUMsaUJBQWlCLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsQ0FBQzs7OztRQUNELFVBQUMsR0FBRztZQUNGLEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxFQUNGLENBQUM7SUFDSixDQUFDOzs7OztJQUVPLHdEQUE0Qjs7OztJQUFwQztRQUFBLGlCQWlCQztRQWhCQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTOzs7O1FBQy9ELFVBQUMsSUFBSTtZQUNILEtBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLEtBQUksQ0FBQyxhQUFhLElBQUksS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7O29CQUMzQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJOzs7O2dCQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBbEMsQ0FBa0MsRUFBQztnQkFDM0UsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsS0FBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7b0JBQzNCLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2lCQUM3QzthQUNGO1FBQ0gsQ0FBQzs7O1FBQ0QsY0FBcUIsQ0FBQyxFQUN2QixDQUFDO0lBQ0osQ0FBQzs7Ozs7OztJQUVPLDZDQUFpQjs7Ozs7O0lBQXpCLFVBQTBCLElBQVksRUFBRSxVQUFtQjs7WUFDbkQsSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRTs7WUFDbEMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksRUFBdkIsQ0FBdUIsRUFBQztRQUN0RCxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7Ozs7OztJQUVPLHVDQUFXOzs7Ozs7SUFBbkIsVUFBb0IsTUFBc0IsRUFBRSxVQUFtQjtRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3BELFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMvQixZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyw2QkFBNkI7WUFDMUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO1NBQzFGLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksNkJBQTZCLENBQUM7O1lBRXRGLE1BQU0sR0FBUSxFQUFFO1FBQ3BCLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLDZCQUE2QixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hGLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSTtnQkFDRixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDO2FBQ2pEO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssNkJBQTZCLEVBQUU7Z0JBQzVELDJCQUEyQjtnQkFDM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzFFO1NBQ0Y7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDOzs7OztJQUVPLGdEQUFvQjs7OztJQUE1QjtRQUNFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Ozs7O0lBRU8sNkNBQWlCOzs7OztJQUF6QixVQUEwQixNQUE4QjtRQUF4RCxpQkFXQztRQVZDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hELE9BQU87U0FDUjs7WUFDSyxLQUFLLEdBQTJCLEVBQUU7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxJQUFJO1lBQzFCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7Ozs7Ozs7SUFFTyw2Q0FBaUI7Ozs7OztJQUF6QixVQUEwQixNQUFjLEVBQUUsS0FBVTtRQUFwRCxpQkFjQztRQWJDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixPQUFPLEtBQUssQ0FBQyxHQUFHOzs7O2dCQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsS0FBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBckIsQ0FBcUIsRUFBQyxDQUFDO2FBQzlDO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLEtBQUssRUFBRTtZQUMvRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7OztJQUVPLHlDQUFhOzs7OztJQUFyQixVQUFzQixLQUFVO1FBQzlCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1lBQzFDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7O2dCQUMzRCxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFOztnQkFDdkIsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7OztJQUVPLHNDQUFVOzs7OztJQUFsQixVQUFtQixHQUFRO1FBQ3pCLElBQUk7WUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDOzs7Ozs7SUFFTyx1Q0FBVzs7Ozs7SUFBbkIsVUFBb0IsR0FBVztRQUM3QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLG1CQUFBLE1BQU0sRUFBTyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7WUFDckUsQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDOzs7Ozs7SUFFTyxxQ0FBUzs7Ozs7SUFBakIsVUFBa0IsR0FBVztRQUMzQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLG1CQUFBLE1BQU0sRUFBTyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7WUFDckUsQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNMLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7Z0JBenNCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLDJ2VUFBeUM7O2lCQUUxQzs7OztnQkF0QlEsV0FBVztnQkFlbEIsbUJBQW1CLHVCQXlEaEIsUUFBUSxZQUFJLE1BQU0sU0FBQyxzQkFBc0I7Ozs2QkEvQzNDLEtBQUs7cUNBRUwsS0FBSztrQ0FFTCxLQUFLOzhCQUVMLEtBQUs7OEJBRUwsTUFBTTs2QkFDTixNQUFNOztJQVBrQjtRQUFmLFlBQVksRUFBRTs7aUVBQTRCO0lBSTNCO1FBQWYsWUFBWSxFQUFFOzswREFBcUI7SUFpc0IvQyx3QkFBQztDQUFBLEFBOXNCRCxJQThzQkM7U0F6c0JZLGlCQUFpQjs7O0lBRTVCLHVDQUFtQzs7Ozs7SUFFbkMsK0NBQW9EOzs7OztJQUVwRCw0Q0FBaUM7Ozs7O0lBRWpDLHdDQUE2Qzs7SUFFN0Msd0NBQTJDOztJQUMzQyx1Q0FBMEM7O0lBRTFDLCtDQUE4Qjs7SUFDOUIsdUNBQTJCOztJQUMzQiw4Q0FBOEI7Ozs7O0lBQzlCLDBDQUFvRjs7Ozs7SUFDcEYsNENBQW9DOzs7OztJQUNwQyw4Q0FBbUU7Ozs7O0lBQ25FLHNEQUE4Qzs7Ozs7SUFFOUMsK0NBQXFEOzs7OztJQUNyRCxtREFBeUQ7Ozs7O0lBQ3pELDBDQUFnRDs7Ozs7SUFDaEQsNENBQWtEOzs7Ozs7SUFHbEQsZ0RBQXlEOzs7OztJQUN6RCxrREFBc0M7O0lBRXRDLHVDQUF1Qzs7SUFDdkMsMENBQXFDOztJQUNyQyw4Q0FBa0Q7O0lBQ2xELDBDQUFzQjs7SUFDdEIseUNBQXFCOztJQUVyQiwrQ0FBMkI7O0lBQzNCLDJDQUFxQzs7SUFDckMsK0NBQThCOztJQUU5QiwrQ0FBMkI7O0lBQzNCLDJDQUFxQzs7SUFDckMsK0NBQThCOztJQUU5Qiw4Q0FBMkQ7Ozs7O0lBQzNELDZDQUFrRDs7SUF5cEJsRCxrREFBOEM7O0lBQzlDLHFEQUFvRDs7SUFDcEQsaURBQTRDOzs7OztJQXhwQjFDLCtCQUF1Qjs7Ozs7SUFDdkIsd0NBQW9GIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmlsdGVyLCBGaWx0ZXJMaXN0VHlwZSB9IGZyb20gJy4vaGQtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUl0ZW0sIEZvcm1MaXN0VHlwZSB9IGZyb20gJy4uL2hkLWZvcm0vaGQtZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGdldENhc2NhZGVyTWVudUNsYXNzTmFtZSxcbiAgZ2V0Q2FzY2FkZXJNZW51U3R5bGUsXG4gIGdldENhc2NhZGVyU2hvd1NlYXJjaCxcbn0gZnJvbSAnLi4vdXRpbHMvY2FzY2FkZXIudXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25nLXpvcnJvLWFudGQnO1xuaW1wb3J0IHtcbiAgSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUsXG4gIEhEX0ZJTFRFUl9TQ0hFTUVfU1RPUkUsXG4gIEhkRmlsdGVyU2NoZW1lLFxuICBIZEZpbHRlclNjaGVtZVN0b3JlXG59IGZyb20gJy4vaGQtZmlsdGVyLXNjaGVtZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hkLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZC1maWx0ZXIuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBIZEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGZpbHRlckxpc3Q6IEFycmF5PEZpbHRlcj47XG4gIC8qKiDmmK/lkKblkK/nlKjnrZvpgInnu4TvvIjpu5jorqTlhbPpl63vvIkgKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGVuYWJsZUZpbHRlclNjaGVtZSA9IGZhbHNlO1xuICAvKiog562b6YCJ5Zmo5qCH6K+G77yM5byA5ZCv562b6YCJ57uE5pe25b+F5LygICovXG4gIEBJbnB1dCgpIGZpbHRlclNjaGVtZUtleTogc3RyaW5nO1xuICAvKiog5piv5ZCm5Y675o6JIGhkLWZpbHRlci1jb250YWluZXIg55qEIHBhZGRpbmfvvIzpu5jorqQgZmFsc2UgKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGhpZGVQYWRkaW5nID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVzZXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICB2YWxpZGF0ZUZpbHRlckZvcm06IEZvcm1Hcm91cDtcbiAgaXNTaG93TW9yZTogYm9vbGVhbiA9IHRydWU7XG4gIGZpbHRlckxpc3RNb2R1bGFyOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDx7IGZuOiBhbnksIGV2ZW50OiBhbnksIHNlbGVjdE9wdGlvbj86IGFueTsgfT4oKTtcbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVvdXQ6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgb3BlbkNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDx7IGZuOiBhbnk7IGV2ZW50OiBhbnkgfT4oKTtcbiAgcHJpdmF0ZSBvcGVuQ2hhbmdlRGVib3VuY2VUaW1lb3V0OiBudW1iZXIgPSAwO1xuXG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbkNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNjaGVtZUxvYWRTdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzY2hlbWVBY3Rpb25TdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAvKiog6aG16Z2i6YWN572u55qE5Yid5aeL5YC877yI6Jma5ouf44CM6buY6K6k5p2h5Lu244CN77yJICovXG4gIHByaXZhdGUgZGVmYXVsdEZpbHRlclZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICBwcml2YXRlIGRlZmF1bHRWYWx1ZXNDYXB0dXJlZCA9IGZhbHNlO1xuXG4gIHNjaGVtZUxpc3Q6IEFycmF5PEhkRmlsdGVyU2NoZW1lPiA9IFtdO1xuICBjdXJyZW50U2NoZW1lOiBIZEZpbHRlclNjaGVtZSA9IG51bGw7XG4gIGN1cnJlbnRTY2hlbWVOYW1lID0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUU7XG4gIHNjaGVtZUxvYWRpbmcgPSBmYWxzZTtcbiAgc2NoZW1lU2F2aW5nID0gZmFsc2U7XG5cbiAgc3dpdGNoTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gIHN3aXRjaEZvcm1MaXN0OiBBcnJheTxGb3JtSXRlbT4gPSBbXTtcbiAgc3dpdGNoVmFsaWRhdGVGb3JtOiBGb3JtR3JvdXA7XG5cbiAgc2F2ZUFzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gIHNhdmVBc0Zvcm1MaXN0OiBBcnJheTxGb3JtSXRlbT4gPSBbXTtcbiAgc2F2ZUFzVmFsaWRhdGVGb3JtOiBGb3JtR3JvdXA7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdFNjaGVtZU5hbWUgPSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRTtcbiAgcHJpdmF0ZSByZWFkb25seSBzd2l0Y2hEZWZhdWx0S2V5ID0gJ19fREVGQVVMVF9fJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEhEX0ZJTFRFUl9TQ0hFTUVfU1RPUkUpIHByaXZhdGUgc2NoZW1lU3RvcmU6IEhkRmlsdGVyU2NoZW1lU3RvcmVcbiAgKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaFN1YmplY3QucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZW91dClcbiAgICApLnN1YnNjcmliZSgoeyBmbiwgZXZlbnQsIHNlbGVjdE9wdGlvbiB9KSA9PiB0aGlzLnRyaWdnZXJFdmVudChmbiwgZXZlbnQsIHNlbGVjdE9wdGlvbikpO1xuICAgIHRoaXMub3BlbkNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMub3BlbkNoYW5nZVN1YmplY3RcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLm9wZW5DaGFuZ2VEZWJvdW5jZVRpbWVvdXQpKVxuICAgICAgLnN1YnNjcmliZSgoeyBmbiwgZXZlbnQgfSkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudChmbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIC8vIOmmluasoeWKoOi9veWPquWcqOi/memHjOivt+axguS4gOasoe+8m25nT25DaGFuZ2VzIOmmluasoeS5n+S8muW4puS4iiBlbmFibGVGaWx0ZXJTY2hlbWUvZmlsdGVyU2NoZW1lS2V577yM6YG/5YWN6YeN5aSN6LCD5o6l5Y+jXG4gICAgdGhpcy50cnlMb2FkU2NoZW1lcyh0cnVlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyTGlzdCddKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2VuYWJsZUZpbHRlclNjaGVtZSddIHx8IGNoYW5nZXNbJ2ZpbHRlclNjaGVtZUtleSddKSB7XG4gICAgICAvLyDpppbmrKHlj5jmm7TkuI4gbmdPbkluaXQg6YeN5aSN77yI56ys5LqM5qyh5LyaIHVuc3Vic2NyaWJlIOesrOS4gOasoe+8jOihqOeOsOS4uuivt+axguaXoOi/lOWbnu+8ie+8m+S7heWQjue7reWIh+aNouWGjeWKoOi9vVxuICAgICAgY29uc3QgZW5hYmxlTGF0ZXIgPSBjaGFuZ2VzWydlbmFibGVGaWx0ZXJTY2hlbWUnXSAmJiAhY2hhbmdlc1snZW5hYmxlRmlsdGVyU2NoZW1lJ10uZmlyc3RDaGFuZ2U7XG4gICAgICBjb25zdCBrZXlMYXRlciA9IGNoYW5nZXNbJ2ZpbHRlclNjaGVtZUtleSddICYmICFjaGFuZ2VzWydmaWx0ZXJTY2hlbWVLZXknXS5maXJzdENoYW5nZTtcbiAgICAgIGlmIChlbmFibGVMYXRlciB8fCBrZXlMYXRlcikge1xuICAgICAgICB0aGlzLnRyeUxvYWRTY2hlbWVzKHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbkNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNjaGVtZUxvYWRTdWIpIHtcbiAgICAgIHRoaXMuc2NoZW1lTG9hZFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zY2hlbWVBY3Rpb25TdWIpIHtcbiAgICAgIHRoaXMuc2NoZW1lQWN0aW9uU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNhblVzZVNjaGVtZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5lbmFibGVGaWx0ZXJTY2hlbWUgJiYgdGhpcy5maWx0ZXJTY2hlbWVLZXkgJiYgdGhpcy5zY2hlbWVTdG9yZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Nob3dNb3JlID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuY2hlY2tMaXN0KHRoaXMuZmlsdGVyTGlzdCkpIHtcbiAgICAgIHRocm93ICdmaWx0ZXLnu4Tku7bmlbDmja7moLzlvI/kuI3op4TojIMnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZmlsdGVyTGlzdCkge1xuICAgICAgdGhpcy5maWx0ZXJMaXN0ID0gW107XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyTGlzdE1vZHVsYXIgPSB0aGlzLmZpbHRlckxpc3QubGVuZ3RoICUgNDtcbiAgICBjb25zdCBmb3JtR3JvdXBMaXN0ID0ge307XG4gICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBmb3JtR3JvdXBMaXN0W2l0ZW0ubmFtZV0gPSB0aGlzLmZiLmNvbnRyb2woaXRlbS52YWx1ZSwgW10pO1xuICAgICAgaXRlbS5zaG93ID0gaW5kZXggPCA3O1xuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cChmb3JtR3JvdXBMaXN0KTtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlc0NhcHR1cmVkKSB7XG4gICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJWYWx1ZXMgPSB0aGlzLmNsb25lUGxhaW4odGhpcy5nZXRGaWx0ZXJEYXRhKCkpO1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWVzQ2FwdHVyZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0ub25DaGFuZ2VFdmVudCkge1xuICAgICAgICBpZiAoaXRlbS5vbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZpbHRlckZvcm0uZ2V0KGl0ZW0ubmFtZSkudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKGl0ZW0ub25DaGFuZ2VFdmVudERlYm91bmNlVGltZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldChpdGVtLm5hbWUpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblNlYXJjaEV2ZW50KGZuOiBhbnksIGV2ZW50OiBhbnksIG9uU2VhcmNoRXZlbnREZWJvdW5jZVRpbWU6IGFueSwgc2VsZWN0T3B0aW9uPzogYW55KSB7XG4gICAgaWYgKG9uU2VhcmNoRXZlbnREZWJvdW5jZVRpbWUpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VUaW1lb3V0ID0gb25TZWFyY2hFdmVudERlYm91bmNlVGltZTtcbiAgICAgIGlmICh0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaFN1YmplY3QucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lb3V0KVxuICAgICAgKS5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24gfSkgPT4gdGhpcy50cmlnZ2VyRXZlbnQoZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24pKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHsgZm4sIGV2ZW50LCBzZWxlY3RPcHRpb24gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCwgc2VsZWN0T3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICBvbk9wZW5DaGFuZ2VFdmVudChcbiAgICBmbjogYW55LFxuICAgIG9wZW46IGJvb2xlYW4sXG4gICAgb25PcGVuQ2hhbmdlRXZlbnREZWJvdW5jZVRpbWU6IGFueSxcbiAgICBmaWx0ZXI/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+IHtcbiAgICAgIHJlc2V0VmFsdWVbaXRlbS5uYW1lXSA9IGl0ZW0udmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy52YWxpZGF0ZUZpbHRlckZvcm0ucGF0Y2hWYWx1ZShyZXNldFZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5nZXRSYXdWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNob3dNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTaG93TW9yZSA9ICF0aGlzLmlzU2hvd01vcmU7XG4gICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpdGVtLnNob3cgPSB0aGlzLmlzU2hvd01vcmUgPyBpbmRleCA8IDcgOiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlucHV0Q2xlYW4oZmlsdGVyOiBGaWx0ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYXRjaE9iamVjdCA9IHt9O1xuICAgIHBhdGNoT2JqZWN0W2ZpbHRlci5uYW1lXSA9IG51bGw7XG4gICAgdGhpcy52YWxpZGF0ZUZpbHRlckZvcm0ucGF0Y2hWYWx1ZShwYXRjaE9iamVjdCk7XG4gIH1cblxuICBpc0FsbG93Q2xlYXIoaXRlbTogRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uaGRBbGxvd0NsZWFyICE9IG51bGwpIHtcbiAgICAgIHJldHVybiAhIWl0ZW0uaGRBbGxvd0NsZWFyO1xuICAgIH1cbiAgICBpZiAoaXRlbS5zZWxlY3RPcHRpb24gJiYgaXRlbS5zZWxlY3RPcHRpb24uaGRBbGxvd0NsZWFyICE9IG51bGwpIHtcbiAgICAgIHJldHVybiAhIWl0ZW0uc2VsZWN0T3B0aW9uLmhkQWxsb3dDbGVhcjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tIOetm+mAiee7hCAtLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSB0cnlMb2FkU2NoZW1lcyhhcHBseURlZmF1bHQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuY2FuVXNlU2NoZW1lKSB7XG4gICAgICB0aGlzLnNjaGVtZUxpc3QgPSBbXTtcbiAgICAgIHRoaXMuY3VycmVudFNjaGVtZSA9IG51bGw7XG4gICAgICB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2NoZW1lTG9hZGluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2NoZW1lTG9hZFN1Yikge1xuICAgICAgdGhpcy5zY2hlbWVMb2FkU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuc2NoZW1lTG9hZFN1YiA9IHRoaXMuc2NoZW1lU3RvcmUucXVlcnlCeUZpbHRlcktleSh0aGlzLmZpbHRlclNjaGVtZUtleSkuc3Vic2NyaWJlKFxuICAgICAgKGxpc3QpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2NoZW1lTGlzdCA9IGxpc3QgfHwgW107XG4gICAgICAgIGlmIChhcHBseURlZmF1bHQpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5U2NoZW1lQnlOYW1lKEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRTY2hlbWUgJiYgdGhpcy5jdXJyZW50U2NoZW1lLnV1aWQpIHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuc2NoZW1lTGlzdC5maW5kKHMgPT4gcy51dWlkID09PSB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZCk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lID0gZm91bmQgfHwgbnVsbDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID0gZm91bmQgPyBmb3VuZC50ZW1wbGF0ZU5hbWUgOiBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKCfliqDovb3nrZvpgInmqKHniYjlpLHotKXvvJonICsgKGVyciB8fCAnJykpO1xuICAgICAgICBpZiAoYXBwbHlEZWZhdWx0KSB7XG4gICAgICAgICAgdGhpcy5hcHBseVNjaGVtZUJ5TmFtZShIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIOWxleekuueUqOWIl+ihqO+8muS/neivgeacieOAjOm7mOiupOadoeS7tuOAjSAqL1xuICBnZXREaXNwbGF5U2NoZW1lTGlzdCgpOiBBcnJheTxIZEZpbHRlclNjaGVtZT4ge1xuICAgIGNvbnN0IHJlc3VsdDogQXJyYXk8SGRGaWx0ZXJTY2hlbWU+ID0gW107XG4gICAgY29uc3QgZnJvbURiID0gdGhpcy5zY2hlbWVMaXN0LmZpbmQocyA9PiBzLnRlbXBsYXRlTmFtZSA9PT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUpO1xuICAgIGlmIChmcm9tRGIpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGZyb21EYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgZmlsdGVyS2V5OiB0aGlzLmZpbHRlclNjaGVtZUtleSxcbiAgICAgICAgdGVtcGxhdGVOYW1lOiBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSxcbiAgICAgICAgZmlsdGVyVmFsdWU6IEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVsdEZpbHRlclZhbHVlcyB8fCB7fSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICAodGhpcy5zY2hlbWVMaXN0IHx8IFtdKS5mb3JFYWNoKHMgPT4ge1xuICAgICAgaWYgKHMudGVtcGxhdGVOYW1lICE9PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSkge1xuICAgICAgICByZXN1bHQucHVzaChzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb3BlblN3aXRjaE1vZGFsKCkge1xuICAgIGlmICghdGhpcy5jYW5Vc2VTY2hlbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuY3VycmVudFNjaGVtZVxuICAgICAgfHwge1xuICAgICAgICBmaWx0ZXJLZXk6IHRoaXMuZmlsdGVyU2NoZW1lS2V5LFxuICAgICAgICB0ZW1wbGF0ZU5hbWU6IHRoaXMuY3VycmVudFNjaGVtZU5hbWUgfHwgSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUsXG4gICAgICAgIGZpbHRlclZhbHVlOiAnJ1xuICAgICAgfTtcbiAgICB0aGlzLmJ1aWxkU3dpdGNoRm9ybUxpc3QodGhpcy5nZXRTd2l0Y2hPcHRpb25LZXkoY3VycmVudCkpO1xuICAgIHRoaXMuc3dpdGNoTW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIGNsb3NlU3dpdGNoTW9kYWwoKSB7XG4gICAgdGhpcy5zd2l0Y2hNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHN3aXRjaEZvcm1DaGFuZ2VFdmVudChmb3JtOiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLnN3aXRjaFZhbGlkYXRlRm9ybSA9IGZvcm07XG4gIH1cblxuICBnZXRTd2l0Y2hPcHRpb25LZXkoaXRlbTogSGRGaWx0ZXJTY2hlbWUpOiBzdHJpbmcge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3dpdGNoRGVmYXVsdEtleTtcbiAgICB9XG4gICAgaWYgKGl0ZW0udXVpZCkge1xuICAgICAgcmV0dXJuIGl0ZW0udXVpZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3dpdGNoRGVmYXVsdEtleTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTd2l0Y2hGb3JtTGlzdChzZWxlY3RlZEtleTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0TGlzdCA9IHRoaXMuZ2V0RGlzcGxheVNjaGVtZUxpc3QoKS5tYXAoaXRlbSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogdGhpcy5nZXRTd2l0Y2hPcHRpb25LZXkoaXRlbSksXG4gICAgICAgIGxhYmVsOiBpdGVtLnRlbXBsYXRlTmFtZVxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0aGlzLnN3aXRjaEZvcm1MaXN0ID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBGb3JtTGlzdFR5cGUuU2VsZWN0LFxuICAgICAgICBsYWJlbDogJ+etm+mAiee7hCcsXG4gICAgICAgIG5hbWU6ICdzY2hlbWVLZXknLFxuICAgICAgICByZXF1aXJlOiB0cnVlLFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgdmFsdWU6IHNlbGVjdGVkS2V5LFxuICAgICAgICBwbGFjZWhvbGRlcjogJ+ivt+mAieaLqeetm+mAiee7hCcsXG4gICAgICAgIHNlbGVjdE9wdGlvbjoge1xuICAgICAgICAgIHZhbHVlOiAndmFsdWUnLFxuICAgICAgICAgIGxhYmVsOiAnbGFiZWwnLFxuICAgICAgICAgIGhkU2hvd1NlYXJjaDogdHJ1ZSxcbiAgICAgICAgICBzZWxlY3RMaXN0OiBzZWxlY3RMaXN0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgY29uZmlybVN3aXRjaCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc3dpdGNoVmFsaWRhdGVGb3JtIHx8ICF0aGlzLnN3aXRjaFZhbGlkYXRlRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5zaG93RXJyb3IoJ+ivt+mAieaLqeetm+mAiee7hCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBzY2hlbWVLZXkgPSB0aGlzLnN3aXRjaFZhbGlkYXRlRm9ybS5nZXRSYXdWYWx1ZSgpLnNjaGVtZUtleTtcbiAgICBpZiAoc2NoZW1lS2V5ID09IG51bGwgfHwgc2NoZW1lS2V5ID09PSAnJykge1xuICAgICAgdGhpcy5zaG93RXJyb3IoJ+ivt+mAieaLqeetm+mAiee7hCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5nZXREaXNwbGF5U2NoZW1lTGlzdCgpO1xuICAgIGxldCB0YXJnZXQ6IEhkRmlsdGVyU2NoZW1lID0gbnVsbDtcbiAgICBpZiAoc2NoZW1lS2V5ID09PSB0aGlzLnN3aXRjaERlZmF1bHRLZXkpIHtcbiAgICAgIHRhcmdldCA9IGxpc3QuZmluZChzID0+IHMudGVtcGxhdGVOYW1lID09PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSAmJiAhcy51dWlkKVxuICAgICAgICB8fCBsaXN0LmZpbmQocyA9PiBzLnRlbXBsYXRlTmFtZSA9PT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXQgPSBsaXN0LmZpbmQocyA9PiBzLnV1aWQgPT09IHNjaGVtZUtleSk7XG4gICAgfVxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aGlzLnNob3dFcnJvcign6K+36YCJ5oup562b6YCJ57uEJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuYXBwbHlTY2hlbWUodGFyZ2V0LCB0cnVlKTtcbiAgICB0aGlzLnN3aXRjaE1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNEZWZhdWx0U2NoZW1lKGl0ZW06IEhkRmlsdGVyU2NoZW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKGl0ZW0gJiYgaXRlbS50ZW1wbGF0ZU5hbWUgPT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FKTtcbiAgfVxuXG4gIGNhbkRlbGV0ZUN1cnJlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY3VycmVudFNjaGVtZSAmJiB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZFxuICAgICAgJiYgdGhpcy5jdXJyZW50U2NoZW1lLnRlbXBsYXRlTmFtZSAhPT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUpO1xuICB9XG5cbiAgc2F2ZUN1cnJlbnRTY2hlbWUoKSB7XG4gICAgaWYgKCF0aGlzLmNhblVzZVNjaGVtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuYW1lID0gdGhpcy5jdXJyZW50U2NoZW1lTmFtZSB8fCBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRTtcbiAgICBjb25zdCBib2R5OiBIZEZpbHRlclNjaGVtZSA9IHtcbiAgICAgIHV1aWQ6IHRoaXMuY3VycmVudFNjaGVtZSAmJiB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZCA/IHRoaXMuY3VycmVudFNjaGVtZS51dWlkIDogbnVsbCxcbiAgICAgIGZpbHRlcktleTogdGhpcy5maWx0ZXJTY2hlbWVLZXksXG4gICAgICB0ZW1wbGF0ZU5hbWU6IG5hbWUsXG4gICAgICBmaWx0ZXJWYWx1ZTogdGhpcy5zZXJpYWxpemVGaWx0ZXJWYWx1ZSgpXG4gICAgfTtcbiAgICB0aGlzLnNjaGVtZVNhdmluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2NoZW1lQWN0aW9uU3ViKSB7XG4gICAgICB0aGlzLnNjaGVtZUFjdGlvblN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnNjaGVtZUFjdGlvblN1YiA9IHRoaXMuc2NoZW1lU3RvcmUuc2F2ZShib2R5KS5zdWJzY3JpYmUoXG4gICAgICAoc2F2ZWQpID0+IHtcbiAgICAgICAgdGhpcy5zY2hlbWVTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93U3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7XG4gICAgICAgIHRoaXMuY3VycmVudFNjaGVtZSA9IHNhdmVkO1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWVOYW1lID0gc2F2ZWQudGVtcGxhdGVOYW1lO1xuICAgICAgICB0aGlzLnJlZnJlc2hTY2hlbWVMaXN0S2VlcEN1cnJlbnQoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKCfkv53lrZjlpLHotKXvvJonICsgKGVyciB8fCAnJykpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBvcGVuU2F2ZUFzTW9kYWwoKSB7XG4gICAgdGhpcy5idWlsZFNhdmVBc0Zvcm1MaXN0KCk7XG4gICAgdGhpcy5zYXZlQXNNb2RhbFZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VTYXZlQXNNb2RhbCgpIHtcbiAgICB0aGlzLnNhdmVBc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgc2F2ZUFzRm9ybUNoYW5nZUV2ZW50KGZvcm06IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuc2F2ZUFzVmFsaWRhdGVGb3JtID0gZm9ybTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTYXZlQXNGb3JtTGlzdCgpIHtcbiAgICB0aGlzLnNhdmVBc0Zvcm1MaXN0ID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBGb3JtTGlzdFR5cGUuSW5wdXQsXG4gICAgICAgIGxhYmVsOiAn562b6YCJ57uE5ZCN56ewJyxcbiAgICAgICAgbmFtZTogJ3RlbXBsYXRlTmFtZScsXG4gICAgICAgIHJlcXVpcmU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA0LFxuICAgICAgICBtYXhMZW5ndGg6IDUwLFxuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICfor7fovpPlhaXnrZvpgInnu4TlkI3np7AnXG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIGNvbmZpcm1TYXZlQXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNhdmVBc1ZhbGlkYXRlRm9ybSB8fCAhdGhpcy5zYXZlQXNWYWxpZGF0ZUZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCfor7fovpPlhaXnrZvpgInnu4TlkI3np7AnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9ICgodGhpcy5zYXZlQXNWYWxpZGF0ZUZvcm0uZ2V0UmF3VmFsdWUoKS50ZW1wbGF0ZU5hbWUpIHx8ICcnKS50cmltKCk7XG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICB0aGlzLnNob3dFcnJvcign6K+36L6T5YWl562b6YCJ57uE5ZCN56ewJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChuYW1lID09PSBIRF9GSUxURVJfREVGQVVMVF9TQ0hFTUVfTkFNRSkge1xuICAgICAgdGhpcy5zaG93RXJyb3IoJ+S4jeiDveS9v+eUqOOAjOm7mOiupOadoeS7tuOAjeS9nOS4uuetm+mAiee7hOWQjeensO+8jOivt+S9v+eUqOOAjOS/neWtmOS4uuW9k+WJjeOAjeimhueblum7mOiupOadoeS7ticpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBleGlzdHMgPSAodGhpcy5zY2hlbWVMaXN0IHx8IFtdKS5zb21lKHMgPT4gcy50ZW1wbGF0ZU5hbWUgPT09IG5hbWUpO1xuICAgIGlmIChleGlzdHMpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCfnrZvpgInnu4TlkI3np7Dlt7LlrZjlnKgnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYm9keTogSGRGaWx0ZXJTY2hlbWUgPSB7XG4gICAgICBmaWx0ZXJLZXk6IHRoaXMuZmlsdGVyU2NoZW1lS2V5LFxuICAgICAgdGVtcGxhdGVOYW1lOiBuYW1lLFxuICAgICAgZmlsdGVyVmFsdWU6IHRoaXMuc2VyaWFsaXplRmlsdGVyVmFsdWUoKVxuICAgIH07XG4gICAgdGhpcy5zY2hlbWVTYXZpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNjaGVtZUFjdGlvblN1Yikge1xuICAgICAgdGhpcy5zY2hlbWVBY3Rpb25TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlbWVBY3Rpb25TdWIgPSB0aGlzLnNjaGVtZVN0b3JlLnNhdmUoYm9keSkuc3Vic2NyaWJlKFxuICAgICAgKHNhdmVkKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F2ZUFzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3MoJ+WPpuWtmOS4uuaIkOWKnycpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWUgPSBzYXZlZDtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9IHNhdmVkLnRlbXBsYXRlTmFtZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoU2NoZW1lTGlzdEtlZXBDdXJyZW50KCk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtZVNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFcnJvcign5Y+m5a2Y5Li65aSx6LSl77yaJyArIChlcnIgfHwgJycpKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGRlbGV0ZUN1cnJlbnRTY2hlbWUoKSB7XG4gICAgaWYgKCF0aGlzLmNhbkRlbGV0ZUN1cnJlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1dWlkID0gdGhpcy5jdXJyZW50U2NoZW1lLnV1aWQ7XG4gICAgdGhpcy5zY2hlbWVTYXZpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNjaGVtZUFjdGlvblN1Yikge1xuICAgICAgdGhpcy5zY2hlbWVBY3Rpb25TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlbWVBY3Rpb25TdWIgPSB0aGlzLnNjaGVtZVN0b3JlLmRlbGV0ZSh1dWlkKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3MoJ+WIoOmZpOaIkOWKnycpO1xuICAgICAgICB0aGlzLnNjaGVtZUxpc3QgPSAodGhpcy5zY2hlbWVMaXN0IHx8IFtdKS5maWx0ZXIocyA9PiBzLnV1aWQgIT09IHV1aWQpO1xuICAgICAgICB0aGlzLmFwcGx5U2NoZW1lQnlOYW1lKEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKCfliKDpmaTlpLHotKXvvJonICsgKGVyciB8fCAnJykpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hTY2hlbWVMaXN0S2VlcEN1cnJlbnQoKSB7XG4gICAgaWYgKCF0aGlzLmNhblVzZVNjaGVtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNjaGVtZVN0b3JlLnF1ZXJ5QnlGaWx0ZXJLZXkodGhpcy5maWx0ZXJTY2hlbWVLZXkpLnN1YnNjcmliZShcbiAgICAgIChsaXN0KSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1lTGlzdCA9IGxpc3QgfHwgW107XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTY2hlbWUgJiYgdGhpcy5jdXJyZW50U2NoZW1lLnV1aWQpIHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuc2NoZW1lTGlzdC5maW5kKHMgPT4gcy51dWlkID09PSB0aGlzLmN1cnJlbnRTY2hlbWUudXVpZCk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTY2hlbWUgPSBmb3VuZDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPSBmb3VuZC50ZW1wbGF0ZU5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKCkgPT4geyAvKiBpZ25vcmUgKi8gfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2NoZW1lQnlOYW1lKG5hbWU6IHN0cmluZywgZW1pdFNlYXJjaDogYm9vbGVhbikge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldERpc3BsYXlTY2hlbWVMaXN0KCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbGlzdC5maW5kKHMgPT4gcy50ZW1wbGF0ZU5hbWUgPT09IG5hbWUpO1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIHRoaXMuYXBwbHlTY2hlbWUodGFyZ2V0LCBlbWl0U2VhcmNoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2NoZW1lKHNjaGVtZTogSGRGaWx0ZXJTY2hlbWUsIGVtaXRTZWFyY2g6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmN1cnJlbnRTY2hlbWUgPSBzY2hlbWUgJiYgc2NoZW1lLnV1aWQgPyBzY2hlbWUgOiB7XG4gICAgICBmaWx0ZXJLZXk6IHRoaXMuZmlsdGVyU2NoZW1lS2V5LFxuICAgICAgdGVtcGxhdGVOYW1lOiBzY2hlbWUgPyBzY2hlbWUudGVtcGxhdGVOYW1lIDogSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUsXG4gICAgICBmaWx0ZXJWYWx1ZTogc2NoZW1lID8gc2NoZW1lLmZpbHRlclZhbHVlIDogSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0RmlsdGVyVmFsdWVzIHx8IHt9KVxuICAgIH07XG4gICAgdGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9IHRoaXMuY3VycmVudFNjaGVtZS50ZW1wbGF0ZU5hbWUgfHwgSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUU7XG5cbiAgICBsZXQgdmFsdWVzOiBhbnkgPSB7fTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2NoZW1lTmFtZSA9PT0gSERfRklMVEVSX0RFRkFVTFRfU0NIRU1FX05BTUUgJiYgIShzY2hlbWUgJiYgc2NoZW1lLnV1aWQpKSB7XG4gICAgICB2YWx1ZXMgPSB0aGlzLmNsb25lUGxhaW4odGhpcy5kZWZhdWx0RmlsdGVyVmFsdWVzIHx8IHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsdWVzID0gSlNPTi5wYXJzZShzY2hlbWUuZmlsdGVyVmFsdWUgfHwgJ3t9Jyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHZhbHVlcyA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY3VycmVudFNjaGVtZU5hbWUgPT09IEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FKSB7XG4gICAgICAgIC8vIOW6k+S4rem7mOiupOadoeS7tuimhuebluWIneWni+WAvO+8muS7pem7mOiupOWAvOS4uuW6le+8jOWGjeWPoOWKoOW6k+WAvFxuICAgICAgICB2YWx1ZXMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRGaWx0ZXJWYWx1ZXMgfHwge30sIHZhbHVlcyB8fCB7fSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucGF0Y2hGaWx0ZXJWYWx1ZXModmFsdWVzKTtcbiAgICBpZiAoZW1pdFNlYXJjaCkge1xuICAgICAgdGhpcy5zdWJtaXRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVGaWx0ZXJWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmdldEZpbHRlckRhdGEoKSB8fCB7fSk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoRmlsdGVyVmFsdWVzKHZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmICghdGhpcy52YWxpZGF0ZUZpbHRlckZvcm0gfHwgIXRoaXMuZmlsdGVyTGlzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYXRjaDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHRoaXMuZmlsdGVyTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKHZhbHVlcyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWVzLCBpdGVtLm5hbWUpKSB7XG4gICAgICAgIHBhdGNoW2l0ZW0ubmFtZV0gPSB0aGlzLnJldml2ZUZpbHRlclZhbHVlKGl0ZW0sIHZhbHVlc1tpdGVtLm5hbWVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5wYXRjaFZhbHVlKHBhdGNoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmV2aXZlRmlsdGVyVmFsdWUoZmlsdGVyOiBGaWx0ZXIsIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gRmlsdGVyTGlzdFR5cGUuRGF0ZVJhbmdlKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHRoaXMucGFyc2VEYXRlTGlrZSh2KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gRmlsdGVyTGlzdFR5cGUuRGF0ZSB8fCBmaWx0ZXIudHlwZSA9PT0gRmlsdGVyTGlzdFR5cGUuTW9udGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlRGF0ZUxpa2UodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZUxpa2UodmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0vLnRlc3QodmFsdWUpKSB7XG4gICAgICBjb25zdCBkID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgcmV0dXJuIGlzTmFOKGQuZ2V0VGltZSgpKSA/IHZhbHVlIDogZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICByZXR1cm4gaXNOYU4oZC5nZXRUaW1lKCkpID8gdmFsdWUgOiBkO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNsb25lUGxhaW4ob2JqOiBhbnkpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmogPT0gbnVsbCA/IHt9IDogb2JqKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd1N1Y2Nlc3MobXNnOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLmhkTWVzc2FnZVNlcnZpY2UpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5oZE1lc3NhZ2VTZXJ2aWNlLnByb3RvdHlwZS5zdWNjZXNzKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93RXJyb3IobXNnOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLmhkTWVzc2FnZVNlcnZpY2UpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5oZE1lc3NhZ2VTZXJ2aWNlLnByb3RvdHlwZS5lcnJvcihtc2cpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGdldENhc2NhZGVyU2hvd1NlYXJjaCA9IGdldENhc2NhZGVyU2hvd1NlYXJjaDtcbiAgZ2V0Q2FzY2FkZXJNZW51Q2xhc3NOYW1lID0gZ2V0Q2FzY2FkZXJNZW51Q2xhc3NOYW1lO1xuICBnZXRDYXNjYWRlck1lbnVTdHlsZSA9IGdldENhc2NhZGVyTWVudVN0eWxlO1xufVxuIl19
1416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWZpbHRlci9oZC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQVUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBRXRCLG1CQUFtQixFQUNwQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCO0lBb0RFLDJCQUNVLEVBQWUsRUFDNkIsV0FBZ0M7UUFGdEYsaUJBY0M7UUFiUyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQzZCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjs7OztRQTdDN0QsdUJBQWtCLEdBQUcsS0FBSyxDQUFDOzs7O1FBSTNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRW5DLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcxQyxlQUFVLEdBQVksSUFB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Q0FBZ0Q7Ozs7O0lBQ2hELDRDQUFrRDs7Ozs7O0lBR2xELGdEQUF5RDs7Ozs7SUFDekQsa0RBQXNDOztJQUV0Qyx1Q0FBdUM7O0lBQ3ZDLDBDQUFxQzs7SUFDckMsOENBQWtEOztJQUNsRCwwQ0FBc0I7O0lBQ3RCLHlDQUFxQjs7SUFFckIsK0NBQTJCOztJQUMzQiwyQ0FBcUM7O0lBQ3JDLCtDQUE4Qjs7SUFFOUIsK0NBQTJCOztJQUMzQiwyQ0FBcUM7O0lBQ3JDLCtDQUE4Qjs7SUFFOUIsOENBQTJEOzs7OztJQUMzRCw2Q0FBa0Q7O0lBMnFCbEQsa0RBQThDOztJQUM5QyxxREFBb0Q7O0lBQ3BELGlEQUE0Qzs7Ozs7SUExcUIxQywrQkFBdUI7Ozs7O0lBQ3ZCLHdDQUFvRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyTGlzdFR5cGUgfSBmcm9tICcuL2hkLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1JdGVtLCBGb3JtTGlzdFR5cGUgfSBmcm9tICcuLi9oZC1mb3JtL2hkLWZvcm0uc2VydmljZSc7XG5pbXBvcnQge1xuICBnZXRDYXNjYWRlck1lbnVDbGFzc05hbWUsXG4gIGdldENhc2NhZGVyTWVudVN0eWxlLFxuICBnZXRDYXNjYWRlclNob3dTZWFyY2gsXG59IGZyb20gJy4uL3V0aWxzL2Nhc2NhZGVyLnV0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZy16b3Jyby1hbnRkJztcbmltcG9ydCB7XG4gIEhEX0ZJTFRFUl9ERUZBVUxUX1NDSEVNRV9OQU1FLFxuICBIRF9GSUxURVJfU0NIRU1FX1NUT1JFLFxuICBIZEZpbHRlclNjaGVtZSxcbiAgSGRGaWx0ZXJTY2hlbWVTdG9yZVxufSBmcm9tICcuL2hkLWZpbHRlci1zY2hlbWUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGQtZmlsdGVyLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGRGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBmaWx0ZXJMaXN0OiBBcnJheTxGaWx0ZXI+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
@@ -21,14 +21,14 @@ export var statusToColor = {
21
21
  'forTransfer', 'forWholesale', 'outTransit', 'unconfirmedPrice', 'reSubmitted', 'submit',
22
22
  'firstReview', 'Locked', 'beingUsed', 'transferLock', 'agvTransferLock', 'suspend',
23
23
  'collected', 'merged', 'planCared', 'toBeConfirm', 'toBePaid', 'UNRECEIVED',
24
- '开票中', '红冲开票中', '待生效', '对账中', '可付款', '可对账',
24
+ '开票中', '红冲开票中', '待生效', '可付款', '可对账',
25
25
  ],
26
26
  // 灰色:初始 / 未开始 / 未提交 / 线下停用 / 未读未打印
27
27
  '#9FA4A2': [
28
28
  'initial', 'INITIAL', 'INIT', 'uncommitted', 'OFF_LINE', 'UN_PRINTED', 'unpublish', 'pastpublish',
29
29
  'TO_COMMIT', 'unpublished', 'UNPUBLISHED', '未审核', 'returned', 'saved', 'SAVED', 'unaudited',
30
30
  'UN_AUDIT', 'unlock', 'free', 'unKnow', 'noSign', 'NOT_INVOICED', 'notConfirm', 'unshipped',
31
- 'unPlanCar', 'UNREAD', 'UNSEND', '未提交', '未确认', '已保存', '未对账', '未登记', '未付款',
31
+ 'unPlanCar', 'UNREAD', 'UNSEND', '未提交', '未确认', '已保存', '未对账', '未开票', '未收款', '未登记', '未付款',
32
32
  ],
33
33
  // 红色:删除 / 作废 / 拒绝 / 失效 / 禁用
34
34
  '#F5222D': [
@@ -37,7 +37,7 @@ export var statusToColor = {
37
37
  '', 'canceled', 'cancelled', 'BLANK_OUT', 'complaintRejected', 'prepareRejected',
38
38
  'returnedBeforeAudit', 'RETURNED_BEFORE_AUDIT', 'returnedBeforeConfirm', 'handleReturned',
39
39
  'TAKE_DOWN', 'expired', 'paidFailed', 'submitFailed', 'exception',
40
- '已作废', '已删除', '已失效',
40
+ '已作废', '已删除', '已失效', '发票红冲',
41
41
  ],
42
42
  // 蓝色:已审核 / 提交后流转 / 处理中
43
43
  '#3B77E3': [
@@ -60,7 +60,7 @@ export var statusToColor = {
60
60
  '#F05B24': [
61
61
  'partialReceived', 'partDelete', 'tender', 'MODIFIED_AFTER_PRINTED', '部分付款', '部分收款',
62
62
  'partPublished', 'partOffered', 'partInvoiced', 'partStatemented', '部分核销', 'willExpired',
63
- 'supplierConfirmed',
63
+ 'supplierConfirmed', '对账中',
64
64
  ],
65
65
  };
66
66
  var HdStatusService = /** @class */ (function () {
@@ -77,4 +77,4 @@ var HdStatusService = /** @class */ (function () {
77
77
  return HdStatusService;
78
78
  }());
79
79
  export { HdStatusService };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtc3RhdHVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mYW50YXN5LW5nem9ycm8vIiwic291cmNlcyI6WyJoZC1zdGF0dXMvaGQtc3RhdHVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFTM0MsTUFBTSxLQUFPLGFBQWEsR0FBRzs7SUFFM0IsU0FBUyxFQUFFO1FBQ1QsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUN6RixrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXO1FBQzFGLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsV0FBVztRQUMxRixhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsUUFBUTtRQUN4RixhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsU0FBUztRQUNsRixXQUFXLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVk7UUFDM0UsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0tBQzNDOztJQUVELFNBQVMsRUFBRTtRQUNULFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhO1FBQ2pHLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXO1FBQzNGLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxXQUFXO1FBQzNGLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztLQUMxRTs7SUFFRCxTQUFTLEVBQUU7UUFDVCxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRixJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDM0YsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQjtRQUNoRixxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0I7UUFDekYsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFdBQVc7UUFDakUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0tBQ3BCOztJQUVELFNBQVMsRUFBRTtRQUNULFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVO1FBQzVGLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0I7UUFDdkYsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVTtRQUM1RSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtLQUNyQzs7SUFFRCxTQUFTLEVBQUU7UUFDVCxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU87UUFDN0YsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRO1FBQzVGLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVO1FBQzdFLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNO1FBQ3JGLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsYUFBYTtRQUNwRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1FBQ3BFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztLQUNwQjs7SUFFRCxTQUFTLEVBQUU7UUFDVCxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxNQUFNO1FBQ25GLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxhQUFhO1FBQ3hGLG1CQUFtQjtLQUNwQjtDQUNGO0FBRUQ7SUFJRTtJQUNBLENBQUM7O2dCQUxGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7OzBCQS9ERDtDQW1FQyxBQU5ELElBTUM7U0FIWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIOeKtuaAgeeggSDihpIg6aKc6Imy77yI5p2l5rqQ77yac3VuYW4tc2VydmVyIOS4muWKoSAqU3RhdGUvKlN0YXR1cyDmnprkuL7lhajph4/ljrvph43vvIlcbiAqIOW3suaOkumZpO+8mumTtuihjOaUr+S7mCAvIEFHViAvIEhUVFAgU3RhdHVzQ29kZVxuICog6aKc6Imy6K+t5LmJ77yaXG4gKiDpu4Qt6L+H56iL5LitL+S4remXtOaAge+8m+eBsC3liJ3lp4vmnKrlvIDlp4sv57q/5LiL5YGc55So57G777yb57qiLeS9nOW6n+aLkue7neWkseaViO+8m1xuICog6JOdLeWuoeaguOa1gei9rOS4re+8m+e7vy3lrozmiJDlkK/nlKjnlJ/mlYjvvJvmqZkt6YOo5YiG5a6M5oiQL+mihOitplxuICovXG5leHBvcnQgY29uc3Qgc3RhdHVzVG9Db2xvciA9IHtcbiAgLy8g6buE6Imy77ya6L+H56iL5LitIC8g5Lit6Ze05oCBIC8g5b6F5aSE55CG5Yqo5L2cXG4gICcjRkFCMTNCJzogW1xuICAgICdwYXJ0c2hpcHBlZCcsICdwYXJ0U2hpcHBlZCcsICdjb21taXR0ZWQnLCAnQ09NTUlUVEVEJywgJ3BhcnRWYWxpZCcsICdjb25maXJtJywgJ3BpY2tpbmcnLFxuICAgICdwcmVwYXJlU3VibWl0dGVkJywgJ3ByZXBhcmVDb25maXJtZWQnLCAncmVjZWl2aW5nJywgJ3NoaXBwaW5nJywgJ2RlbGl2ZXJpbmcnLCAnYXBwcm92aW5nJyxcbiAgICAndGVuZGVyaW5nJywgJ2ZvclBpY2snLCAnZm9yUGlja3VwJywgJ2Zvck1vdmUnLCAnZm9yTG9zcycsICdmb3JNYWNoaW5pbmdUYXNrJywgJ2ZvclJldHVybicsXG4gICAgJ2ZvclRyYW5zZmVyJywgJ2Zvcldob2xlc2FsZScsICdvdXRUcmFuc2l0JywgJ3VuY29uZmlybWVkUHJpY2UnLCAncmVTdWJtaXR0ZWQnLCAnc3VibWl0JyxcbiAgICAnZmlyc3RSZXZpZXcnLCAnTG9ja2VkJywgJ2JlaW5nVXNlZCcsICd0cmFuc2ZlckxvY2snLCAnYWd2VHJhbnNmZXJMb2NrJywgJ3N1c3BlbmQnLFxuICAgICdjb2xsZWN0ZWQnLCAnbWVyZ2VkJywgJ3BsYW5DYXJlZCcsICd0b0JlQ29uZmlybScsICd0b0JlUGFpZCcsICdVTlJFQ0VJVkVEJyxcbiAgICAn5byA56Wo5LitJywgJ+e6ouWGsuW8gOelqOS4rScsICflvoXnlJ/mlYgnLCAn5a+56LSm5LitJywgJ+WPr+S7mOasvicsICflj6/lr7notKYnLFxuICBdLFxuICAvLyDngbDoibLvvJrliJ3lp4sgLyDmnKrlvIDlp4sgLyDmnKrmj5DkuqQgLyDnur/kuIvlgZznlKggLyDmnKror7vmnKrmiZPljbBcbiAgJyM5RkE0QTInOiBbXG4gICAgJ2luaXRpYWwnLCAnSU5JVElBTCcsICdJTklUJywgJ3VuY29tbWl0dGVkJywgJ09GRl9MSU5FJywgJ1VOX1BSSU5URUQnLCAndW5wdWJsaXNoJywgJ3Bhc3RwdWJsaXNoJyxcbiAgICAnVE9fQ09NTUlUJywgJ3VucHVibGlzaGVkJywgJ1VOUFVCTElTSEVEJywgJ+acquWuoeaguCcsICdyZXR1cm5lZCcsICdzYXZlZCcsICdTQVZFRCcsICd1bmF1ZGl0ZWQnLFxuICAgICdVTl9BVURJVCcsICd1bmxvY2snLCAnZnJlZScsICd1bktub3cnLCAnbm9TaWduJywgJ05PVF9JTlZPSUNFRCcsICdub3RDb25maXJtJywgJ3Vuc2hpcHBlZCcsXG4gICAgJ3VuUGxhbkNhcicsICdVTlJFQUQnLCAnVU5TRU5EJywgJ+acquaPkOS6pCcsICfmnKrnoa7orqQnLCAn5bey5L+d5a2YJywgJ+acquWvuei0picsICfmnKrnmbvorrAnLCAn5pyq5LuY5qy+JyxcbiAgXSxcbiAgLy8g57qi6Imy77ya5Yig6ZmkIC8g5L2c5bqfIC8g5ouS57udIC8g5aSx5pWIIC8g56aB55SoXG4gICcjRjUyMjJEJzogW1xuICAgICdkZWxldGUnLCAnZGVsZXRlZCcsICdERUxFVEVEJywgJ2Fib3J0JywgJ0FCT1JURUQnLCAnYWJvcnRlZCcsICdyZWplY3RlZCcsICdSRUpFQ1RFRCcsXG4gICAgJ+WBnOeUqCcsICfnpoHnlKgnLCAn5bey5YGc55SoJywgJ3VucGlja2VkJywgJ0FVRElUX1JFSkVDVCcsICdpbnZhbGlkJywgJ0lOVkFMSUQnLCAnZGlzYWJsZWQnLCAnRElTQUJMRUQnLFxuICAgICcnLCAnY2FuY2VsZWQnLCAnY2FuY2VsbGVkJywgJ0JMQU5LX09VVCcsICdjb21wbGFpbnRSZWplY3RlZCcsICdwcmVwYXJlUmVqZWN0ZWQnLFxuICAgICdyZXR1cm5lZEJlZm9yZUF1ZGl0JywgJ1JFVFVSTkVEX0JFRk9SRV9BVURJVCcsICdyZXR1cm5lZEJlZm9yZUNvbmZpcm0nLCAnaGFuZGxlUmV0dXJuZWQnLFxuICAgICdUQUtFX0RPV04nLCAnZXhwaXJlZCcsICdwYWlkRmFpbGVkJywgJ3N1Ym1pdEZhaWxlZCcsICdleGNlcHRpb24nLFxuICAgICflt7LkvZzlup8nLCAn5bey5Yig6ZmkJywgJ+W3suWkseaViCcsXG4gIF0sXG4gIC8vIOiTneiJsu+8muW3suWuoeaguCAvIOaPkOS6pOWQjua1gei9rCAvIOWkhOeQhuS4rVxuICAnIzNCNzdFMyc6IFtcbiAgICAnYXVkaXRlZCcsICdhZGp1c3RlZCcsICdpbnZvaWNlZCcsICdJTlZPSUNFRCcsICdhdWRpdCcsICdzdWJtaXR0ZWQnLCAnU1VCTUlUVEVEJywgJ1RPX0FVRElUJyxcbiAgICAn5bey5a6h5qC4JywgJ+WkhOeQhuS4rScsICdwcm9jZXNzaW5nJywgJ2ZpcnN0UmV2aWV3ZWQnLCAnYXdhaXRpbmdfZWZmZWN0aXZlJywgJ0FXQUlUSU5HX0VGRkVDVElWRScsXG4gICAgJ2NoZWNraW5nJywgJ3Jldmlld2VkJywgJ3J1bm5pbmcnLCAnU0VOVCcsICd1cGxvYWRlZCcsICdzbmFwcGVkJywgJ2hhbmRsaW5nJyxcbiAgICAn5bey5o+Q5LqkJywgJ+W3suWIneWuoScsICflt7LlpI3lrqEnLCAn5bey5YiG6YWNJywgJ+W3sueUn+aIkOi0ueeUqOWNlScsXG4gIF0sXG4gIC8vIOe7v+iJsu+8muWujOaIkCAvIOaIkOWKnyAvIOWQr+eUqCAvIOeUn+aViFxuICAnIzIwQjk1RCc6IFtcbiAgICAnc2hpcHBlZCcsICdTSElQUEVEJywgJ3JlY2VpdmVkJywgJ1JFQ0VJVkVEJywgJ2NoZWNrZWQnLCAndXNpbmcnLCAnVVNJTkcnLCAncmV2ZXJzZScsICd2YWxpZCcsXG4gICAgJ2FwcHJvdmVkJywgJ09OX0xJTkUnLCAnZmluaXNoZWQnLCAnRklOSVNIRUQnLCAnZmluaXNoJywgJ29wZW5lZCcsICdQUklOVEVEJywgJ+WQr+eUqCcsICdwaWNrZWQnLFxuICAgICdwdWJsaXNoZWQnLCAnUFVCTElTSEVEJywgJ0FVRElURUQnLCAn5bey5pS256WoJywgJ+S7mOasvuWujOaIkCcsICfmlLbmrL7lrozmiJAnLCAn5bey5pS25qy+JywgJ2FjY2VwdGVkJyxcbiAgICAnb2ZmZXJlZCcsICdjb25maXJtZWQnLCAnZWZmZWN0aXZlJywgJ0VGRkVDVElWRScsICflt7Llj5HluIMnLCAncGFpZCcsICdzdWNjZXNzZnVsJywgJ1JFQUQnLFxuICAgICdzaWduZWQnLCAnT05fU0FMRScsICdlbmFibGVkJywgJ2VudHJ1Y2tlZCcsICdub3JtYWwnLCAnc3RhdGVtZW50ZWQnLFxuICAgICflt7Lku5jmrL4nLCAn5bey5qC46ZSAJywgJ+W3suW8gOelqCcsICflt7LlrozmiJAnLCAn5bey56Gu6K6kJywgJ+W3sue6ouWGsicsICflt7Lnu5PmnZ8nLCAn5bey5Y+R6LSnJywgJ+W3suaUtui0pycsICfnlJ/mlYjkuK0nLFxuICAgICflt7Llr7notKYnLCAn5bey55m76K6wJywgJ+W3suWkjeaguCcsXG4gIF0sXG4gIC8vIOapmeiJsu+8mumDqOWIhuWujOaIkCAvIOaJk+WNsOWQjuS/ruaUuSAvIOS4tOacn+mihOitplxuICAnI0YwNUIyNCc6IFtcbiAgICAncGFydGlhbFJlY2VpdmVkJywgJ3BhcnREZWxldGUnLCAndGVuZGVyJywgJ01PRElGSUVEX0FGVEVSX1BSSU5URUQnLCAn6YOo5YiG5LuY5qy+JywgJ+mDqOWIhuaUtuasvicsXG4gICAgJ3BhcnRQdWJsaXNoZWQnLCAncGFydE9mZmVyZWQnLCAncGFydEludm9pY2VkJywgJ3BhcnRTdGF0ZW1lbnRlZCcsICfpg6jliIbmoLjplIAnLCAnd2lsbEV4cGlyZWQnLFxuICAgICdzdXBwbGllckNvbmZpcm1lZCcsXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZFN0YXR1c1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxufVxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtc3RhdHVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mYW50YXN5LW5nem9ycm8vIiwic291cmNlcyI6WyJoZC1zdGF0dXMvaGQtc3RhdHVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFTM0MsTUFBTSxLQUFPLGFBQWEsR0FBRzs7SUFFM0IsU0FBUyxFQUFFO1FBQ1QsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUN6RixrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXO1FBQzFGLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsV0FBVztRQUMxRixhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsUUFBUTtRQUN4RixhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsU0FBUztRQUNsRixXQUFXLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVk7UUFDM0UsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7S0FDcEM7O0lBRUQsU0FBUyxFQUFFO1FBQ1QsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWE7UUFDakcsV0FBVyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVc7UUFDM0YsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVc7UUFDM0YsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7S0FDeEY7O0lBRUQsU0FBUyxFQUFFO1FBQ1QsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckYsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQzNGLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUI7UUFDaEYscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCO1FBQ3pGLFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXO1FBQ2pFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU07S0FDNUI7O0lBRUQsU0FBUyxFQUFFO1FBQ1QsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVU7UUFDNUYsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQjtRQUN2RixVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQzVFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO0tBQ3JDOztJQUVELFNBQVMsRUFBRTtRQUNULFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTztRQUM3RixVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVE7UUFDNUYsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVU7UUFDN0UsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU07UUFDckYsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxhQUFhO1FBQ3BFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7UUFDcEUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0tBQ3BCOztJQUVELFNBQVMsRUFBRTtRQUNULGlCQUFpQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU07UUFDbkYsZUFBZSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGFBQWE7UUFDeEYsbUJBQW1CLEVBQUUsS0FBSztLQUMzQjtDQUNGO0FBRUQ7SUFJRTtJQUNBLENBQUM7O2dCQUxGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7OzBCQS9ERDtDQW1FQyxBQU5ELElBTUM7U0FIWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIOeKtuaAgeeggSDihpIg6aKc6Imy77yI5p2l5rqQ77yac3VuYW4tc2VydmVyIOS4muWKoSAqU3RhdGUvKlN0YXR1cyDmnprkuL7lhajph4/ljrvph43vvIlcbiAqIOW3suaOkumZpO+8mumTtuihjOaUr+S7mCAvIEFHViAvIEhUVFAgU3RhdHVzQ29kZVxuICog6aKc6Imy6K+t5LmJ77yaXG4gKiDpu4Qt6L+H56iL5LitL+S4remXtOaAge+8m+eBsC3liJ3lp4vmnKrlvIDlp4sv57q/5LiL5YGc55So57G777yb57qiLeS9nOW6n+aLkue7neWkseaViO+8m1xuICog6JOdLeWuoeaguOa1gei9rOS4re+8m+e7vy3lrozmiJDlkK/nlKjnlJ/mlYjvvJvmqZkt6YOo5YiG5a6M5oiQL+mihOitplxuICovXG5leHBvcnQgY29uc3Qgc3RhdHVzVG9Db2xvciA9IHtcbiAgLy8g6buE6Imy77ya6L+H56iL5LitIC8g5Lit6Ze05oCBIC8g5b6F5aSE55CG5Yqo5L2cXG4gICcjRkFCMTNCJzogW1xuICAgICdwYXJ0c2hpcHBlZCcsICdwYXJ0U2hpcHBlZCcsICdjb21taXR0ZWQnLCAnQ09NTUlUVEVEJywgJ3BhcnRWYWxpZCcsICdjb25maXJtJywgJ3BpY2tpbmcnLFxuICAgICdwcmVwYXJlU3VibWl0dGVkJywgJ3ByZXBhcmVDb25maXJtZWQnLCAncmVjZWl2aW5nJywgJ3NoaXBwaW5nJywgJ2RlbGl2ZXJpbmcnLCAnYXBwcm92aW5nJyxcbiAgICAndGVuZGVyaW5nJywgJ2ZvclBpY2snLCAnZm9yUGlja3VwJywgJ2Zvck1vdmUnLCAnZm9yTG9zcycsICdmb3JNYWNoaW5pbmdUYXNrJywgJ2ZvclJldHVybicsXG4gICAgJ2ZvclRyYW5zZmVyJywgJ2Zvcldob2xlc2FsZScsICdvdXRUcmFuc2l0JywgJ3VuY29uZmlybWVkUHJpY2UnLCAncmVTdWJtaXR0ZWQnLCAnc3VibWl0JyxcbiAgICAnZmlyc3RSZXZpZXcnLCAnTG9ja2VkJywgJ2JlaW5nVXNlZCcsICd0cmFuc2ZlckxvY2snLCAnYWd2VHJhbnNmZXJMb2NrJywgJ3N1c3BlbmQnLFxuICAgICdjb2xsZWN0ZWQnLCAnbWVyZ2VkJywgJ3BsYW5DYXJlZCcsICd0b0JlQ29uZmlybScsICd0b0JlUGFpZCcsICdVTlJFQ0VJVkVEJyxcbiAgICAn5byA56Wo5LitJywgJ+e6ouWGsuW8gOelqOS4rScsICflvoXnlJ/mlYgnLCAn5Y+v5LuY5qy+JywgJ+WPr+Wvuei0picsXG4gIF0sXG4gIC8vIOeBsOiJsu+8muWIneWniyAvIOacquW8gOWniyAvIOacquaPkOS6pCAvIOe6v+S4i+WBnOeUqCAvIOacquivu+acquaJk+WNsFxuICAnIzlGQTRBMic6IFtcbiAgICAnaW5pdGlhbCcsICdJTklUSUFMJywgJ0lOSVQnLCAndW5jb21taXR0ZWQnLCAnT0ZGX0xJTkUnLCAnVU5fUFJJTlRFRCcsICd1bnB1Ymxpc2gnLCAncGFzdHB1Ymxpc2gnLFxuICAgICdUT19DT01NSVQnLCAndW5wdWJsaXNoZWQnLCAnVU5QVUJMSVNIRUQnLCAn5pyq5a6h5qC4JywgJ3JldHVybmVkJywgJ3NhdmVkJywgJ1NBVkVEJywgJ3VuYXVkaXRlZCcsXG4gICAgJ1VOX0FVRElUJywgJ3VubG9jaycsICdmcmVlJywgJ3VuS25vdycsICdub1NpZ24nLCAnTk9UX0lOVk9JQ0VEJywgJ25vdENvbmZpcm0nLCAndW5zaGlwcGVkJyxcbiAgICAndW5QbGFuQ2FyJywgJ1VOUkVBRCcsICdVTlNFTkQnLCAn5pyq5o+Q5LqkJywgJ+acquehruiupCcsICflt7Lkv53lrZgnLCAn5pyq5a+56LSmJywgJ+acquW8gOelqCcsICfmnKrmlLbmrL4nLCAn5pyq55m76K6wJywgJ+acquS7mOasvicsXG4gIF0sXG4gIC8vIOe6ouiJsu+8muWIoOmZpCAvIOS9nOW6nyAvIOaLkue7nSAvIOWkseaViCAvIOemgeeUqFxuICAnI0Y1MjIyRCc6IFtcbiAgICAnZGVsZXRlJywgJ2RlbGV0ZWQnLCAnREVMRVRFRCcsICdhYm9ydCcsICdBQk9SVEVEJywgJ2Fib3J0ZWQnLCAncmVqZWN0ZWQnLCAnUkVKRUNURUQnLFxuICAgICflgZznlKgnLCAn56aB55SoJywgJ+W3suWBnOeUqCcsICd1bnBpY2tlZCcsICdBVURJVF9SRUpFQ1QnLCAnaW52YWxpZCcsICdJTlZBTElEJywgJ2Rpc2FibGVkJywgJ0RJU0FCTEVEJyxcbiAgICAnJywgJ2NhbmNlbGVkJywgJ2NhbmNlbGxlZCcsICdCTEFOS19PVVQnLCAnY29tcGxhaW50UmVqZWN0ZWQnLCAncHJlcGFyZVJlamVjdGVkJyxcbiAgICAncmV0dXJuZWRCZWZvcmVBdWRpdCcsICdSRVRVUk5FRF9CRUZPUkVfQVVESVQnLCAncmV0dXJuZWRCZWZvcmVDb25maXJtJywgJ2hhbmRsZVJldHVybmVkJyxcbiAgICAnVEFLRV9ET1dOJywgJ2V4cGlyZWQnLCAncGFpZEZhaWxlZCcsICdzdWJtaXRGYWlsZWQnLCAnZXhjZXB0aW9uJyxcbiAgICAn5bey5L2c5bqfJywgJ+W3suWIoOmZpCcsICflt7LlpLHmlYgnLCAn5Y+R56Wo57qi5YayJyxcbiAgXSxcbiAgLy8g6JOd6Imy77ya5bey5a6h5qC4IC8g5o+Q5Lqk5ZCO5rWB6L2sIC8g5aSE55CG5LitXG4gICcjM0I3N0UzJzogW1xuICAgICdhdWRpdGVkJywgJ2FkanVzdGVkJywgJ2ludm9pY2VkJywgJ0lOVk9JQ0VEJywgJ2F1ZGl0JywgJ3N1Ym1pdHRlZCcsICdTVUJNSVRURUQnLCAnVE9fQVVESVQnLFxuICAgICflt7LlrqHmoLgnLCAn5aSE55CG5LitJywgJ3Byb2Nlc3NpbmcnLCAnZmlyc3RSZXZpZXdlZCcsICdhd2FpdGluZ19lZmZlY3RpdmUnLCAnQVdBSVRJTkdfRUZGRUNUSVZFJyxcbiAgICAnY2hlY2tpbmcnLCAncmV2aWV3ZWQnLCAncnVubmluZycsICdTRU5UJywgJ3VwbG9hZGVkJywgJ3NuYXBwZWQnLCAnaGFuZGxpbmcnLFxuICAgICflt7Lmj5DkuqQnLCAn5bey5Yid5a6hJywgJ+W3suWkjeWuoScsICflt7LliIbphY0nLCAn5bey55Sf5oiQ6LS555So5Y2VJyxcbiAgXSxcbiAgLy8g57u/6Imy77ya5a6M5oiQIC8g5oiQ5YqfIC8g5ZCv55SoIC8g55Sf5pWIXG4gICcjMjBCOTVEJzogW1xuICAgICdzaGlwcGVkJywgJ1NISVBQRUQnLCAncmVjZWl2ZWQnLCAnUkVDRUlWRUQnLCAnY2hlY2tlZCcsICd1c2luZycsICdVU0lORycsICdyZXZlcnNlJywgJ3ZhbGlkJyxcbiAgICAnYXBwcm92ZWQnLCAnT05fTElORScsICdmaW5pc2hlZCcsICdGSU5JU0hFRCcsICdmaW5pc2gnLCAnb3BlbmVkJywgJ1BSSU5URUQnLCAn5ZCv55SoJywgJ3BpY2tlZCcsXG4gICAgJ3B1Ymxpc2hlZCcsICdQVUJMSVNIRUQnLCAnQVVESVRFRCcsICflt7LmlLbnpagnLCAn5LuY5qy+5a6M5oiQJywgJ+aUtuasvuWujOaIkCcsICflt7LmlLbmrL4nLCAnYWNjZXB0ZWQnLFxuICAgICdvZmZlcmVkJywgJ2NvbmZpcm1lZCcsICdlZmZlY3RpdmUnLCAnRUZGRUNUSVZFJywgJ+W3suWPkeW4gycsICdwYWlkJywgJ3N1Y2Nlc3NmdWwnLCAnUkVBRCcsXG4gICAgJ3NpZ25lZCcsICdPTl9TQUxFJywgJ2VuYWJsZWQnLCAnZW50cnVja2VkJywgJ25vcm1hbCcsICdzdGF0ZW1lbnRlZCcsXG4gICAgJ+W3suS7mOasvicsICflt7LmoLjplIAnLCAn5bey5byA56WoJywgJ+W3suWujOaIkCcsICflt7Lnoa7orqQnLCAn5bey57qi5YayJywgJ+W3sue7k+adnycsICflt7Llj5HotKcnLCAn5bey5pS26LSnJywgJ+eUn+aViOS4rScsXG4gICAgJ+W3suWvuei0picsICflt7LnmbvorrAnLCAn5bey5aSN5qC4JyxcbiAgXSxcbiAgLy8g5qmZ6Imy77ya6YOo5YiG5a6M5oiQIC8g5omT5Y2w5ZCO5L+u5pS5IC8g5Li05pyf6aKE6K2mXG4gICcjRjA1QjI0JzogW1xuICAgICdwYXJ0aWFsUmVjZWl2ZWQnLCAncGFydERlbGV0ZScsICd0ZW5kZXInLCAnTU9ESUZJRURfQUZURVJfUFJJTlRFRCcsICfpg6jliIbku5jmrL4nLCAn6YOo5YiG5pS25qy+JyxcbiAgICAncGFydFB1Ymxpc2hlZCcsICdwYXJ0T2ZmZXJlZCcsICdwYXJ0SW52b2ljZWQnLCAncGFydFN0YXRlbWVudGVkJywgJ+mDqOWIhuaguOmUgCcsICd3aWxsRXhwaXJlZCcsXG4gICAgJ3N1cHBsaWVyQ29uZmlybWVkJywgJ+Wvuei0puS4rScsXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZFN0YXR1c1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxufVxuIl19