@infrab4a/connect-angular 4.5.3-beta.5 → 4.5.3-beta.6

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.
@@ -136,14 +136,14 @@ export class CatalogService {
136
136
  async findCatalogAndSortByMostRevelant(mostRelevants, productIds, options, limits) {
137
137
  console.log('mostRelevant', mostRelevants);
138
138
  console.log('productIds', productIds);
139
- const { offset } = limits;
140
- if (offset === 0) {
141
- limits.limit -= mostRelevants.length;
142
- }
143
- if (offset > 0) {
144
- limits.offset -= mostRelevants.length;
145
- }
146
- console.log('limits', limits);
139
+ // const { offset } = limits
140
+ // if (offset === 0) {
141
+ // limits.limit -= mostRelevants.length
142
+ // }
143
+ // if (offset > 0) {
144
+ // limits.offset -= mostRelevants.length
145
+ // }
146
+ // console.log('limits', limits)
147
147
  const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))];
148
148
  console.log('mostRelevantProductsIds', mostRelevantProductsIds);
149
149
  const totalResult = await this.productRepository.findCatalog({
@@ -152,6 +152,7 @@ export class CatalogService {
152
152
  id: { operator: Where.IN, value: mostRelevantProductsIds },
153
153
  ...this.buildFilterQuery(options?.filters || {}),
154
154
  },
155
+ orderBy: this.buildSortQuery('news'),
155
156
  options: {
156
157
  minimal: ['price'],
157
158
  maximum: ['price'],
@@ -248,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
248
249
  type: Inject,
249
250
  args: [DEFAULT_SHOP]
250
251
  }] }, { type: i1.ProductsIndex }]; } });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBSXBCLGFBQWEsRUFLYix3QkFBd0IsRUFDeEIsR0FBRyxFQUNILEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2dELGlCQUFvQyxFQUVqRSxrQ0FBc0UsRUFDeEMsa0JBQXNDLEVBQ3hDLHdCQUFrRCxFQUN4RCxJQUFXLEVBQ2pDLFlBQTJCO1FBTkUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUVqRSx1Q0FBa0MsR0FBbEMsa0NBQWtDLENBQW9DO1FBQ3hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN4RCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBVHRDLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtRQWlQN0MscUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsRUFB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QUcsWUFBWSxDQUFDLENBQUE7WUFFOUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7OzJHQWhQVSxjQUFjLGtCQUlmLG1CQUFtQixhQUNuQixvQ0FBb0MsYUFFcEMsb0JBQW9CLGFBQ3BCLGtCQUFrQixhQUNsQixZQUFZOytHQVRYLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBS04sTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLG9DQUFvQzs7MEJBRTNDLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBGaW5kUmVwb3NpdG9yeVBhcmFtcyxcclxuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcclxuICBQcm9kdWN0LFxyXG4gIFByb2R1Y3RHZW5kZXIsXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdHNJbmRleCxcclxuICBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LFxyXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsXHJcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXHJcbiAgUmVwb3NpdG9yeU9yZGVyQnksXHJcbiAgUm91bmRQcm9kdWN0UHJpY2VzSGVscGVyLFxyXG4gIHNldCxcclxuICBTaG9wcyxcclxuICBXaGVyZSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgQ0FURUdPUllfU1RSVUNUVVJFLCBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi8uLi9jb25zdHMnXHJcbmltcG9ydCB7IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlciB9IGZyb20gJy4vYWRhcHRlcnMnXHJcbmltcG9ydCB7IFByb2R1Y3RTb3J0IH0gZnJvbSAnLi90eXBlcy9wcm9kdWN0LXNvcnQudHlwZSdcclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgPSB7XHJcbiAgY2x1YkRpc2NvdW50PzogbnVtYmVyW11cclxuICBicmFuZHM/OiBzdHJpbmdbXVxyXG4gIHByaWNlcz86IHsgbWluPzogbnVtYmVyOyBtYXg/OiBudW1iZXI7IHN1YnNjcmliZXJQcmljZT86IGJvb2xlYW4gfVxyXG4gIGdlbmRlcj86IFByb2R1Y3RHZW5kZXJbXVxyXG4gIHJhdGU/OiBudW1iZXJcclxuICBjdXN0b21PcHRpb25zPzogc3RyaW5nW11cclxuICB0YWdzPzogc3RyaW5nW11cclxufVxyXG5cclxudHlwZSBGZXRjaFByb2R1Y3RzT3B0aW9ucyA9IHtcclxuICBwYWdlPzogbnVtYmVyXHJcbiAgcGVyUGFnZT86IG51bWJlclxyXG4gIHNvcnQ/OiBQcm9kdWN0U29ydFxyXG4gIG1haW5HZW5kZXI/OiBQcm9kdWN0R2VuZGVyXHJcbn1cclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IHtcclxuICBjYXRlZ29yeT86IFRcclxuICBwcm9maWxlPzogc3RyaW5nW11cclxuICB0ZXJtPzogc3RyaW5nXHJcbn1cclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c1BhcmFtczxUIGV4dGVuZHMgQ2F0ZWdvcnk+ID0gRmV0Y2hQcm9kdWN0c09wdGlvbnMgJlxyXG4gIChcclxuICAgIHwge1xyXG4gICAgICAgIGNhdGVnb3J5OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsnY2F0ZWdvcnknXVxyXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgcHJvZmlsZTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Byb2ZpbGUnXVxyXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXHJcbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gICAgICB9XHJcbiAgKVxyXG5cclxudHlwZSBGZXRjaFByb2R1Y3RzUmVzcG9uc2UgPSB7XHJcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cclxuICBwYWdlczogbnVtYmVyXHJcbiAgcHJpY2VzOiB7XHJcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxyXG4gICAgc3Vic2NyaWJlclByaWNlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9XHJcbiAgfVxyXG4gIGJyYW5kcz86IHN0cmluZ1tdXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENhdGFsb2dTZXJ2aWNlPFQgZXh0ZW5kcyBDYXRlZ29yeSA9IENhdGVnb3J5PiB7XHJcbiAgcHJpdmF0ZSBwcm9kdWN0c0J5VGVybTogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge31cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeScpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnk6IFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChDQVRFR09SWV9TVFJVQ1RVUkUpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyOiBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIsXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdEluZGV4OiBQcm9kdWN0c0luZGV4LFxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgZmV0Y2hQcm9kdWN0cyhvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+KTogUHJvbWlzZTxGZXRjaFByb2R1Y3RzUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGxpbWl0cyA9IHRoaXMuYnVpbGRMaW1pdFF1ZXJ5KG9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LmN1c3RvbU9wdGlvbnMpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIGN1c3RvbU9wdGlvbnMgd2hlbiBwcm9maWxlIGlzIGdpdmVuYClcclxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy50YWdzKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCB0YWdzIHdoZW4gcHJvZmlsZSBpcyBnaXZlbmApXHJcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8uY3VzdG9tT3B0aW9ucylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHRlcm0gaXMgZ2l2ZW5gKVxyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nKG9wdGlvbnMsIGxpbWl0cykudGhlbigoeyBkYXRhLCBjb3VudDogdG90YWwsIG1heGltdW0sIG1pbmltYWwsIGRpc3RpbmN0IH0pID0+ICh7XHJcbiAgICAgIHByb2R1Y3RzOiB7IGRhdGE6IGRhdGEubWFwKChwcm9kdWN0KSA9PiBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKHByb2R1Y3QpKSwgdG90YWwgfSxcclxuICAgICAgcGFnZXM6IE1hdGguY2VpbCh0b3RhbCAvIGxpbWl0cy5saW1pdCksXHJcbiAgICAgIHByaWNlczoge1xyXG4gICAgICAgIHByaWNlOiB7IG1pbjogK21pbmltYWw/LnByaWNlPy5wcmljZT8udG9GaXhlZCgyKSwgbWF4OiArbWF4aW11bT8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpIH0sXHJcbiAgICAgICAgc3Vic2NyaWJlclByaWNlOiB7XHJcbiAgICAgICAgICBtaW46ICttaW5pbWFsPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxyXG4gICAgICAgICAgbWF4OiArbWF4aW11bT8ucHJpY2U/LnN1YnNjcmliZXJQcmljZT8udG9GaXhlZCgyKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBicmFuZHM6IGRpc3RpbmN0Py5icmFuZCxcclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkQ3VzdG9tZXJUb1N0b2NrTm90aWZpY2F0aW9uKHNob3A6IFNob3BzLCBwcm9kdWN0SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBlbWFpbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LmFkZEN1c3RvbWVyRW1haWwoc2hvcCwgcHJvZHVjdElkLCBuYW1lLCBlbWFpbClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2coXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICAgbGltaXRzOiB7XHJcbiAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICAgIG9mZnNldD86IG51bWJlclxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpICYmIG9wdGlvbnMuc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XHJcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5maW5kQ2F0YWxvZ0lkc0J5RWxhc3RpY1NlYXJjaChvcHRpb25zLnRlcm0pXHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudEJ5VGVybShwcm9kdWN0c0lkcywgb3B0aW9ucywgbGltaXRzKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhhc0NhdGVnb3J5KG9wdGlvbnMpICYmIG9wdGlvbnMuc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XHJcbiAgICAgIGNvbnN0IHsgbW9zdFJlbGV2YW50IH0gPSBvcHRpb25zLmNhdGVnb3J5XHJcbiAgICAgIGNvbnNvbGUubG9nKCdtb3N0UmVsZXZhbnQnLCBtb3N0UmVsZXZhbnQpXHJcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeVxyXG4gICAgICAgIC5maW5kKHtcclxuICAgICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgICAgLi4uKGF3YWl0IHRoaXMuYnVpbGRNYWluRmlsdGVyKG9wdGlvbnMpKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbigocHJvZHVjdHMpID0+IHByb2R1Y3RzLmRhdGEubWFwKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkKSlcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50KG1vc3RSZWxldmFudCwgcHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXBvUGFyYW1zOiBGaW5kUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0PiA9IHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIC4uLihhd2FpdCB0aGlzLmJ1aWxkTWFpbkZpbHRlcihvcHRpb25zKSksXHJcbiAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi4ob3B0aW9ucz8uc29ydCA/IHsgb3JkZXJCeTogdGhpcy5idWlsZFNvcnRRdWVyeShvcHRpb25zPy5zb3J0KSB9IDoge30pLFxyXG4gICAgICBsaW1pdHMsXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxyXG4gICAgICAgIC4uLighdGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxyXG4gICAgICB9LFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChbJ2JpZ2dlc3QtcHJpY2UnLCAnbG93ZXN0LXByaWNlJywgJ2JpZ2dlc3QtZGlzY291bnQnLCAnYmVzdC1yYXRpbmcnXS5pbmNsdWRlcyhvcHRpb25zLnNvcnQpKVxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhyZXBvUGFyYW1zKVxyXG5cclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKFxyXG4gICAgICByZXBvUGFyYW1zLFxyXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBidWlsZE1haW5GaWx0ZXIoe1xyXG4gICAgY2F0ZWdvcnksXHJcbiAgICBwcm9maWxlLFxyXG4gICAgdGVybSxcclxuICB9OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPik6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0Pj4ge1xyXG4gICAgaWYgKGNhdGVnb3J5KSByZXR1cm4gdGhpcy5jYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIuYnVpbGRQcm9kdWN0RmlsdGVyQnlDYXRlZ29yeShjYXRlZ29yeSlcclxuICAgIGlmIChwcm9maWxlKSByZXR1cm4geyB0YWdzOiB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogcHJvZmlsZSB9IH1cclxuICAgIGlmICh0ZXJtKVxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0SW5kZXhcclxuICAgICAgICAuc2VhcmNoKHRlcm0sIDk5OSwgdGhpcy5zaG9wKVxyXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiAoeyBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBkYXRhLmhpdHMubWFwKCh7IF9zb3VyY2UgfSkgPT4gX3NvdXJjZS5pZCkgfSB9KSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQoXHJcbiAgICBtb3N0UmVsZXZhbnRzOiBzdHJpbmdbXSxcclxuICAgIHByb2R1Y3RJZHM6IHN0cmluZ1tdLFxyXG4gICAgb3B0aW9uczogT21pdDxGZXRjaFByb2R1Y3RzT3B0aW9ucywgJ3NvcnQnPiAmIHtcclxuICAgICAgdGVybT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cclxuICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gICAgfSxcclxuICAgIGxpbWl0czoge1xyXG4gICAgICBsaW1pdD86IG51bWJlclxyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcclxuICAgIH0sXHJcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xyXG4gICAgY29uc29sZS5sb2coJ21vc3RSZWxldmFudCcsIG1vc3RSZWxldmFudHMpXHJcbiAgICBjb25zb2xlLmxvZygncHJvZHVjdElkcycsIHByb2R1Y3RJZHMpXHJcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gbGltaXRzXHJcblxyXG4gICAgaWYgKG9mZnNldCA9PT0gMCkge1xyXG4gICAgICBsaW1pdHMubGltaXQgLT0gbW9zdFJlbGV2YW50cy5sZW5ndGhcclxuICAgIH1cclxuXHJcbiAgICBpZiAob2Zmc2V0ID4gMCkge1xyXG4gICAgICBsaW1pdHMub2Zmc2V0IC09IG1vc3RSZWxldmFudHMubGVuZ3RoXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygnbGltaXRzJywgbGltaXRzKVxyXG4gICAgY29uc3QgbW9zdFJlbGV2YW50UHJvZHVjdHNJZHMgPSBbLi4ubmV3IFNldChtb3N0UmVsZXZhbnRzLmNvbmNhdChwcm9kdWN0SWRzKSldXHJcbiAgICBjb25zb2xlLmxvZygnbW9zdFJlbGV2YW50UHJvZHVjdHNJZHMnLCBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcylcclxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jayddLFxyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzIH0sXHJcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXHJcbiAgICApXHJcbiAgICBjb25zb2xlLmxvZygndG90YWxSZXN1bHQnLCB0b3RhbFJlc3VsdC5jb3VudClcclxuXHJcbiAgICBjb25zdCBzdG9ja0RhdGEgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXHJcbiAgICBjb25zdCBzdG9ja091dCA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDApXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2sgPSBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcy5maWx0ZXIoKHByb2R1Y3QpID0+XHJcbiAgICAgIHN0b2NrRGF0YS5zb21lKChyZXN1bHQpID0+IHJlc3VsdC5pZCA9PSBwcm9kdWN0KSxcclxuICAgIClcclxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9ja091dCA9IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzLmZpbHRlcigocHJvZHVjdCkgPT5cclxuICAgICAgc3RvY2tPdXQuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT0gcHJvZHVjdCksXHJcbiAgICApXHJcbiAgICBjb25zdCBsaW1pdGVkUHJvZHVjdElkID0gcHJvZHVjdElkc1N0b2NrXHJcbiAgICAgIC5jb25jYXQocHJvZHVjdElkc1N0b2NrT3V0KVxyXG4gICAgICAuc2xpY2UobGltaXRzLm9mZnNldCwgbGltaXRzLm9mZnNldCArIGxpbWl0cy5saW1pdClcclxuXHJcbiAgICBjb25zdCBvcmRlcmVkSWQgPSBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcy5maWx0ZXIoKHByb2R1Y3QpID0+IGxpbWl0ZWRQcm9kdWN0SWQuaW5jbHVkZXMocHJvZHVjdCkpXHJcbiAgICBjb25zb2xlLmxvZygnb3JkZXJlZElkJywgb3JkZXJlZElkKVxyXG4gICAgY29uc3QgcHJvZHVjdFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coe1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogb3JkZXJlZElkIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhdGE6IGxpbWl0ZWRQcm9kdWN0SWQubWFwKChpZCkgPT4gcHJvZHVjdFJlc3VsdC5kYXRhLmZpbmQoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQgPT09IGlkKSkuZmlsdGVyKEJvb2xlYW4pLFxyXG4gICAgICBjb3VudDogdG90YWxSZXN1bHQuY291bnQsXHJcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXHJcbiAgICAgIG1pbmltYWw6IHRvdGFsUmVzdWx0Lm1pbmltYWwsXHJcbiAgICAgIGRpc3RpbmN0OiB0b3RhbFJlc3VsdC5kaXN0aW5jdCxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnRCeVRlcm0oXHJcbiAgICBwcm9kdWN0SWRzOiBzdHJpbmdbXSxcclxuICAgIG9wdGlvbnM6IE9taXQ8RmV0Y2hQcm9kdWN0c09wdGlvbnMsICdzb3J0Jz4gJiB7XHJcbiAgICAgIHRlcm0/OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXHJcbiAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICAgIH0sXHJcbiAgICBsaW1pdHM6IHtcclxuICAgICAgbGltaXQ/OiBudW1iZXJcclxuICAgICAgb2Zmc2V0PzogbnVtYmVyXHJcbiAgICB9LFxyXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcclxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jayddLFxyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IHByb2R1Y3RJZHMgfSxcclxuICAgICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcclxuICAgICAgICAgIG1heGltdW06IFsncHJpY2UnXSxcclxuICAgICAgICAgIGRpc3RpbmN0OiBbJ2JyYW5kJ10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcclxuICAgIClcclxuXHJcbiAgICBjb25zdCBzdG9ja0RhdGEgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXHJcbiAgICBjb25zdCBzdG9ja091dCA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDApXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2sgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gc3RvY2tEYXRhLnNvbWUoKHJlc3VsdCkgPT4gcmVzdWx0LmlkID09IHByb2R1Y3QpKVxyXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrT3V0ID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrT3V0LnNvbWUoKHJlc3VsdCkgPT4gcmVzdWx0LmlkID09IHByb2R1Y3QpKVxyXG5cclxuICAgIGNvbnN0IGxpbWl0ZWRQcm9kdWN0SWQgPSBwcm9kdWN0SWRzU3RvY2tcclxuICAgICAgLmNvbmNhdChwcm9kdWN0SWRzU3RvY2tPdXQpXHJcbiAgICAgIC5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KVxyXG5cclxuICAgIGNvbnN0IG9yZGVyZWRJZCA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBsaW1pdGVkUHJvZHVjdElkLmluY2x1ZGVzKHByb2R1Y3QpKVxyXG4gICAgY29uc3QgcHJvZHVjdFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coe1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogb3JkZXJlZElkIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhdGE6IGxpbWl0ZWRQcm9kdWN0SWQubWFwKChpZCkgPT4gcHJvZHVjdFJlc3VsdC5kYXRhLmZpbmQoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQgPT09IGlkKSkuZmlsdGVyKEJvb2xlYW4pLFxyXG4gICAgICBjb3VudDogdG90YWxSZXN1bHQuY291bnQsXHJcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXHJcbiAgICAgIG1pbmltYWw6IHRvdGFsUmVzdWx0Lm1pbmltYWwsXHJcbiAgICAgIGRpc3RpbmN0OiB0b3RhbFJlc3VsdC5kaXN0aW5jdCxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dJZHNCeUVsYXN0aWNTZWFyY2godGVybTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgaWYgKHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV0pIHJldHVybiB0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dXHJcblxyXG4gICAgcmV0dXJuICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dID0gYXdhaXQgdGhpcy5wcm9kdWN0SW5kZXhcclxuICAgICAgLnNlYXJjaCh0ZXJtLCA5OTksIHRoaXMuc2hvcClcclxuICAgICAgLnRoZW4oKHsgaGl0czogcHJvZHVjdHMgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdpdGhTdG9jayA9IHByb2R1Y3RzLmZpbHRlcigoeyBfc291cmNlIH0pID0+IF9zb3VyY2Uuc3RvY2sucXVhbnRpdHkgPiAwKVxyXG4gICAgICAgIGNvbnN0IHdpdGhPdXRTdG9jayA9IHByb2R1Y3RzLmZpbHRlcigoeyBfc291cmNlIH0pID0+IF9zb3VyY2Uuc3RvY2sucXVhbnRpdHkgPD0gMClcclxuICAgICAgICBjb25zdCBzb3J0ZWQgPSBbLi4ud2l0aFN0b2NrLCAuLi53aXRoT3V0U3RvY2tdXHJcblxyXG4gICAgICAgIHJldHVybiBbLi4ubmV3IFNldChzb3J0ZWQubWFwKCh7IF9zb3VyY2UgfSkgPT4gX3NvdXJjZS5pZCkpXVxyXG4gICAgICB9KSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGaWx0ZXJRdWVyeSA9ICh7XHJcbiAgICBjbHViRGlzY291bnQsXHJcbiAgICBicmFuZHMsXHJcbiAgICBwcmljZXMsXHJcbiAgICBnZW5kZXIsXHJcbiAgICB0YWdzLFxyXG4gICAgcmF0ZSxcclxuICAgIGN1c3RvbU9wdGlvbnMsXHJcbiAgfTogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMpOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+ID0+IHtcclxuICAgIGNvbnN0IGZpbHRlcnMgPSB7fSBhcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+XHJcblxyXG4gICAgaWYgKGNsdWJEaXNjb3VudD8ubGVuZ3RoKVxyXG4gICAgICBzZXQoZmlsdGVycywgJ3ByaWNlLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UnLCB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGNsdWJEaXNjb3VudCB9KVxyXG4gICAgaWYgKGJyYW5kcz8ubGVuZ3RoKSBmaWx0ZXJzLmJyYW5kID0geyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBicmFuZHMgfVxyXG4gICAgaWYgKGdlbmRlcj8ubGVuZ3RoKSBmaWx0ZXJzLmdlbmRlciA9IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogZ2VuZGVyIH1cclxuICAgIGlmIChwcmljZXM/Lm1pbiB8fCBwcmljZXM/Lm1heClcclxuICAgICAgc2V0KGZpbHRlcnMsIHByaWNlcy5zdWJzY3JpYmVyUHJpY2UgPyAncHJpY2Uuc3Vic2NyaWJlclByaWNlJyA6ICdwcmljZS5wcmljZScsIFtcclxuICAgICAgICAuLi4ocHJpY2VzLm1pbiA/IFt7IG9wZXJhdG9yOiBXaGVyZS5HVEUsIHZhbHVlOiBNYXRoLnJvdW5kKHByaWNlcy5taW4pIH1dIDogW10pLFxyXG4gICAgICAgIC4uLihwcmljZXMubWF4ID8gW3sgb3BlcmF0b3I6IFdoZXJlLkxURSwgdmFsdWU6IE1hdGguY2VpbChwcmljZXMubWF4KSB9XSA6IFtdKSxcclxuICAgICAgXSlcclxuICAgIGlmIChyYXRlKSBmaWx0ZXJzLnJhdGUgPSB7IG9wZXJhdG9yOiBXaGVyZS5HVEUsIHZhbHVlOiByYXRlIH1cclxuICAgIGlmICh0YWdzPy5sZW5ndGgpIGZpbHRlcnMudGFncyA9IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiB0YWdzIH1cclxuICAgIGlmIChjdXN0b21PcHRpb25zPy5sZW5ndGgpIGZpbHRlcnMuZmlsdGVycyA9IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBjdXN0b21PcHRpb25zIH1cclxuXHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFNvcnRRdWVyeSA9IChzb3J0OiBQcm9kdWN0U29ydCk6IFJlcG9zaXRvcnlPcmRlckJ5PFByb2R1Y3Q+ID0+IHtcclxuICAgIGlmICghc29ydCB8fCBzb3J0ID09PSAnbW9zdC1yZWxldmFudCcpIHJldHVybiB7fVxyXG5cclxuICAgIGlmIChzb3J0ID09PSAnYmVzdC1zZWxsZXJzJylcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBzaG9wcGluZ0NvdW50OiAnZGVzYycsXHJcbiAgICAgICAgcmF0ZTogJ2Rlc2MnLFxyXG4gICAgICAgIHN0b2NrOiAnZGVzYycsXHJcbiAgICAgICAgbmFtZTogJ2FzYycsXHJcbiAgICAgIH1cclxuICAgIGlmIChzb3J0ID09PSAnYmlnZ2VzdC1wcmljZScpIHJldHVybiB7IHN1YnNjcmliZXJQcmljZTogJ2Rlc2MnLCByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9IGFzIGFueVxyXG4gICAgaWYgKHNvcnQgPT09ICdsb3dlc3QtcHJpY2UnKSByZXR1cm4geyBzdWJzY3JpYmVyUHJpY2U6ICdhc2MnLCByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9IGFzIGFueVxyXG4gICAgaWYgKHNvcnQgPT09ICdiZXN0LXJhdGluZycpIHJldHVybiB7IHJhdGU6ICdkZXNjJywgc2hvcHBpbmdDb3VudDogJ2Rlc2MnLCBzdG9jazogJ2Rlc2MnLCBuYW1lOiAnYXNjJyB9XHJcbiAgICBpZiAoc29ydCA9PT0gJ25ld3MnKSByZXR1cm4geyBjcmVhdGVkQXQ6ICdkZXNjJyB9XHJcbiAgICBpZiAoc29ydCA9PT0gJ2JpZ2dlc3QtZGlzY291bnQnKVxyXG4gICAgICByZXR1cm4geyBzdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlOiAnZGVzYycsIHJhdGU6ICdkZXNjJywgc2hvcHBpbmdDb3VudDogJ2Rlc2MnIH0gYXMgYW55XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkTGltaXRRdWVyeSA9IChvcHRpb25zOiB7IHBhZ2U/OiBudW1iZXI7IHBlclBhZ2U/OiBudW1iZXIgfSk6IHsgbGltaXQ/OiBudW1iZXI7IG9mZnNldD86IG51bWJlciB9ID0+IHtcclxuICAgIGNvbnN0IGxpbWl0ID0gb3B0aW9ucz8ucGVyUGFnZSB8fCAyMFxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxpbWl0LFxyXG4gICAgICBvZmZzZXQ6ICgob3B0aW9ucz8ucGFnZSB8fCAxKSAtIDEpICogbGltaXQsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1Byb2ZpbGUgPSAoXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XHJcbiAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXHJcbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cclxuICB9ID0+ICdwcm9maWxlJyBpbiBvcHRpb25zXHJcblxyXG4gIHByaXZhdGUgaGFzVGVybSA9IChcclxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXHJcbiAgKTogb3B0aW9ucyBpcyBGZXRjaFByb2R1Y3RzT3B0aW9ucyAmIHtcclxuICAgIHRlcm06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cclxuICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICB9ID0+ICd0ZXJtJyBpbiBvcHRpb25zXHJcblxyXG4gIHByaXZhdGUgaGFzQ2F0ZWdvcnkgPSAoXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XHJcbiAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cclxuICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICB9ID0+ICdjYXRlZ29yeScgaW4gb3B0aW9uc1xyXG59XHJcbiJdfQ==
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBSXBCLGFBQWEsRUFLYix3QkFBd0IsRUFDeEIsR0FBRyxFQUNILEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2dELGlCQUFvQyxFQUVqRSxrQ0FBc0UsRUFDeEMsa0JBQXNDLEVBQ3hDLHdCQUFrRCxFQUN4RCxJQUFXLEVBQ2pDLFlBQTJCO1FBTkUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUVqRSx1Q0FBa0MsR0FBbEMsa0NBQWtDLENBQW9DO1FBQ3hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN4RCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBVHRDLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtRQWtQN0MscUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsRUFB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QU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7OzJHQWpQVSxjQUFjLGtCQUlmLG1CQUFtQixhQUNuQixvQ0FBb0MsYUFFcEMsb0JBQW9CLGFBQ3BCLGtCQUFrQixhQUNsQixZQUFZOytHQVRYLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBS04sTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLG9DQUFvQzs7MEJBRTNDLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBGaW5kUmVwb3NpdG9yeVBhcmFtcyxcclxuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcclxuICBQcm9kdWN0LFxyXG4gIFByb2R1Y3RHZW5kZXIsXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdHNJbmRleCxcclxuICBQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LFxyXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsXHJcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXHJcbiAgUmVwb3NpdG9yeU9yZGVyQnksXHJcbiAgUm91bmRQcm9kdWN0UHJpY2VzSGVscGVyLFxyXG4gIHNldCxcclxuICBTaG9wcyxcclxuICBXaGVyZSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgQ0FURUdPUllfU1RSVUNUVVJFLCBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi8uLi9jb25zdHMnXHJcbmltcG9ydCB7IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlciB9IGZyb20gJy4vYWRhcHRlcnMnXHJcbmltcG9ydCB7IFByb2R1Y3RTb3J0IH0gZnJvbSAnLi90eXBlcy9wcm9kdWN0LXNvcnQudHlwZSdcclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgPSB7XHJcbiAgY2x1YkRpc2NvdW50PzogbnVtYmVyW11cclxuICBicmFuZHM/OiBzdHJpbmdbXVxyXG4gIHByaWNlcz86IHsgbWluPzogbnVtYmVyOyBtYXg/OiBudW1iZXI7IHN1YnNjcmliZXJQcmljZT86IGJvb2xlYW4gfVxyXG4gIGdlbmRlcj86IFByb2R1Y3RHZW5kZXJbXVxyXG4gIHJhdGU/OiBudW1iZXJcclxuICBjdXN0b21PcHRpb25zPzogc3RyaW5nW11cclxuICB0YWdzPzogc3RyaW5nW11cclxufVxyXG5cclxudHlwZSBGZXRjaFByb2R1Y3RzT3B0aW9ucyA9IHtcclxuICBwYWdlPzogbnVtYmVyXHJcbiAgcGVyUGFnZT86IG51bWJlclxyXG4gIHNvcnQ/OiBQcm9kdWN0U29ydFxyXG4gIG1haW5HZW5kZXI/OiBQcm9kdWN0R2VuZGVyXHJcbn1cclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IHtcclxuICBjYXRlZ29yeT86IFRcclxuICBwcm9maWxlPzogc3RyaW5nW11cclxuICB0ZXJtPzogc3RyaW5nXHJcbn1cclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c1BhcmFtczxUIGV4dGVuZHMgQ2F0ZWdvcnk+ID0gRmV0Y2hQcm9kdWN0c09wdGlvbnMgJlxyXG4gIChcclxuICAgIHwge1xyXG4gICAgICAgIGNhdGVnb3J5OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsnY2F0ZWdvcnknXVxyXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgcHJvZmlsZTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Byb2ZpbGUnXVxyXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXHJcbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gICAgICB9XHJcbiAgKVxyXG5cclxudHlwZSBGZXRjaFByb2R1Y3RzUmVzcG9uc2UgPSB7XHJcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cclxuICBwYWdlczogbnVtYmVyXHJcbiAgcHJpY2VzOiB7XHJcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxyXG4gICAgc3Vic2NyaWJlclByaWNlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9XHJcbiAgfVxyXG4gIGJyYW5kcz86IHN0cmluZ1tdXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENhdGFsb2dTZXJ2aWNlPFQgZXh0ZW5kcyBDYXRlZ29yeSA9IENhdGVnb3J5PiB7XHJcbiAgcHJpdmF0ZSBwcm9kdWN0c0J5VGVybTogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge31cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnUHJvZHVjdFN0b2NrTm90aWZpY2F0aW9uUmVwb3NpdG9yeScpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnk6IFByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChDQVRFR09SWV9TVFJVQ1RVUkUpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyOiBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIsXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdEluZGV4OiBQcm9kdWN0c0luZGV4LFxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgZmV0Y2hQcm9kdWN0cyhvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+KTogUHJvbWlzZTxGZXRjaFByb2R1Y3RzUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGxpbWl0cyA9IHRoaXMuYnVpbGRMaW1pdFF1ZXJ5KG9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LmN1c3RvbU9wdGlvbnMpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIGN1c3RvbU9wdGlvbnMgd2hlbiBwcm9maWxlIGlzIGdpdmVuYClcclxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy50YWdzKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCB0YWdzIHdoZW4gcHJvZmlsZSBpcyBnaXZlbmApXHJcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8uY3VzdG9tT3B0aW9ucylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHRlcm0gaXMgZ2l2ZW5gKVxyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nKG9wdGlvbnMsIGxpbWl0cykudGhlbigoeyBkYXRhLCBjb3VudDogdG90YWwsIG1heGltdW0sIG1pbmltYWwsIGRpc3RpbmN0IH0pID0+ICh7XHJcbiAgICAgIHByb2R1Y3RzOiB7IGRhdGE6IGRhdGEubWFwKChwcm9kdWN0KSA9PiBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKHByb2R1Y3QpKSwgdG90YWwgfSxcclxuICAgICAgcGFnZXM6IE1hdGguY2VpbCh0b3RhbCAvIGxpbWl0cy5saW1pdCksXHJcbiAgICAgIHByaWNlczoge1xyXG4gICAgICAgIHByaWNlOiB7IG1pbjogK21pbmltYWw/LnByaWNlPy5wcmljZT8udG9GaXhlZCgyKSwgbWF4OiArbWF4aW11bT8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpIH0sXHJcbiAgICAgICAgc3Vic2NyaWJlclByaWNlOiB7XHJcbiAgICAgICAgICBtaW46ICttaW5pbWFsPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxyXG4gICAgICAgICAgbWF4OiArbWF4aW11bT8ucHJpY2U/LnN1YnNjcmliZXJQcmljZT8udG9GaXhlZCgyKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBicmFuZHM6IGRpc3RpbmN0Py5icmFuZCxcclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkQ3VzdG9tZXJUb1N0b2NrTm90aWZpY2F0aW9uKHNob3A6IFNob3BzLCBwcm9kdWN0SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBlbWFpbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LmFkZEN1c3RvbWVyRW1haWwoc2hvcCwgcHJvZHVjdElkLCBuYW1lLCBlbWFpbClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2coXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICAgbGltaXRzOiB7XHJcbiAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICAgIG9mZnNldD86IG51bWJlclxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBpZiAodGhpcy5oYXNUZXJtKG9wdGlvbnMpICYmIG9wdGlvbnMuc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XHJcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5maW5kQ2F0YWxvZ0lkc0J5RWxhc3RpY1NlYXJjaChvcHRpb25zLnRlcm0pXHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudEJ5VGVybShwcm9kdWN0c0lkcywgb3B0aW9ucywgbGltaXRzKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhhc0NhdGVnb3J5KG9wdGlvbnMpICYmIG9wdGlvbnMuc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XHJcbiAgICAgIGNvbnN0IHsgbW9zdFJlbGV2YW50IH0gPSBvcHRpb25zLmNhdGVnb3J5XHJcbiAgICAgIGNvbnNvbGUubG9nKCdtb3N0UmVsZXZhbnQnLCBtb3N0UmVsZXZhbnQpXHJcbiAgICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeVxyXG4gICAgICAgIC5maW5kKHtcclxuICAgICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgICAgLi4uKGF3YWl0IHRoaXMuYnVpbGRNYWluRmlsdGVyKG9wdGlvbnMpKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbigocHJvZHVjdHMpID0+IHByb2R1Y3RzLmRhdGEubWFwKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkKSlcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50KG1vc3RSZWxldmFudCwgcHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXBvUGFyYW1zOiBGaW5kUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0PiA9IHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIC4uLihhd2FpdCB0aGlzLmJ1aWxkTWFpbkZpbHRlcihvcHRpb25zKSksXHJcbiAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi4ob3B0aW9ucz8uc29ydCA/IHsgb3JkZXJCeTogdGhpcy5idWlsZFNvcnRRdWVyeShvcHRpb25zPy5zb3J0KSB9IDoge30pLFxyXG4gICAgICBsaW1pdHMsXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxyXG4gICAgICAgIC4uLighdGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxyXG4gICAgICB9LFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChbJ2JpZ2dlc3QtcHJpY2UnLCAnbG93ZXN0LXByaWNlJywgJ2JpZ2dlc3QtZGlzY291bnQnLCAnYmVzdC1yYXRpbmcnXS5pbmNsdWRlcyhvcHRpb25zLnNvcnQpKVxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhyZXBvUGFyYW1zKVxyXG5cclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKFxyXG4gICAgICByZXBvUGFyYW1zLFxyXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBidWlsZE1haW5GaWx0ZXIoe1xyXG4gICAgY2F0ZWdvcnksXHJcbiAgICBwcm9maWxlLFxyXG4gICAgdGVybSxcclxuICB9OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPik6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0Pj4ge1xyXG4gICAgaWYgKGNhdGVnb3J5KSByZXR1cm4gdGhpcy5jYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIuYnVpbGRQcm9kdWN0RmlsdGVyQnlDYXRlZ29yeShjYXRlZ29yeSlcclxuICAgIGlmIChwcm9maWxlKSByZXR1cm4geyB0YWdzOiB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogcHJvZmlsZSB9IH1cclxuICAgIGlmICh0ZXJtKVxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0SW5kZXhcclxuICAgICAgICAuc2VhcmNoKHRlcm0sIDk5OSwgdGhpcy5zaG9wKVxyXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiAoeyBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBkYXRhLmhpdHMubWFwKCh7IF9zb3VyY2UgfSkgPT4gX3NvdXJjZS5pZCkgfSB9KSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQoXHJcbiAgICBtb3N0UmVsZXZhbnRzOiBzdHJpbmdbXSxcclxuICAgIHByb2R1Y3RJZHM6IHN0cmluZ1tdLFxyXG4gICAgb3B0aW9uczogT21pdDxGZXRjaFByb2R1Y3RzT3B0aW9ucywgJ3NvcnQnPiAmIHtcclxuICAgICAgdGVybT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cclxuICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxyXG4gICAgfSxcclxuICAgIGxpbWl0czoge1xyXG4gICAgICBsaW1pdD86IG51bWJlclxyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcclxuICAgIH0sXHJcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xyXG4gICAgY29uc29sZS5sb2coJ21vc3RSZWxldmFudCcsIG1vc3RSZWxldmFudHMpXHJcbiAgICBjb25zb2xlLmxvZygncHJvZHVjdElkcycsIHByb2R1Y3RJZHMpXHJcbiAgICAvLyBjb25zdCB7IG9mZnNldCB9ID0gbGltaXRzXHJcblxyXG4gICAgLy8gaWYgKG9mZnNldCA9PT0gMCkge1xyXG4gICAgLy8gICBsaW1pdHMubGltaXQgLT0gbW9zdFJlbGV2YW50cy5sZW5ndGhcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBpZiAob2Zmc2V0ID4gMCkge1xyXG4gICAgLy8gICBsaW1pdHMub2Zmc2V0IC09IG1vc3RSZWxldmFudHMubGVuZ3RoXHJcbiAgICAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbGltaXRzJywgbGltaXRzKVxyXG4gICAgY29uc3QgbW9zdFJlbGV2YW50UHJvZHVjdHNJZHMgPSBbLi4ubmV3IFNldChtb3N0UmVsZXZhbnRzLmNvbmNhdChwcm9kdWN0SWRzKSldXHJcbiAgICBjb25zb2xlLmxvZygnbW9zdFJlbGV2YW50UHJvZHVjdHNJZHMnLCBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcylcclxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jayddLFxyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzIH0sXHJcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmRlckJ5OiB0aGlzLmJ1aWxkU29ydFF1ZXJ5KCduZXdzJyksXHJcbiAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxyXG4gICAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxyXG4gICAgICAgICAgZGlzdGluY3Q6IFsnYnJhbmQnXSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxyXG4gICAgKVxyXG4gICAgY29uc29sZS5sb2coJ3RvdGFsUmVzdWx0JywgdG90YWxSZXN1bHQuY291bnQpXHJcblxyXG4gICAgY29uc3Qgc3RvY2tEYXRhID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoKHByb2R1Y3QpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPiAwKVxyXG4gICAgY29uc3Qgc3RvY2tPdXQgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA8PSAwKVxyXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gbW9zdFJlbGV2YW50UHJvZHVjdHNJZHMuZmlsdGVyKChwcm9kdWN0KSA9PlxyXG4gICAgICBzdG9ja0RhdGEuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT0gcHJvZHVjdCksXHJcbiAgICApXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tPdXQgPSBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcy5maWx0ZXIoKHByb2R1Y3QpID0+XHJcbiAgICAgIHN0b2NrT3V0LnNvbWUoKHJlc3VsdCkgPT4gcmVzdWx0LmlkID09IHByb2R1Y3QpLFxyXG4gICAgKVxyXG4gICAgY29uc3QgbGltaXRlZFByb2R1Y3RJZCA9IHByb2R1Y3RJZHNTdG9ja1xyXG4gICAgICAuY29uY2F0KHByb2R1Y3RJZHNTdG9ja091dClcclxuICAgICAgLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXHJcblxyXG4gICAgY29uc3Qgb3JkZXJlZElkID0gbW9zdFJlbGV2YW50UHJvZHVjdHNJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBsaW1pdGVkUHJvZHVjdElkLmluY2x1ZGVzKHByb2R1Y3QpKVxyXG4gICAgY29uc29sZS5sb2coJ29yZGVyZWRJZCcsIG9yZGVyZWRJZClcclxuICAgIGNvbnN0IHByb2R1Y3RSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG9yZGVyZWRJZCB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXRhOiBsaW1pdGVkUHJvZHVjdElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcclxuICAgICAgY291bnQ6IHRvdGFsUmVzdWx0LmNvdW50LFxyXG4gICAgICBtYXhpbXVtOiB0b3RhbFJlc3VsdC5tYXhpbXVtLFxyXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxyXG4gICAgICBkaXN0aW5jdDogdG90YWxSZXN1bHQuZGlzdGluY3QsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50QnlUZXJtKFxyXG4gICAgcHJvZHVjdElkczogc3RyaW5nW10sXHJcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xyXG4gICAgICB0ZXJtPzogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICB9LFxyXG4gICAgbGltaXRzOiB7XHJcbiAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICAgIG9mZnNldD86IG51bWJlclxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZHM6IFsnaWQnLCAnc3RvY2snXSxcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBwcm9kdWN0SWRzIH0sXHJcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXHJcbiAgICApXHJcblxyXG4gICAgY29uc3Qgc3RvY2tEYXRhID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoKHByb2R1Y3QpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPiAwKVxyXG4gICAgY29uc3Qgc3RvY2tPdXQgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA8PSAwKVxyXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrRGF0YS5zb21lKChyZXN1bHQpID0+IHJlc3VsdC5pZCA9PSBwcm9kdWN0KSlcclxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9ja091dCA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBzdG9ja091dC5zb21lKChyZXN1bHQpID0+IHJlc3VsdC5pZCA9PSBwcm9kdWN0KSlcclxuXHJcbiAgICBjb25zdCBsaW1pdGVkUHJvZHVjdElkID0gcHJvZHVjdElkc1N0b2NrXHJcbiAgICAgIC5jb25jYXQocHJvZHVjdElkc1N0b2NrT3V0KVxyXG4gICAgICAuc2xpY2UobGltaXRzLm9mZnNldCwgbGltaXRzLm9mZnNldCArIGxpbWl0cy5saW1pdClcclxuXHJcbiAgICBjb25zdCBvcmRlcmVkSWQgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gbGltaXRlZFByb2R1Y3RJZC5pbmNsdWRlcyhwcm9kdWN0KSlcclxuICAgIGNvbnN0IHByb2R1Y3RSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG9yZGVyZWRJZCB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXRhOiBsaW1pdGVkUHJvZHVjdElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcclxuICAgICAgY291bnQ6IHRvdGFsUmVzdWx0LmNvdW50LFxyXG4gICAgICBtYXhpbXVtOiB0b3RhbFJlc3VsdC5tYXhpbXVtLFxyXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxyXG4gICAgICBkaXN0aW5jdDogdG90YWxSZXN1bHQuZGlzdGluY3QsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nSWRzQnlFbGFzdGljU2VhcmNoKHRlcm06IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcclxuICAgIGlmICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dKSByZXR1cm4gdGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXVxyXG5cclxuICAgIHJldHVybiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSA9IGF3YWl0IHRoaXMucHJvZHVjdEluZGV4XHJcbiAgICAgIC5zZWFyY2godGVybSwgOTk5LCB0aGlzLnNob3ApXHJcbiAgICAgIC50aGVuKCh7IGhpdHM6IHByb2R1Y3RzIH0pID0+IHtcclxuICAgICAgICBjb25zdCB3aXRoU3RvY2sgPSBwcm9kdWN0cy5maWx0ZXIoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLnN0b2NrLnF1YW50aXR5ID4gMClcclxuICAgICAgICBjb25zdCB3aXRoT3V0U3RvY2sgPSBwcm9kdWN0cy5maWx0ZXIoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLnN0b2NrLnF1YW50aXR5IDw9IDApXHJcbiAgICAgICAgY29uc3Qgc29ydGVkID0gWy4uLndpdGhTdG9jaywgLi4ud2l0aE91dFN0b2NrXVxyXG5cclxuICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoc29ydGVkLm1hcCgoeyBfc291cmNlIH0pID0+IF9zb3VyY2UuaWQpKV1cclxuICAgICAgfSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRmlsdGVyUXVlcnkgPSAoe1xyXG4gICAgY2x1YkRpc2NvdW50LFxyXG4gICAgYnJhbmRzLFxyXG4gICAgcHJpY2VzLFxyXG4gICAgZ2VuZGVyLFxyXG4gICAgdGFncyxcclxuICAgIHJhdGUsXHJcbiAgICBjdXN0b21PcHRpb25zLFxyXG4gIH06IEZldGNoUHJvZHVjdHNGaWx0ZXJzKTogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PiA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzID0ge30gYXMgUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PlxyXG5cclxuICAgIGlmIChjbHViRGlzY291bnQ/Lmxlbmd0aClcclxuICAgICAgc2V0KGZpbHRlcnMsICdwcmljZS5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlJywgeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBjbHViRGlzY291bnQgfSlcclxuICAgIGlmIChicmFuZHM/Lmxlbmd0aCkgZmlsdGVycy5icmFuZCA9IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogYnJhbmRzIH1cclxuICAgIGlmIChnZW5kZXI/Lmxlbmd0aCkgZmlsdGVycy5nZW5kZXIgPSB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGdlbmRlciB9XHJcbiAgICBpZiAocHJpY2VzPy5taW4gfHwgcHJpY2VzPy5tYXgpXHJcbiAgICAgIHNldChmaWx0ZXJzLCBwcmljZXMuc3Vic2NyaWJlclByaWNlID8gJ3ByaWNlLnN1YnNjcmliZXJQcmljZScgOiAncHJpY2UucHJpY2UnLCBbXHJcbiAgICAgICAgLi4uKHByaWNlcy5taW4gPyBbeyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogTWF0aC5yb3VuZChwcmljZXMubWluKSB9XSA6IFtdKSxcclxuICAgICAgICAuLi4ocHJpY2VzLm1heCA/IFt7IG9wZXJhdG9yOiBXaGVyZS5MVEUsIHZhbHVlOiBNYXRoLmNlaWwocHJpY2VzLm1heCkgfV0gOiBbXSksXHJcbiAgICAgIF0pXHJcbiAgICBpZiAocmF0ZSkgZmlsdGVycy5yYXRlID0geyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogcmF0ZSB9XHJcbiAgICBpZiAodGFncz8ubGVuZ3RoKSBmaWx0ZXJzLnRhZ3MgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogdGFncyB9XHJcbiAgICBpZiAoY3VzdG9tT3B0aW9ucz8ubGVuZ3RoKSBmaWx0ZXJzLmZpbHRlcnMgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogY3VzdG9tT3B0aW9ucyB9XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRTb3J0UXVlcnkgPSAoc29ydDogUHJvZHVjdFNvcnQpOiBSZXBvc2l0b3J5T3JkZXJCeTxQcm9kdWN0PiA9PiB7XHJcbiAgICBpZiAoIXNvcnQgfHwgc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSByZXR1cm4ge31cclxuXHJcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3Qtc2VsbGVycycpXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc2hvcHBpbmdDb3VudDogJ2Rlc2MnLFxyXG4gICAgICAgIHJhdGU6ICdkZXNjJyxcclxuICAgICAgICBzdG9jazogJ2Rlc2MnLFxyXG4gICAgICAgIG5hbWU6ICdhc2MnLFxyXG4gICAgICB9XHJcbiAgICBpZiAoc29ydCA9PT0gJ2JpZ2dlc3QtcHJpY2UnKSByZXR1cm4geyBzdWJzY3JpYmVyUHJpY2U6ICdkZXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcclxuICAgIGlmIChzb3J0ID09PSAnbG93ZXN0LXByaWNlJykgcmV0dXJuIHsgc3Vic2NyaWJlclByaWNlOiAnYXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcclxuICAgIGlmIChzb3J0ID09PSAnYmVzdC1yYXRpbmcnKSByZXR1cm4geyByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJywgc3RvY2s6ICdkZXNjJywgbmFtZTogJ2FzYycgfVxyXG4gICAgaWYgKHNvcnQgPT09ICduZXdzJykgcmV0dXJuIHsgY3JlYXRlZEF0OiAnZGVzYycgfVxyXG4gICAgaWYgKHNvcnQgPT09ICdiaWdnZXN0LWRpc2NvdW50JylcclxuICAgICAgcmV0dXJuIHsgc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZTogJ2Rlc2MnLCByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9IGFzIGFueVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZExpbWl0UXVlcnkgPSAob3B0aW9uczogeyBwYWdlPzogbnVtYmVyOyBwZXJQYWdlPzogbnVtYmVyIH0pOiB7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXIgfSA9PiB7XHJcbiAgICBjb25zdCBsaW1pdCA9IG9wdGlvbnM/LnBlclBhZ2UgfHwgMjBcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsaW1pdCxcclxuICAgICAgb2Zmc2V0OiAoKG9wdGlvbnM/LnBhZ2UgfHwgMSkgLSAxKSAqIGxpbWl0LFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQcm9maWxlID0gKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xyXG4gICAgcHJvZmlsZTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Byb2ZpbGUnXVxyXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXI7IHRhZ3M/OiBuZXZlciB9XHJcbiAgfSA9PiAncHJvZmlsZScgaW4gb3B0aW9uc1xyXG5cclxuICBwcml2YXRlIGhhc1Rlcm0gPSAoXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XHJcbiAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXHJcbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgfSA9PiAndGVybScgaW4gb3B0aW9uc1xyXG5cclxuICBwcml2YXRlIGhhc0NhdGVnb3J5ID0gKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xyXG4gICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXHJcbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgfSA9PiAnY2F0ZWdvcnknIGluIG9wdGlvbnNcclxufVxyXG4iXX0=
@@ -1815,19 +1815,20 @@ class CatalogService {
1815
1815
  return __awaiter(this, void 0, void 0, function* () {
1816
1816
  console.log('mostRelevant', mostRelevants);
1817
1817
  console.log('productIds', productIds);
1818
- const { offset } = limits;
1819
- if (offset === 0) {
1820
- limits.limit -= mostRelevants.length;
1821
- }
1822
- if (offset > 0) {
1823
- limits.offset -= mostRelevants.length;
1824
- }
1825
- console.log('limits', limits);
1818
+ // const { offset } = limits
1819
+ // if (offset === 0) {
1820
+ // limits.limit -= mostRelevants.length
1821
+ // }
1822
+ // if (offset > 0) {
1823
+ // limits.offset -= mostRelevants.length
1824
+ // }
1825
+ // console.log('limits', limits)
1826
1826
  const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))];
1827
1827
  console.log('mostRelevantProductsIds', mostRelevantProductsIds);
1828
1828
  const totalResult = yield this.productRepository.findCatalog({
1829
1829
  fields: ['id', 'stock'],
1830
1830
  filters: Object.assign({ id: { operator: Where.IN, value: mostRelevantProductsIds } }, this.buildFilterQuery((options === null || options === void 0 ? void 0 : options.filters) || {})),
1831
+ orderBy: this.buildSortQuery('news'),
1831
1832
  options: {
1832
1833
  minimal: ['price'],
1833
1834
  maximum: ['price'],