valtech-components 2.0.686 → 2.0.688

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.
@@ -116,6 +116,14 @@ export class TypedCollection {
116
116
  const results = await this.firestore.getDocs(this.collectionPath, queryOptions);
117
117
  return results.length;
118
118
  }
119
+ /**
120
+ * Obtiene todos los documentos (one-time fetch sin listener).
121
+ * A diferencia de watchAll(), no mantiene subscripciones activas.
122
+ */
123
+ async getAllOnce(options) {
124
+ const queryOptions = this.applyDefaultFilters(options);
125
+ return this.firestore.getDocs(this.collectionPath, queryOptions);
126
+ }
119
127
  /**
120
128
  * Verifica si un documento existe.
121
129
  */
@@ -251,4 +259,4 @@ export class TypedCollection {
251
259
  return this.collectionPath;
252
260
  }
253
261
  }
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2ZpcmVzdG9yZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBb0MzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFbkQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUNKLGNBQXNCLEVBQ3RCLE9BQTJCO1FBRTNCLE9BQU8sSUFBSSxlQUFlLENBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQzsrR0FmVSwwQkFBMEI7bUhBQTFCLDBCQUEwQixjQURiLE1BQU07OzRGQUNuQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQW1CbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUNVLFNBQTJCLEVBQzNCLGNBQXNCLEVBQzlCLFVBQTZCLEVBQUU7UUFGdkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFHOUIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEdBQUcsT0FBTztTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsOEVBQThFO0lBQzlFLG9CQUFvQjtJQUNwQiw4RUFBOEU7SUFFOUU7O09BRUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDdEIsT0FBTyxJQUFJLENBQUMs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QUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQzlELENBQUM7SUFDSixDQUFDO0lBRUQsOEVBQThFO0lBQzlFLG1CQUFtQjtJQUNuQiw4RUFBOEU7SUFFOUU7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQyxPQUFzQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixPQUFPLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxNQUFNLFdBQVcsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFakYsT0FBTztZQUNMLEdBQUcsT0FBTztZQUNWLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQztTQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxhQUFhO0lBQ2IsOEVBQThFO0lBRTlFOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaXJlc3RvcmUgQ29sbGVjdGlvbiBGYWN0b3J5XG4gKlxuICogUGF0csOzbiBmYWN0b3J5IHBhcmEgY3JlYXIgaW5zdGFuY2lhcyBkZSBjb2xlY2Npw7NuIHRpcGFkYXMuXG4gKiBSZWVtcGxhemEgbGEgY2xhc2UgYWJzdHJhY3RhIHBhcmEgZXZpdGFyIHByb2JsZW1hcyBjb24gaW5qZWN0KCkgZW4gY2xhc2VzIG5vLWluamVjdGFibGUuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGaXJlc3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9maXJlc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVEb2N1bWVudCwgUGFnaW5hdGVkUmVzdWx0LCBRdWVyeU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBPcGNpb25lcyBkZSBjb25maWd1cmFjacOzbiBwYXJhIHVuYSBjb2xlY2Npw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNpIHRydWUsIHVzYSBzb2Z0IGRlbGV0ZSAobWFyY2EgZGVsZXRlZEF0IGVuIGx1Z2FyIGRlIGVsaW1pbmFyKS5cbiAgICogRGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHNvZnREZWxldGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaSB0cnVlLCBtYW5lamEgYXV0b23DoXRpY2FtZW50ZSBjcmVhdGVkQXQvdXBkYXRlZEF0LlxuICAgKiBEZWZhdWx0OiB0cnVlXG4gICAqL1xuICB0aW1lc3RhbXBzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZWZlcmVuY2lhIGEgdW5hIHN1Yi1jb2xlY2Npw7NuIHRpcGFkYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJDb2xsZWN0aW9uUmVmPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4ge1xuICBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPjtcbiAgZ2V0QWxsKG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFRbXT47XG4gIHdhdGNoKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQgfCBudWxsPjtcbiAgd2F0Y2hBbGwob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IE9ic2VydmFibGU8VFtdPjtcbiAgY3JlYXRlKGRhdGE6IE9taXQ8VCwgJ2lkJyB8ICdjcmVhdGVkQXQnIHwgJ3VwZGF0ZWRBdCc+KTogUHJvbWlzZTxUPjtcbiAgdXBkYXRlKGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogRmFjdG9yeSBwYXJhIGNyZWFyIGluc3RhbmNpYXMgZGUgY29sZWNjacOzbiB0aXBhZGFzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuICogZXhwb3J0IGNsYXNzIFVzZXJzU2VydmljZSB7XG4gKiAgIHByaXZhdGUgdXNlcnMgPSBpbmplY3QoRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnkpLmNyZWF0ZTxVc2VyPigndXNlcnMnKTtcbiAqXG4gKiAgIGdldEFsbCA9ICgpID0+IHRoaXMudXNlcnMuZ2V0QWxsKCk7XG4gKiAgIGdldEJ5SWQgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy51c2Vycy5nZXRCeUlkKGlkKTtcbiAqICAgY3JlYXRlID0gKGRhdGE6IE9taXQ8VXNlciwgJ2lkJz4pID0+IHRoaXMudXNlcnMuY3JlYXRlKGRhdGEpO1xuICpcbiAqICAgLy8gTcOpdG9kb3MgcGVyc29uYWxpemFkb3NcbiAqICAgYXN5bmMgZ2V0QWN0aXZlVXNlcnMoKTogUHJvbWlzZTxVc2VyW10+IHtcbiAqICAgICByZXR1cm4gdGhpcy51c2Vycy5xdWVyeSh7XG4gKiAgICAgICB3aGVyZTogW3sgZmllbGQ6ICdhY3RpdmUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHRydWUgfV1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpcmVzdG9yZTogRmlyZXN0b3JlU2VydmljZSkge31cblxuICAvKipcbiAgICogQ3JlYSB1bmEgaW5zdGFuY2lhIGRlIGNvbGVjY2nDs24gdGlwYWRhLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvblBhdGggLSBSdXRhIGRlIGxhIGNvbGVjY2nDs24gZW4gRmlyZXN0b3JlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3BjaW9uZXMgZGUgY29uZmlndXJhY2nDs25cbiAgICogQHJldHVybnMgSW5zdGFuY2lhIGRlIFR5cGVkQ29sbGVjdGlvblxuICAgKi9cbiAgY3JlYXRlPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4oXG4gICAgY29sbGVjdGlvblBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQ29sbGVjdGlvbk9wdGlvbnNcbiAgKTogVHlwZWRDb2xsZWN0aW9uPFQ+IHtcbiAgICByZXR1cm4gbmV3IFR5cGVkQ29sbGVjdGlvbjxUPih0aGlzLmZpcmVzdG9yZSwgY29sbGVjdGlvblBhdGgsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8qKlxuICogQ29sZWNjacOzbiB0aXBhZGEgY29uIG3DqXRvZG9zIENSVUQuXG4gKlxuICogTk8gdXNhIGluamVjdCgpIC0gcmVjaWJlIEZpcmVzdG9yZVNlcnZpY2UgcG9yIGNvbnN0cnVjdG9yLlxuICogRXN0byBldml0YSBlbCBlcnJvciBORzAyMDMuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZENvbGxlY3Rpb248VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ29sbGVjdGlvbk9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaXJlc3RvcmU6IEZpcmVzdG9yZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb2xsZWN0aW9uUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENvbGxlY3Rpb25PcHRpb25zID0ge31cbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgc29mdERlbGV0ZTogZmFsc2UsXG4gICAgICB0aW1lc3RhbXBzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExFQ1RVUkFTIE9ORS1USU1FXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHVuIGRvY3VtZW50byBwb3IgSUQuXG4gICAqL1xuICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdldERvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB0b2RvcyBsb3MgZG9jdW1lbnRvcyBkZSBsYSBjb2xlY2Npw7NuLlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxsKG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IHRoaXMuYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVqZWN1dGEgdW5hIHF1ZXJ5IHBlcnNvbmFsaXphZGEuXG4gICAqL1xuICBhc3luYyBxdWVyeShvcHRpb25zOiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IHRoaXMuYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZG9jdW1lbnRvcyBjb24gcGFnaW5hY2nDs24uXG4gICAqL1xuICBhc3luYyBwYWdpbmF0ZShvcHRpb25zOiBRdWVyeU9wdGlvbnMgJiB7IGxpbWl0OiBudW1iZXIgfSk6IFByb21pc2U8UGFnaW5hdGVkUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpIGFzIFF1ZXJ5T3B0aW9ucyAmIHsgbGltaXQ6IG51bWJlciB9O1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5nZXRQYWdpbmF0ZWQ8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgcXVlcnlPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIHByaW1lciBkb2N1bWVudG8gcXVlIGNvaW5jaWRhIGNvbiBsYSBxdWVyeS5cbiAgICovXG4gIGFzeW5jIGdldEZpcnN0KG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBsaW1pdDogMSxcbiAgICB9KTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICAgIHJldHVybiByZXN1bHRzWzBdID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ3VlbnRhIGxvcyBkb2N1bWVudG9zIHF1ZSBjb2luY2lkZW4gY29uIGxhIHF1ZXJ5LlxuICAgKiBOb3RhOiBFc3RvIGNhcmdhIHRvZG9zIGxvcyBkb2N1bWVudG9zLCB1c2FyIGNvbiBjdWlkYWRvIGVuIGNvbGVjY2lvbmVzIGdyYW5kZXMuXG4gICAqL1xuICBhc3luYyBjb3VudChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZmlyZXN0b3JlLmdldERvY3M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgcXVlcnlPcHRpb25zKTtcbiAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gZG9jdW1lbnRvIGV4aXN0ZS5cbiAgICovXG4gIGFzeW5jIGV4aXN0cyhpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmV4aXN0cyh0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU1VCU0NSSVBDSU9ORVMgUkVBTC1USU1FXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBTdXNjcmliZSBhIGNhbWJpb3MgZGUgdW4gZG9jdW1lbnRvLlxuICAgKi9cbiAgd2F0Y2goaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZG9jQ2hhbmdlczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogU3VzY3JpYmUgYSBjYW1iaW9zIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICB3YXRjaEFsbChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25DaGFuZ2VzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU3VzY3JpYmUgYSB1bmEgcXVlcnkgcGVyc29uYWxpemFkYS5cbiAgICovXG4gIHdhdGNoUXVlcnkob3B0aW9uczogUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25DaGFuZ2VzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVNDUklUVVJBXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDcmVhIHVuIG51ZXZvIGRvY3VtZW50byBjb24gSUQgYXV0by1nZW5lcmFkby5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZShkYXRhOiBPbWl0PFQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICd1cGRhdGVkQXQnPik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5hZGREb2M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYSB1biBkb2N1bWVudG8gY29uIElEIGVzcGVjw61maWNvLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlV2l0aElkKGlkOiBzdHJpbmcsIGRhdGE6IE9taXQ8VCwgJ2lkJz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuc2V0RG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGlkLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgY2FtcG9zIGRlIHVuIGRvY3VtZW50by5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZShpZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPE9taXQ8VCwgJ2lkJyB8ICdjcmVhdGVkQXQnPj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUudXBkYXRlRG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGlkLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuIGRvY3VtZW50by5cbiAgICogU2kgc29mdERlbGV0ZSBlc3TDoSBoYWJpbGl0YWRvLCBtYXJjYSBjb21vIGVsaW1pbmFkbyBlbiBsdWdhciBkZSBib3JyYXIuXG4gICAqL1xuICBhc3luYyBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuc29mdERlbGV0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwge1xuICAgICAgICBkZWxldGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB9IGFzIHVua25vd24gYXMgUGFydGlhbDxUPik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5kZWxldGVEb2ModGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RhdXJhIHVuIGRvY3VtZW50byBzb2Z0LWRlbGV0ZWQuXG4gICAqL1xuICBhc3luYyByZXN0b3JlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zb2Z0RGVsZXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NvZnQgZGVsZXRlIG5vIGVzdMOhIGhhYmlsaXRhZG8gcGFyYSBlc3RhIGNvbGVjY2nDs24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwge1xuICAgICAgZGVsZXRlZEF0OiBudWxsLFxuICAgIH0gYXMgdW5rbm93biBhcyBQYXJ0aWFsPFQ+KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTVUItQ09MRUNDSU9ORVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdW5hIHJlZmVyZW5jaWEgYSB1bmEgc3ViLWNvbGVjY2nDs24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRW4gVXNlcnNTZXJ2aWNlXG4gICAqIGdldFVzZXJEb2N1bWVudHModXNlcklkOiBzdHJpbmcpIHtcbiAgICogICByZXR1cm4gdGhpcy51c2Vycy5zdWJjb2xsZWN0aW9uPERvY3VtZW50Pih1c2VySWQsICdkb2N1bWVudHMnKTtcbiAgICogfVxuICAgKlxuICAgKiAvLyBVc29cbiAgICogY29uc3QgZG9jcyA9IGF3YWl0IHVzZXJzLmdldFVzZXJEb2N1bWVudHMoJ3VzZXIxMjMnKS5nZXRBbGwoKTtcbiAgICogYGBgXG4gICAqL1xuICBzdWJjb2xsZWN0aW9uPFMgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4oXG4gICAgcGFyZW50SWQ6IHN0cmluZyxcbiAgICBzdWJjb2xsZWN0aW9uTmFtZTogc3RyaW5nXG4gICk6IFN1YkNvbGxlY3Rpb25SZWY8Uz4ge1xuICAgIGNvbnN0IHN1YlBhdGggPSBgJHt0aGlzLmNvbGxlY3Rpb25QYXRofS8ke3BhcmVudElkfS8ke3N1YmNvbGxlY3Rpb25OYW1lfWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0QnlJZDogKGlkOiBzdHJpbmcpID0+IHRoaXMuZmlyZXN0b3JlLmdldERvYzxTPihzdWJQYXRoLCBpZCksXG4gICAgICBnZXRBbGw6IChvcHRpb25zPzogUXVlcnlPcHRpb25zKSA9PiB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFM+KHN1YlBhdGgsIG9wdGlvbnMpLFxuICAgICAgd2F0Y2g6IChpZDogc3RyaW5nKSA9PiB0aGlzLmZpcmVzdG9yZS5kb2NDaGFuZ2VzPFM+KHN1YlBhdGgsIGlkKSxcbiAgICAgIHdhdGNoQWxsOiAob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucykgPT4gdGhpcy5maXJlc3RvcmUuY29sbGVjdGlvbkNoYW5nZXM8Uz4oc3ViUGF0aCwgb3B0aW9ucyksXG4gICAgICBjcmVhdGU6IChkYXRhOiBPbWl0PFMsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICd1cGRhdGVkQXQnPikgPT5cbiAgICAgICAgdGhpcy5maXJlc3RvcmUuYWRkRG9jPFM+KHN1YlBhdGgsIGRhdGEpLFxuICAgICAgdXBkYXRlOiAoaWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxTPikgPT4gdGhpcy5maXJlc3RvcmUudXBkYXRlRG9jPFM+KHN1YlBhdGgsIGlkLCBkYXRhKSxcbiAgICAgIGRlbGV0ZTogKGlkOiBzdHJpbmcpID0+IHRoaXMuZmlyZXN0b3JlLmRlbGV0ZURvYyhzdWJQYXRoLCBpZCksXG4gICAgfTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQUklWQURPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQXBsaWNhIGZpbHRyb3MgcG9yIGRlZmVjdG8gYSBsYXMgcXVlcmllcy5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUXVlcnlPcHRpb25zIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zb2Z0RGVsZXRlKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucyA/PyB7fTtcbiAgICB9XG5cbiAgICAvLyBFeGNsdWlyIGRvY3VtZW50b3Mgc29mdC1kZWxldGVkIHBvciBkZWZlY3RvXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSB7IGZpZWxkOiAnZGVsZXRlZEF0Jywgb3BlcmF0b3I6ICc9PScgYXMgY29uc3QsIHZhbHVlOiBudWxsIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHdoZXJlOiBbLi4uKG9wdGlvbnM/LndoZXJlID8/IFtdKSwgd2hlcmVDbGF1c2VdLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2VuZXJhIHVuIG51ZXZvIElEIHNpbiBjcmVhciBlbCBkb2N1bWVudG8uXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdlbmVyYXRlSWQodGhpcy5jb2xsZWN0aW9uUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBydXRhIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICBnZXRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvblBhdGg7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnkuY3JlYXRlKCkgaW5zdGVhZC5cbiAqIFR5cGUgYWxpYXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICovXG5leHBvcnQgdHlwZSBGaXJlc3RvcmVDb2xsZWN0aW9uPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4gPSBUeXBlZENvbGxlY3Rpb248VD47XG4iXX0=
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2ZpcmVzdG9yZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBb0MzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFbkQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUNKLGNBQXNCLEVBQ3RCLE9BQTJCO1FBRTNCLE9BQU8sSUFBSSxlQUFlLENBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQzsrR0FmVSwwQkFBMEI7bUhBQTFCLDBCQUEwQixjQURiLE1BQU07OzRGQUNuQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQW1CbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUNVLFNBQTJCLEVBQzNCLGNBQXNCLEVBQzlCLFVBQTZCLEVBQUU7UUFGdkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFHOUIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEdBQUcsT0FBTztTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsOEVBQThFO0lBQzlFLG9CQUFvQjtJQUNwQiw4RUFBOEU7SUFFOUU7O09BRUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDdEIsT0FBTyxJQUFJLENBQUMs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ZWN0aW9uIEZhY3RvcnlcbiAqXG4gKiBQYXRyw7NuIGZhY3RvcnkgcGFyYSBjcmVhciBpbnN0YW5jaWFzIGRlIGNvbGVjY2nDs24gdGlwYWRhcy5cbiAqIFJlZW1wbGF6YSBsYSBjbGFzZSBhYnN0cmFjdGEgcGFyYSBldml0YXIgcHJvYmxlbWFzIGNvbiBpbmplY3QoKSBlbiBjbGFzZXMgbm8taW5qZWN0YWJsZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZpcmVzdG9yZVNlcnZpY2UgfSBmcm9tICcuL2ZpcmVzdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpcmVzdG9yZURvY3VtZW50LCBQYWdpbmF0ZWRSZXN1bHQsIFF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIE9wY2lvbmVzIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgdW5hIGNvbGVjY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogU2kgdHJ1ZSwgdXNhIHNvZnQgZGVsZXRlIChtYXJjYSBkZWxldGVkQXQgZW4gbHVnYXIgZGUgZWxpbWluYXIpLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgc29mdERlbGV0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNpIHRydWUsIG1hbmVqYSBhdXRvbcOhdGljYW1lbnRlIGNyZWF0ZWRBdC91cGRhdGVkQXQuXG4gICAqIERlZmF1bHQ6IHRydWVcbiAgICovXG4gIHRpbWVzdGFtcHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlZmVyZW5jaWEgYSB1bmEgc3ViLWNvbGVjY2nDs24gdGlwYWRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YkNvbGxlY3Rpb25SZWY8VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PiB7XG4gIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+O1xuICBnZXRBbGwob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8VFtdPjtcbiAgd2F0Y2goaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8IG51bGw+O1xuICB3YXRjaEFsbChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+O1xuICBjcmVhdGUoZGF0YTogT21pdDxULCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAndXBkYXRlZEF0Jz4pOiBQcm9taXNlPFQ+O1xuICB1cGRhdGUoaWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxUPik6IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IHBhcmEgY3JlYXIgaW5zdGFuY2lhcyBkZSBjb2xlY2Npw7NuIHRpcGFkYXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG4gKiBleHBvcnQgY2xhc3MgVXNlcnNTZXJ2aWNlIHtcbiAqICAgcHJpdmF0ZSB1c2VycyA9IGluamVjdChGaXJlc3RvcmVDb2xsZWN0aW9uRmFjdG9yeSkuY3JlYXRlPFVzZXI+KCd1c2VycycpO1xuICpcbiAqICAgZ2V0QWxsID0gKCkgPT4gdGhpcy51c2Vycy5nZXRBbGwoKTtcbiAqICAgZ2V0QnlJZCA9IChpZDogc3RyaW5nKSA9PiB0aGlzLnVzZXJzLmdldEJ5SWQoaWQpO1xuICogICBjcmVhdGUgPSAoZGF0YTogT21pdDxVc2VyLCAnaWQnPikgPT4gdGhpcy51c2Vycy5jcmVhdGUoZGF0YSk7XG4gKlxuICogICAvLyBNw6l0b2RvcyBwZXJzb25hbGl6YWRvc1xuICogICBhc3luYyBnZXRBY3RpdmVVc2VycygpOiBQcm9taXNlPFVzZXJbXT4ge1xuICogICAgIHJldHVybiB0aGlzLnVzZXJzLnF1ZXJ5KHtcbiAqICAgICAgIHdoZXJlOiBbeyBmaWVsZDogJ2FjdGl2ZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogdHJ1ZSB9XVxuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGaXJlc3RvcmVDb2xsZWN0aW9uRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlyZXN0b3JlOiBGaXJlc3RvcmVTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBpbnN0YW5jaWEgZGUgY29sZWNjacOzbiB0aXBhZGEuXG4gICAqXG4gICAqIEBwYXJhbSBjb2xsZWN0aW9uUGF0aCAtIFJ1dGEgZGUgbGEgY29sZWNjacOzbiBlbiBGaXJlc3RvcmVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcGNpb25lcyBkZSBjb25maWd1cmFjacOzblxuICAgKiBAcmV0dXJucyBJbnN0YW5jaWEgZGUgVHlwZWRDb2xsZWN0aW9uXG4gICAqL1xuICBjcmVhdGU8VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PihcbiAgICBjb2xsZWN0aW9uUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBDb2xsZWN0aW9uT3B0aW9uc1xuICApOiBUeXBlZENvbGxlY3Rpb248VD4ge1xuICAgIHJldHVybiBuZXcgVHlwZWRDb2xsZWN0aW9uPFQ+KHRoaXMuZmlyZXN0b3JlLCBjb2xsZWN0aW9uUGF0aCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb2xlY2Npw7NuIHRpcGFkYSBjb24gbcOpdG9kb3MgQ1JVRC5cbiAqXG4gKiBOTyB1c2EgaW5qZWN0KCkgLSByZWNpYmUgRmlyZXN0b3JlU2VydmljZSBwb3IgY29uc3RydWN0b3IuXG4gKiBFc3RvIGV2aXRhIGVsIGVycm9yIE5HMDIwMy5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVkQ29sbGVjdGlvbjxUIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDb2xsZWN0aW9uT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZpcmVzdG9yZTogRmlyZXN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogQ29sbGVjdGlvbk9wdGlvbnMgPSB7fVxuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBzb2Z0RGVsZXRlOiBmYWxzZSxcbiAgICAgIHRpbWVzdGFtcHM6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTEVDVFVSQVMgT05FLVRJTUVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdW4gZG9jdW1lbnRvIHBvciBJRC5cbiAgICovXG4gIGFzeW5jIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZ2V0RG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZG9zIGxvcyBkb2N1bWVudG9zIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICBhc3luYyBnZXRBbGwob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRWplY3V0YSB1bmEgcXVlcnkgcGVyc29uYWxpemFkYS5cbiAgICovXG4gIGFzeW5jIHF1ZXJ5KG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBkb2N1bWVudG9zIGNvbiBwYWdpbmFjacOzbi5cbiAgICovXG4gIGFzeW5jIHBhZ2luYXRlKG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyAmIHsgbGltaXQ6IG51bWJlciB9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXN1bHQ8VD4+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucykgYXMgUXVlcnlPcHRpb25zICYgeyBsaW1pdDogbnVtYmVyIH07XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdldFBhZ2luYXRlZDxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgcHJpbWVyIGRvY3VtZW50byBxdWUgY29pbmNpZGEgY29uIGxhIHF1ZXJ5LlxuICAgKi9cbiAgYXN5bmMgZ2V0Rmlyc3Qob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGxpbWl0OiAxLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlc3VsdHNbMF0gPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdWVudGEgbG9zIGRvY3VtZW50b3MgcXVlIGNvaW5jaWRlbiBjb24gbGEgcXVlcnkuXG4gICAqIE5vdGE6IEVzdG8gY2FyZ2EgdG9kb3MgbG9zIGRvY3VtZW50b3MsIHVzYXIgY29uIGN1aWRhZG8gZW4gY29sZWNjaW9uZXMgZ3JhbmRlcy5cbiAgICovXG4gIGFzeW5jIGNvdW50KG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IHRoaXMuYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zKTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICAgIHJldHVybiByZXN1bHRzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZG9zIGxvcyBkb2N1bWVudG9zIChvbmUtdGltZSBmZXRjaCBzaW4gbGlzdGVuZXIpLlxuICAgKiBBIGRpZmVyZW5jaWEgZGUgd2F0Y2hBbGwoKSwgbm8gbWFudGllbmUgc3Vic2NyaXBjaW9uZXMgYWN0aXZhcy5cbiAgICovXG4gIGFzeW5jIGdldEFsbE9uY2Uob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gZG9jdW1lbnRvIGV4aXN0ZS5cbiAgICovXG4gIGFzeW5jIGV4aXN0cyhpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmV4aXN0cyh0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU1VCU0NSSVBDSU9ORVMgUkVBTC1USU1FXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBTdXNjcmliZSBhIGNhbWJpb3MgZGUgdW4gZG9jdW1lbnRvLlxuICAgKi9cbiAgd2F0Y2goaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZG9jQ2hhbmdlczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogU3VzY3JpYmUgYSBjYW1iaW9zIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICB3YXRjaEFsbChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25DaGFuZ2VzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU3VzY3JpYmUgYSB1bmEgcXVlcnkgcGVyc29uYWxpemFkYS5cbiAgICovXG4gIHdhdGNoUXVlcnkob3B0aW9uczogUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25DaGFuZ2VzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVNDUklUVVJBXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDcmVhIHVuIG51ZXZvIGRvY3VtZW50byBjb24gSUQgYXV0by1nZW5lcmFkby5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZShkYXRhOiBPbWl0PFQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICd1cGRhdGVkQXQnPik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5hZGREb2M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYSB1biBkb2N1bWVudG8gY29uIElEIGVzcGVjw61maWNvLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlV2l0aElkKGlkOiBzdHJpbmcsIGRhdGE6IE9taXQ8VCwgJ2lkJz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuc2V0RG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGlkLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgY2FtcG9zIGRlIHVuIGRvY3VtZW50by5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZShpZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPE9taXQ8VCwgJ2lkJyB8ICdjcmVhdGVkQXQnPj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUudXBkYXRlRG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGlkLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuIGRvY3VtZW50by5cbiAgICogU2kgc29mdERlbGV0ZSBlc3TDoSBoYWJpbGl0YWRvLCBtYXJjYSBjb21vIGVsaW1pbmFkbyBlbiBsdWdhciBkZSBib3JyYXIuXG4gICAqL1xuICBhc3luYyBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuc29mdERlbGV0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwge1xuICAgICAgICBkZWxldGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB9IGFzIHVua25vd24gYXMgUGFydGlhbDxUPik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5kZWxldGVEb2ModGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RhdXJhIHVuIGRvY3VtZW50byBzb2Z0LWRlbGV0ZWQuXG4gICAqL1xuICBhc3luYyByZXN0b3JlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zb2Z0RGVsZXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NvZnQgZGVsZXRlIG5vIGVzdMOhIGhhYmlsaXRhZG8gcGFyYSBlc3RhIGNvbGVjY2nDs24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwge1xuICAgICAgZGVsZXRlZEF0OiBudWxsLFxuICAgIH0gYXMgdW5rbm93biBhcyBQYXJ0aWFsPFQ+KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTVUItQ09MRUNDSU9ORVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdW5hIHJlZmVyZW5jaWEgYSB1bmEgc3ViLWNvbGVjY2nDs24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRW4gVXNlcnNTZXJ2aWNlXG4gICAqIGdldFVzZXJEb2N1bWVudHModXNlcklkOiBzdHJpbmcpIHtcbiAgICogICByZXR1cm4gdGhpcy51c2Vycy5zdWJjb2xsZWN0aW9uPERvY3VtZW50Pih1c2VySWQsICdkb2N1bWVudHMnKTtcbiAgICogfVxuICAgKlxuICAgKiAvLyBVc29cbiAgICogY29uc3QgZG9jcyA9IGF3YWl0IHVzZXJzLmdldFVzZXJEb2N1bWVudHMoJ3VzZXIxMjMnKS5nZXRBbGwoKTtcbiAgICogYGBgXG4gICAqL1xuICBzdWJjb2xsZWN0aW9uPFMgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4oXG4gICAgcGFyZW50SWQ6IHN0cmluZyxcbiAgICBzdWJjb2xsZWN0aW9uTmFtZTogc3RyaW5nXG4gICk6IFN1YkNvbGxlY3Rpb25SZWY8Uz4ge1xuICAgIGNvbnN0IHN1YlBhdGggPSBgJHt0aGlzLmNvbGxlY3Rpb25QYXRofS8ke3BhcmVudElkfS8ke3N1YmNvbGxlY3Rpb25OYW1lfWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0QnlJZDogKGlkOiBzdHJpbmcpID0+IHRoaXMuZmlyZXN0b3JlLmdldERvYzxTPihzdWJQYXRoLCBpZCksXG4gICAgICBnZXRBbGw6IChvcHRpb25zPzogUXVlcnlPcHRpb25zKSA9PiB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFM+KHN1YlBhdGgsIG9wdGlvbnMpLFxuICAgICAgd2F0Y2g6IChpZDogc3RyaW5nKSA9PiB0aGlzLmZpcmVzdG9yZS5kb2NDaGFuZ2VzPFM+KHN1YlBhdGgsIGlkKSxcbiAgICAgIHdhdGNoQWxsOiAob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucykgPT4gdGhpcy5maXJlc3RvcmUuY29sbGVjdGlvbkNoYW5nZXM8Uz4oc3ViUGF0aCwgb3B0aW9ucyksXG4gICAgICBjcmVhdGU6IChkYXRhOiBPbWl0PFMsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICd1cGRhdGVkQXQnPikgPT5cbiAgICAgICAgdGhpcy5maXJlc3RvcmUuYWRkRG9jPFM+KHN1YlBhdGgsIGRhdGEpLFxuICAgICAgdXBkYXRlOiAoaWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxTPikgPT4gdGhpcy5maXJlc3RvcmUudXBkYXRlRG9jPFM+KHN1YlBhdGgsIGlkLCBkYXRhKSxcbiAgICAgIGRlbGV0ZTogKGlkOiBzdHJpbmcpID0+IHRoaXMuZmlyZXN0b3JlLmRlbGV0ZURvYyhzdWJQYXRoLCBpZCksXG4gICAgfTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQUklWQURPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQXBsaWNhIGZpbHRyb3MgcG9yIGRlZmVjdG8gYSBsYXMgcXVlcmllcy5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUXVlcnlPcHRpb25zIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zb2Z0RGVsZXRlKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucyA/PyB7fTtcbiAgICB9XG5cbiAgICAvLyBFeGNsdWlyIGRvY3VtZW50b3Mgc29mdC1kZWxldGVkIHBvciBkZWZlY3RvXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSB7IGZpZWxkOiAnZGVsZXRlZEF0Jywgb3BlcmF0b3I6ICc9PScgYXMgY29uc3QsIHZhbHVlOiBudWxsIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHdoZXJlOiBbLi4uKG9wdGlvbnM/LndoZXJlID8/IFtdKSwgd2hlcmVDbGF1c2VdLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2VuZXJhIHVuIG51ZXZvIElEIHNpbiBjcmVhciBlbCBkb2N1bWVudG8uXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdlbmVyYXRlSWQodGhpcy5jb2xsZWN0aW9uUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBydXRhIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICBnZXRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvblBhdGg7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnkuY3JlYXRlKCkgaW5zdGVhZC5cbiAqIFR5cGUgYWxpYXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICovXG5leHBvcnQgdHlwZSBGaXJlc3RvcmVDb2xsZWN0aW9uPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4gPSBUeXBlZENvbGxlY3Rpb248VD47XG4iXX0=
@@ -119,6 +119,17 @@ export class NotificationsService {
119
119
  orderBy: [{ field: 'createdAt', direction: 'desc' }],
120
120
  });
121
121
  }
122
+ /**
123
+ * Obtiene todas las notificaciones (one-time fetch sin listener).
124
+ * Útil para cargas iniciales sin necesidad de updates en tiempo real.
125
+ */
126
+ async getAllOnce() {
127
+ if (!this.collection)
128
+ return [];
129
+ return this.collection.getAllOnce({
130
+ orderBy: [{ field: 'createdAt', direction: 'desc' }],
131
+ });
132
+ }
122
133
  /**
123
134
  * Obtiene solo notificaciones no leídas.
124
135
  */
@@ -196,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
196
207
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.FirestoreCollectionFactory, decorators: [{
197
208
  type: Optional
198
209
  }] }] });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUF1Qm5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CLFlBQ1UsUUFBa0IsRUFDTixpQkFBNkM7UUFEekQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNOLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFSM0QsZUFBVSxHQUFpRCxJQUFJLENBQUM7UUFDaEUsa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBRTVDLDhEQUE4RDtRQUN0RCxnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFNN0MsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSyx1QkFBdUI7UUFDN0Isb0NBQW9DO1FBQ3BDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCw4REFBOEQ7WUFDOUQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcs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UUFDM0MsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzsrR0F0TFUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FEUCxNQUFNOzs0RkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBVTdCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5vdGlmaWNhdGlvbnMgU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIHBhcmEgbGVlciBub3RpZmljYWNpb25lcyBkZXNkZSBGaXJlc3RvcmUuXG4gKiBFbCBiYWNrZW5kIGVzY3JpYmUgbGFzIG5vdGlmaWNhY2lvbmVzLCBlbCBmcm9udGVuZCBzb2xvIGxhcyBsZWUgeSBhY3R1YWxpemEgZXN0YWRvLlxuICpcbiAqIFNlIGF1dG8taW5pY2lhbGl6YSBjdWFuZG8gQXV0aFNlcnZpY2UgdGllbmUgdW4gdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAqIFRhbWJpw6luIHB1ZWRlIGluaWNpYWxpemFyc2UgbWFudWFsbWVudGUgY29uIGBpbml0aWFsaXplKHVzZXJJZClgLlxuICovXG5cbmltcG9ydCB7IGVmZmVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnksIFR5cGVkQ29sbGVjdGlvbiB9IGZyb20gJy4vZmlyZXN0b3JlLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRmlyZXN0b3JlRG9jdW1lbnQgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBEb2N1bWVudG8gZGUgbm90aWZpY2FjacOzbiBlbiBGaXJlc3RvcmUuXG4gKiBFc3RydWN0dXJhIGVzY3JpdGEgcG9yIGVsIGJhY2tlbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRG9jdW1lbnQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudCB7XG4gIC8qKiBUw610dWxvIGRlIGxhIG5vdGlmaWNhY2nDs24gKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBDdWVycG8gZGVsIG1lbnNhamUgKi9cbiAgYm9keT86IHN0cmluZztcbiAgLyoqIFVSTCBkZSBpbWFnZW4gKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIC8qKiBEYXRvcyBwZXJzb25hbGl6YWRvcyAoZWo6IHJvdXRlLCBhY3Rpb25UeXBlKSAqL1xuICBkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFRpcG8gZGUgbm90aWZpY2FjacOzbiAqL1xuICB0eXBlPzogJ2ZjbScgfCAnc3lzdGVtJyB8ICdyZW1pbmRlcicgfCBzdHJpbmc7XG4gIC8qKiBTaSBsYSBub3RpZmljYWNpw7NuIGZ1ZSBsZcOtZGEgKi9cbiAgaXNSZWFkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgbGVlciBub3RpZmljYWNpb25lcyBkZXNkZSBGaXJlc3RvcmUuXG4gKlxuICogU2UgYXV0by1pbmljaWFsaXphIGN1YW5kbyBBdXRoU2VydmljZSB0aWVuZSB1biB1c3VhcmlvIGF1dGVudGljYWRvLlxuICogTm8gcmVxdWllcmUgbGxhbWFyIGEgYGluaXRpYWxpemUoKWAgbWFudWFsbWVudGUgc2kgQXV0aFNlcnZpY2UgZXN0w6EgY29uZmlndXJhZG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENvbiBBdXRoU2VydmljZSBjb25maWd1cmFkbzogYXV0by1pbmljaWFsaXphY2nDs25cbiAqIC8vIFNvbG8gaW55ZWN0YXIgeSB1c2FyIGRpcmVjdGFtZW50ZVxuICogcHJpdmF0ZSBub3RpZmljYXRpb25zID0gaW5qZWN0KE5vdGlmaWNhdGlvbnNTZXJ2aWNlKTtcbiAqXG4gKiBub3RpZmljYXRpb25zJCA9IHRoaXMubm90aWZpY2F0aW9ucy5nZXRBbGwoKTtcbiAqIHVucmVhZENvdW50JCA9IHRoaXMubm90aWZpY2F0aW9ucy5nZXRVbnJlYWRDb3VudCgpO1xuICpcbiAqIC8vIFNpbiBBdXRoU2VydmljZTogaW5pY2lhbGl6YWNpw7NuIG1hbnVhbFxuICogdGhpcy5ub3RpZmljYXRpb25zLmluaXRpYWxpemUodXNlcklkKTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb2xsZWN0aW9uOiBUeXBlZENvbGxlY3Rpb248Tm90aWZpY2F0aW9uRG9jdW1lbnQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY3VycmVudFVzZXJJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gSW55ZWNjacOzbiBvcGNpb25hbCAtIEF1dGhTZXJ2aWNlIHB1ZWRlIG5vIGVzdGFyIGNvbmZpZ3VyYWRvXG4gIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb2xsZWN0aW9uRmFjdG9yeTogRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnlcbiAgKSB7XG4gICAgLy8gSW50ZW50YXIgb2J0ZW5lciBBdXRoU2VydmljZSBkZSBmb3JtYSBsYXp5IChwdWVkZSBubyBlc3RhciBjb25maWd1cmFkbylcbiAgICB0aGlzLnNldHVwQXV0b0luaXRpYWxpemF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJhIGF1dG8taW5pY2lhbGl6YWNpw7NuIG9ic2VydmFuZG8gZWwgZXN0YWRvIGRlIEF1dGhTZXJ2aWNlLlxuICAgKiBTZSBlamVjdXRhIGVuIGVsIGNvbnRleHRvIGRlbCBpbmplY3RvciBwYXJhIHBvZGVyIHVzYXIgZWZmZWN0KCkuXG4gICAqL1xuICBwcml2YXRlIHNldHVwQXV0b0luaXRpYWxpemF0aW9uKCk6IHZvaWQge1xuICAgIC8vIE9idGVuZXIgQXV0aFNlcnZpY2UgZGUgZm9ybWEgbGF6eVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQXV0aFNlcnZpY2UsIG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQXV0aFNlcnZpY2Ugbm8gZXN0w6EgY29uZmlndXJhZG8sIG5vIGhheSBhdXRvLWluaWNpYWxpemFjacOzblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hdXRoU2VydmljZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFVzYXIgcnVuSW5JbmplY3Rpb25Db250ZXh0IHBhcmEgcG9kZXIgY3JlYXIgZWwgZWZmZWN0XG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlIS51c2VyKCk7XG5cbiAgICAgICAgaWYgKHVzZXI/LnVzZXJJZCAmJiB0aGlzLmN1cnJlbnRVc2VySWQgIT09IHVzZXIudXNlcklkKSB7XG4gICAgICAgICAgLy8gVXN1YXJpbyBhdXRlbnRpY2FkbzogaW5pY2lhbGl6YXIgY29uIHN1IElEXG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplKHVzZXIudXNlcklkKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlciAmJiB0aGlzLmN1cnJlbnRVc2VySWQpIHtcbiAgICAgICAgICAvLyBMb2dvdXQ6IGxpbXBpYXIgZXN0YWRvXG4gICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmljaWFsaXphIGVsIHNlcnZpY2lvIHBhcmEgdW4gdXN1YXJpbyBlc3BlY8OtZmljby5cbiAgICpcbiAgICogTk9UQTogU2UgbGxhbWEgYXV0b23DoXRpY2FtZW50ZSBzaSBBdXRoU2VydmljZSBlc3TDoSBjb25maWd1cmFkby5cbiAgICogU29sbyB1c2FyIG1hbnVhbG1lbnRlIHNpIEF1dGhTZXJ2aWNlIG5vIGVzdMOhIGRpc3BvbmlibGUgbyBzZSBuZWNlc2l0YVxuICAgKiB1biB1c2VySWQgZGlmZXJlbnRlIGFsIGRlbCB1c3VhcmlvIGF1dGVudGljYWRvLlxuICAgKi9cbiAgaW5pdGlhbGl6ZSh1c2VySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uRmFjdG9yeSkge1xuICAgICAgY29uc29sZS53YXJuKCdbTm90aWZpY2F0aW9uc10gRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3Rvcnkgbm90IGF2YWlsYWJsZS4gRW5zdXJlIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UoKSBpcyBjb25maWd1cmVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFVzZXJJZCA9IHVzZXJJZDtcblxuICAgIC8vIFBhdGggcmVsYXRpdm8gLSBGaXJlc3RvcmVTZXJ2aWNlIGFncmVnYSBhdXRvbcOhdGljYW1lbnRlIGFwcHMve2FwcElkfS9cbiAgICAvLyBOTyBhZ3JlZ2FyIGFwcHMvIGFxdcOtIHBhcmEgZXZpdGFyIGRvYmxlIHByZWZpam9cbiAgICBjb25zdCBiYXNlUGF0aCA9IGB1c2Vycy8ke3VzZXJJZH0vbm90aWZpY2F0aW9uc2A7XG5cbiAgICB0aGlzLmNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb25GYWN0b3J5LmNyZWF0ZTxOb3RpZmljYXRpb25Eb2N1bWVudD4oXG4gICAgICBiYXNlUGF0aCxcbiAgICAgIHsgdGltZXN0YW1wczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGNvbnNvbGUubG9nKCdbTm90aWZpY2F0aW9uc10gSW5pdGlhbGl6ZWQgd2l0aCBwYXRoOicsIGJhc2VQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBlbCBzZXJ2aWNpbyBlc3TDoSBpbmljaWFsaXphZG8uXG4gICAqL1xuICBnZXQgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgSUQgZGVsIHVzdWFyaW8gYWN0dWFsLlxuICAgKi9cbiAgZ2V0IHVzZXJJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VXNlcklkO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExFQ1RVUkFcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdG9kYXMgbGFzIG5vdGlmaWNhY2lvbmVzIG9yZGVuYWRhcyBwb3IgZmVjaGEgZGVzY2VuZGVudGUuXG4gICAqIFJlYWwtdGltZTogc2UgYWN0dWFsaXphIGF1dG9tw6F0aWNhbWVudGUgY3VhbmRvIGNhbWJpYW4gbG9zIGRhdG9zLlxuICAgKi9cbiAgZ2V0QWxsKCk6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uRG9jdW1lbnRbXT4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm4gb2YoW10pO1xuXG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi53YXRjaEFsbCh7XG4gICAgICBvcmRlckJ5OiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGRpcmVjdGlvbjogJ2Rlc2MnIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgc29sbyBub3RpZmljYWNpb25lcyBubyBsZcOtZGFzLlxuICAgKi9cbiAgZ2V0VW5yZWFkKCk6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uRG9jdW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbCgpLnBpcGUoXG4gICAgICBtYXAobm90aWZpY2F0aW9ucyA9PiBub3RpZmljYXRpb25zLmZpbHRlcihuID0+ICFuLmlzUmVhZCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdWVudGEgbm90aWZpY2FjaW9uZXMgbm8gbGXDrWRhcy5cbiAgICogw5p0aWwgcGFyYSBiYWRnZXMgZW4gVUkuXG4gICAqL1xuICBnZXRVbnJlYWRDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldFVucmVhZCgpLnBpcGUobWFwKG4gPT4gbi5sZW5ndGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHVuYSBub3RpZmljYWNpw7NuIHBvciBJRC5cbiAgICovXG4gIGFzeW5jIGdldEJ5SWQobm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Tm90aWZpY2F0aW9uRG9jdW1lbnQgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZ2V0QnlJZChub3RpZmljYXRpb25JZCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQUNDSU9ORVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE1hcmNhIHVuYSBub3RpZmljYWNpw7NuIGNvbW8gbGXDrWRhLlxuICAgKi9cbiAgYXN5bmMgbWFya0FzUmVhZChub3RpZmljYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLmNvbGxlY3Rpb24udXBkYXRlKG5vdGlmaWNhdGlvbklkLCB7IGlzUmVhZDogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJjYSB0b2RhcyBsYXMgbm90aWZpY2FjaW9uZXMgY29tbyBsZcOtZGFzLlxuICAgKi9cbiAgYXN5bmMgbWFya0FsbEFzUmVhZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgdW5yZWFkID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5KHtcbiAgICAgIHdoZXJlOiBbeyBmaWVsZDogJ2lzUmVhZCcsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZmFsc2UgfV0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVucmVhZC5tYXAobiA9PiB0aGlzLmNvbGxlY3Rpb24hLnVwZGF0ZShuLmlkISwgeyBpc1JlYWQ6IHRydWUgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuYSBub3RpZmljYWNpw7NuLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5kZWxldGUobm90aWZpY2F0aW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdG9kYXMgbGFzIG5vdGlmaWNhY2lvbmVzIGRlbCB1c3VhcmlvLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBhbGwgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZ2V0QWxsKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYWxsLm1hcChuID0+IHRoaXMuY29sbGVjdGlvbiEuZGVsZXRlKG4uaWQhKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBlbCBlc3RhZG8gZGVsIHNlcnZpY2lvLlxuICAgKiDDmnRpbCBwYXJhIGxvZ291dC5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gbnVsbDtcbiAgfVxufVxuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUF1Qm5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CLFlBQ1UsUUFBa0IsRUFDTixpQkFBNkM7UUFEekQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNOLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFSM0QsZUFBVSxHQUFpRCxJQUFJLENBQUM7UUFDaEUsa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBRTVDLDhEQUE4RDtRQUN0RCxnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFNN0MsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSyx1QkFBdUI7UUFDN0Isb0NBQW9DO1FBQ3BDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCw4REFBOEQ7WUFDOUQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcs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LENBQUMsVUFBVTtZQUFFLE9BQU87UUFDN0IsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFN0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7K0dBbE1VLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVU3QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOb3RpZmljYXRpb25zIFNlcnZpY2VcbiAqXG4gKiBTZXJ2aWNpbyBwYXJhIGxlZXIgbm90aWZpY2FjaW9uZXMgZGVzZGUgRmlyZXN0b3JlLlxuICogRWwgYmFja2VuZCBlc2NyaWJlIGxhcyBub3RpZmljYWNpb25lcywgZWwgZnJvbnRlbmQgc29sbyBsYXMgbGVlIHkgYWN0dWFsaXphIGVzdGFkby5cbiAqXG4gKiBTZSBhdXRvLWluaWNpYWxpemEgY3VhbmRvIEF1dGhTZXJ2aWNlIHRpZW5lIHVuIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKiBUYW1iacOpbiBwdWVkZSBpbmljaWFsaXphcnNlIG1hbnVhbG1lbnRlIGNvbiBgaW5pdGlhbGl6ZSh1c2VySWQpYC5cbiAqL1xuXG5pbXBvcnQgeyBlZmZlY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5LCBUeXBlZENvbGxlY3Rpb24gfSBmcm9tICcuL2ZpcmVzdG9yZS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IEZpcmVzdG9yZURvY3VtZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRG9jdW1lbnRvIGRlIG5vdGlmaWNhY2nDs24gZW4gRmlyZXN0b3JlLlxuICogRXN0cnVjdHVyYSBlc2NyaXRhIHBvciBlbCBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkRvY3VtZW50IGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQge1xuICAvKiogVMOtdHVsbyBkZSBsYSBub3RpZmljYWNpw7NuICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogQ3VlcnBvIGRlbCBtZW5zYWplICovXG4gIGJvZHk/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZGUgaW1hZ2VuICovXG4gIGltYWdlPzogc3RyaW5nO1xuICAvKiogRGF0b3MgcGVyc29uYWxpemFkb3MgKGVqOiByb3V0ZSwgYWN0aW9uVHlwZSkgKi9cbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBUaXBvIGRlIG5vdGlmaWNhY2nDs24gKi9cbiAgdHlwZT86ICdmY20nIHwgJ3N5c3RlbScgfCAncmVtaW5kZXInIHwgc3RyaW5nO1xuICAvKiogU2kgbGEgbm90aWZpY2FjacOzbiBmdWUgbGXDrWRhICovXG4gIGlzUmVhZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGxlZXIgbm90aWZpY2FjaW9uZXMgZGVzZGUgRmlyZXN0b3JlLlxuICpcbiAqIFNlIGF1dG8taW5pY2lhbGl6YSBjdWFuZG8gQXV0aFNlcnZpY2UgdGllbmUgdW4gdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAqIE5vIHJlcXVpZXJlIGxsYW1hciBhIGBpbml0aWFsaXplKClgIG1hbnVhbG1lbnRlIHNpIEF1dGhTZXJ2aWNlIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDb24gQXV0aFNlcnZpY2UgY29uZmlndXJhZG86IGF1dG8taW5pY2lhbGl6YWNpw7NuXG4gKiAvLyBTb2xvIGlueWVjdGFyIHkgdXNhciBkaXJlY3RhbWVudGVcbiAqIHByaXZhdGUgbm90aWZpY2F0aW9ucyA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gKlxuICogbm90aWZpY2F0aW9ucyQgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZ2V0QWxsKCk7XG4gKiB1bnJlYWRDb3VudCQgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZ2V0VW5yZWFkQ291bnQoKTtcbiAqXG4gKiAvLyBTaW4gQXV0aFNlcnZpY2U6IGluaWNpYWxpemFjacOzbiBtYW51YWxcbiAqIHRoaXMubm90aWZpY2F0aW9ucy5pbml0aWFsaXplKHVzZXJJZCk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU2VydmljZSB7XG4gIHByaXZhdGUgY29sbGVjdGlvbjogVHlwZWRDb2xsZWN0aW9uPE5vdGlmaWNhdGlvbkRvY3VtZW50PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRVc2VySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8vIElueWVjY2nDs24gb3BjaW9uYWwgLSBBdXRoU2VydmljZSBwdWVkZSBubyBlc3RhciBjb25maWd1cmFkb1xuICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29sbGVjdGlvbkZhY3Rvcnk6IEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5XG4gICkge1xuICAgIC8vIEludGVudGFyIG9idGVuZXIgQXV0aFNlcnZpY2UgZGUgZm9ybWEgbGF6eSAocHVlZGUgbm8gZXN0YXIgY29uZmlndXJhZG8pXG4gICAgdGhpcy5zZXR1cEF1dG9Jbml0aWFsaXphdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYSBhdXRvLWluaWNpYWxpemFjacOzbiBvYnNlcnZhbmRvIGVsIGVzdGFkbyBkZSBBdXRoU2VydmljZS5cbiAgICogU2UgZWplY3V0YSBlbiBlbCBjb250ZXh0byBkZWwgaW5qZWN0b3IgcGFyYSBwb2RlciB1c2FyIGVmZmVjdCgpLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cEF1dG9Jbml0aWFsaXphdGlvbigpOiB2b2lkIHtcbiAgICAvLyBPYnRlbmVyIEF1dGhTZXJ2aWNlIGRlIGZvcm1hIGxhenlcbiAgICB0cnkge1xuICAgICAgdGhpcy5hdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlLCBudWxsKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEF1dGhTZXJ2aWNlIG5vIGVzdMOhIGNvbmZpZ3VyYWRvLCBubyBoYXkgYXV0by1pbmljaWFsaXphY2nDs25cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBVc2FyIHJ1bkluSW5qZWN0aW9uQ29udGV4dCBwYXJhIHBvZGVyIGNyZWFyIGVsIGVmZmVjdFxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZSEudXNlcigpO1xuXG4gICAgICAgIGlmICh1c2VyPy51c2VySWQgJiYgdGhpcy5jdXJyZW50VXNlcklkICE9PSB1c2VyLnVzZXJJZCkge1xuICAgICAgICAgIC8vIFVzdWFyaW8gYXV0ZW50aWNhZG86IGluaWNpYWxpemFyIGNvbiBzdSBJRFxuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSh1c2VyLnVzZXJJZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXVzZXIgJiYgdGhpcy5jdXJyZW50VXNlcklkKSB7XG4gICAgICAgICAgLy8gTG9nb3V0OiBsaW1waWFyIGVzdGFkb1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBlbCBzZXJ2aWNpbyBwYXJhIHVuIHVzdWFyaW8gZXNwZWPDrWZpY28uXG4gICAqXG4gICAqIE5PVEE6IFNlIGxsYW1hIGF1dG9tw6F0aWNhbWVudGUgc2kgQXV0aFNlcnZpY2UgZXN0w6EgY29uZmlndXJhZG8uXG4gICAqIFNvbG8gdXNhciBtYW51YWxtZW50ZSBzaSBBdXRoU2VydmljZSBubyBlc3TDoSBkaXNwb25pYmxlIG8gc2UgbmVjZXNpdGFcbiAgICogdW4gdXNlcklkIGRpZmVyZW50ZSBhbCBkZWwgdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAgICovXG4gIGluaXRpYWxpemUodXNlcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbkZhY3RvcnkpIHtcbiAgICAgIGNvbnNvbGUud2FybignW05vdGlmaWNhdGlvbnNdIEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5IG5vdCBhdmFpbGFibGUuIEVuc3VyZSBwcm92aWRlVmFsdGVjaEZpcmViYXNlKCkgaXMgY29uZmlndXJlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB1c2VySWQ7XG5cbiAgICAvLyBQYXRoIHJlbGF0aXZvIC0gRmlyZXN0b3JlU2VydmljZSBhZ3JlZ2EgYXV0b23DoXRpY2FtZW50ZSBhcHBzL3thcHBJZH0vXG4gICAgLy8gTk8gYWdyZWdhciBhcHBzLyBhcXXDrSBwYXJhIGV2aXRhciBkb2JsZSBwcmVmaWpvXG4gICAgY29uc3QgYmFzZVBhdGggPSBgdXNlcnMvJHt1c2VySWR9L25vdGlmaWNhdGlvbnNgO1xuXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uRmFjdG9yeS5jcmVhdGU8Tm90aWZpY2F0aW9uRG9jdW1lbnQ+KFxuICAgICAgYmFzZVBhdGgsXG4gICAgICB7IHRpbWVzdGFtcHM6IHRydWUgfVxuICAgICk7XG5cbiAgICBjb25zb2xlLmxvZygnW05vdGlmaWNhdGlvbnNdIEluaXRpYWxpemVkIHdpdGggcGF0aDonLCBiYXNlUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgZWwgc2VydmljaW8gZXN0w6EgaW5pY2lhbGl6YWRvLlxuICAgKi9cbiAgZ2V0IGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIElEIGRlbCB1c3VhcmlvIGFjdHVhbC5cbiAgICovXG4gIGdldCB1c2VySWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXJJZDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMRUNUVVJBXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZGFzIGxhcyBub3RpZmljYWNpb25lcyBvcmRlbmFkYXMgcG9yIGZlY2hhIGRlc2NlbmRlbnRlLlxuICAgKiBSZWFsLXRpbWU6IHNlIGFjdHVhbGl6YSBhdXRvbcOhdGljYW1lbnRlIGN1YW5kbyBjYW1iaWFuIGxvcyBkYXRvcy5cbiAgICovXG4gIGdldEFsbCgpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkRvY3VtZW50W10+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuIG9mKFtdKTtcblxuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24ud2F0Y2hBbGwoe1xuICAgICAgb3JkZXJCeTogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdkZXNjJyB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZGFzIGxhcyBub3RpZmljYWNpb25lcyAob25lLXRpbWUgZmV0Y2ggc2luIGxpc3RlbmVyKS5cbiAgICogw5p0aWwgcGFyYSBjYXJnYXMgaW5pY2lhbGVzIHNpbiBuZWNlc2lkYWQgZGUgdXBkYXRlcyBlbiB0aWVtcG8gcmVhbC5cbiAgICovXG4gIGFzeW5jIGdldEFsbE9uY2UoKTogUHJvbWlzZTxOb3RpZmljYXRpb25Eb2N1bWVudFtdPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybiBbXTtcblxuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZ2V0QWxsT25jZSh7XG4gICAgICBvcmRlckJ5OiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGRpcmVjdGlvbjogJ2Rlc2MnIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgc29sbyBub3RpZmljYWNpb25lcyBubyBsZcOtZGFzLlxuICAgKi9cbiAgZ2V0VW5yZWFkKCk6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uRG9jdW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbCgpLnBpcGUoXG4gICAgICBtYXAobm90aWZpY2F0aW9ucyA9PiBub3RpZmljYXRpb25zLmZpbHRlcihuID0+ICFuLmlzUmVhZCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdWVudGEgbm90aWZpY2FjaW9uZXMgbm8gbGXDrWRhcy5cbiAgICogw5p0aWwgcGFyYSBiYWRnZXMgZW4gVUkuXG4gICAqL1xuICBnZXRVbnJlYWRDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldFVucmVhZCgpLnBpcGUobWFwKG4gPT4gbi5sZW5ndGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHVuYSBub3RpZmljYWNpw7NuIHBvciBJRC5cbiAgICovXG4gIGFzeW5jIGdldEJ5SWQobm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Tm90aWZpY2F0aW9uRG9jdW1lbnQgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZ2V0QnlJZChub3RpZmljYXRpb25JZCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQUNDSU9ORVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE1hcmNhIHVuYSBub3RpZmljYWNpw7NuIGNvbW8gbGXDrWRhLlxuICAgKi9cbiAgYXN5bmMgbWFya0FzUmVhZChub3RpZmljYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLmNvbGxlY3Rpb24udXBkYXRlKG5vdGlmaWNhdGlvbklkLCB7IGlzUmVhZDogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJjYSB0b2RhcyBsYXMgbm90aWZpY2FjaW9uZXMgY29tbyBsZcOtZGFzLlxuICAgKi9cbiAgYXN5bmMgbWFya0FsbEFzUmVhZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgdW5yZWFkID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5KHtcbiAgICAgIHdoZXJlOiBbeyBmaWVsZDogJ2lzUmVhZCcsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZmFsc2UgfV0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVucmVhZC5tYXAobiA9PiB0aGlzLmNvbGxlY3Rpb24hLnVwZGF0ZShuLmlkISwgeyBpc1JlYWQ6IHRydWUgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuYSBub3RpZmljYWNpw7NuLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5kZWxldGUobm90aWZpY2F0aW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdG9kYXMgbGFzIG5vdGlmaWNhY2lvbmVzIGRlbCB1c3VhcmlvLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBhbGwgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZ2V0QWxsKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYWxsLm1hcChuID0+IHRoaXMuY29sbGVjdGlvbiEuZGVsZXRlKG4uaWQhKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBlbCBlc3RhZG8gZGVsIHNlcnZpY2lvLlxuICAgKiDDmnRpbCBwYXJhIGxvZ291dC5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gbnVsbDtcbiAgfVxufVxuIl19
@@ -45,12 +45,14 @@ export class StorageService {
45
45
  }
46
46
  /**
47
47
  * Prefija el path de storage con el appId si está configurado.
48
- * Si no hay appId, retorna el path sin modificar (backward compatible).
48
+ * Si no hay appId o skipPrefix es true, retorna el path sin modificar.
49
49
  *
50
+ * @param path - Ruta original
51
+ * @param skipPrefix - Si es true, no aplica el prefix (útil para paths compartidos como avatares)
50
52
  * @internal
51
53
  */
52
- prefixStoragePath(path) {
53
- if (!this.config?.appId)
54
+ prefixStoragePath(path, skipPrefix = false) {
55
+ if (skipPrefix || !this.config?.appId)
54
56
  return path;
55
57
  return `${this.config.appId}/${path}`;
56
58
  }
@@ -81,7 +83,7 @@ export class StorageService {
81
83
  * ```
82
84
  */
83
85
  upload(path, file, metadata) {
84
- const prefixedPath = this.prefixStoragePath(path);
86
+ const prefixedPath = this.prefixStoragePath(path, metadata?.skipPrefix);
85
87
  const storageRef = ref(this.storage, prefixedPath);
86
88
  const uploadMetadata = {
87
89
  contentType: metadata?.contentType || (file instanceof File ? file.type : undefined),
@@ -136,7 +138,7 @@ export class StorageService {
136
138
  * ```
137
139
  */
138
140
  async uploadAndGetUrl(path, file, metadata) {
139
- const prefixedPath = this.prefixStoragePath(path);
141
+ const prefixedPath = this.prefixStoragePath(path, metadata?.skipPrefix);
140
142
  return new Promise((resolve, reject) => {
141
143
  this.upload(path, file, metadata).subscribe({
142
144
  complete: async () => {
@@ -467,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
467
469
  type: Injectable,
468
470
  args: [{ providedIn: 'root' }]
469
471
  }], ctorParameters: () => [{ type: i1.Storage }] });
470
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxXQUFXLEVBQ1gsT0FBTyxFQUNQLEdBQUcsRUFFSCxvQkFBb0IsR0FHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBR25EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRjVCLFdBQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU5QixDQUFDO0lBRXhDOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsU0FBUztJQUNULDhFQUE4RTtJQUU5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNCRztJQUNILE1BQU0sQ0FBQyxJQUFZLEVBQUUsSUFBaUIsRUFBRSxRQUEwQjtRQUNoRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMs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QixPQUFPLHNCQUFzQixDQUFDO2dCQUNoQyxLQUFLLHNCQUFzQjtvQkFDekIsT0FBTywrQ0FBK0MsQ0FBQztnQkFDekQsS0FBSyxrQkFBa0I7b0JBQ3JCLE9BQU8sNEJBQTRCLENBQUM7Z0JBQ3RDLEtBQUssd0JBQXdCO29CQUMzQixPQUFPLDJDQUEyQyxDQUFDO2dCQUNyRCxLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTywwQkFBMEIsQ0FBQztnQkFDcEMsS0FBSyw4QkFBOEI7b0JBQ2pDLE9BQU8scUNBQXFDLENBQUM7Z0JBQy9DLEtBQUsscUJBQXFCO29CQUN4QixPQUFPLHlCQUF5QixDQUFDO2dCQUNuQyxLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTyxvQkFBb0IsQ0FBQztnQkFDOUI7b0JBQ0UsT0FBTyxLQUFLLENBQUMsT0FBTyxJQUFJLHFDQUFxQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxxQ0FBcUMsQ0FBQztJQUMvQyxDQUFDOytHQTljVSxjQUFjO21IQUFkLGNBQWMsY0FERCxNQUFNOzs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0b3JhZ2UgU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIHBhcmEgb3BlcmFjaW9uZXMgZGUgRmlyZWJhc2UgU3RvcmFnZS5cbiAqIFNvcG9ydGEgdXBsb2FkIGNvbiB0cmFja2luZyBkZSBwcm9ncmVzbywgZG93bmxvYWQgeSBnZXN0acOzbiBkZSBhcmNoaXZvcy5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlbGV0ZU9iamVjdCxcbiAgZ2V0RG93bmxvYWRVUkwsXG4gIGdldE1ldGFkYXRhLFxuICBsaXN0QWxsLFxuICByZWYsXG4gIFN0b3JhZ2UsXG4gIHVwbG9hZEJ5dGVzUmVzdW1hYmxlLFxuICBVcGxvYWRNZXRhZGF0YSxcbiAgVXBsb2FkVGFza1NuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmFnZUxpc3RSZXN1bHQsIFN0b3JhZ2VNZXRhZGF0YSwgVXBsb2FkUHJvZ3Jlc3MsIFVwbG9hZFJlc3VsdCwgVXBsb2FkU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIEZpcmViYXNlIFN0b3JhZ2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgc3RvcmFnZSA9IGluamVjdChTdG9yYWdlU2VydmljZSk7XG4gKlxuICogICB1cGxvYWRQcm9ncmVzcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICogICBkb3dubG9hZFVybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAqXG4gKiAgIGFzeW5jIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xuICogICAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XG4gKiAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gKlxuICogICAgIC8vIFVwbG9hZCBjb24gcHJvZ3Jlc29cbiAqICAgICB0aGlzLnN0b3JhZ2UudXBsb2FkKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWAsIGZpbGUpLnN1YnNjcmliZSh7XG4gKiAgICAgICBuZXh0OiAocHJvZ3Jlc3MpID0+IHRoaXMudXBsb2FkUHJvZ3Jlc3Muc2V0KHByb2dyZXNzLnBlcmNlbnRhZ2UpLFxuICogICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAqICAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldERvd25sb2FkVXJsKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWApO1xuICogICAgICAgICB0aGlzLmRvd25sb2FkVXJsLnNldCh1cmwpO1xuICogICAgICAgfVxuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSkge31cblxuICAvKipcbiAgICogUHJlZmlqYSBlbCBwYXRoIGRlIHN0b3JhZ2UgY29uIGVsIGFwcElkIHNpIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICAgKiBTaSBubyBoYXkgYXBwSWQsIHJldG9ybmEgZWwgcGF0aCBzaW4gbW9kaWZpY2FyIChiYWNrd2FyZCBjb21wYXRpYmxlKS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHByZWZpeFN0b3JhZ2VQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZz8uYXBwSWQpIHJldHVybiBwYXRoO1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy5hcHBJZH0vJHtwYXRofWA7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVBMT0FEXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8gY29uIHRyYWNraW5nIGRlIHByb2dyZXNvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZW4gU3RvcmFnZSBkb25kZSBndWFyZGFyIGVsIGFyY2hpdm9cbiAgICogQHBhcmFtIGZpbGUgLSBBcmNoaXZvIGEgc3ViaXIgKEZpbGUgbyBCbG9iKVxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBNZXRhZGF0YSBvcGNpb25hbCAoY29udGVudFR5cGUsIGN1c3RvbU1ldGFkYXRhKVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHF1ZSBlbWl0ZSBlbCBwcm9ncmVzbyB5IGNvbXBsZXRhIGN1YW5kbyB0ZXJtaW5hXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gVXBsb2FkIGLDoXNpY29cbiAgICogc3RvcmFnZS51cGxvYWQoJ2ltYWdlcy9waG90by5qcGcnLCBmaWxlKS5zdWJzY3JpYmUoe1xuICAgKiAgIG5leHQ6IChwcm9ncmVzcykgPT4gY29uc29sZS5sb2coYCR7cHJvZ3Jlc3MucGVyY2VudGFnZX0lYCksXG4gICAqICAgY29tcGxldGU6ICgpID0+IGNvbnNvbGUubG9nKCdVcGxvYWQgY29tcGxldGFkbycpXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBDb24gbWV0YWRhdGFcbiAgICogc3RvcmFnZS51cGxvYWQoJ2RvY3MvcmVwb3J0LnBkZicsIGZpbGUsIHtcbiAgICogICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAqICAgY3VzdG9tTWV0YWRhdGE6IHsgdXBsb2FkZWRCeTogJ3VzZXIxMjMnIH1cbiAgICogfSkuc3Vic2NyaWJlKC4uLik7XG4gICAqIGBgYFxuICAgKi9cbiAgdXBsb2FkKHBhdGg6IHN0cmluZywgZmlsZTogRmlsZSB8IEJsb2IsIG1ldGFkYXRhPzogU3RvcmFnZU1ldGFkYXRhKTogT2JzZXJ2YWJsZTxVcGxvYWRQcm9ncmVzcz4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgY29uc3QgdXBsb2FkTWV0YWRhdGE6IFVwbG9hZE1ldGFkYXRhID0ge1xuICAgICAgY29udGVudFR5cGU6IG1ldGFkYXRhPy5jb250ZW50VHlwZSB8fCAoZmlsZSBpbnN0YW5jZW9mIEZpbGUgPyBmaWxlLnR5cGUgOiB1bmRlZmluZWQpLFxuICAgICAgY3VzdG9tTWV0YWRhdGE6IG1ldGFkYXRhPy5jdXN0b21NZXRhZGF0YSxcbiAgICAgIGNhY2hlQ29udHJvbDogbWV0YWRhdGE/LmNhY2hlQ29udHJvbCxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFzayA9IHVwbG9hZEJ5dGVzUmVzdW1hYmxlKHN0b3JhZ2VSZWYsIGZpbGUsIHVwbG9hZE1ldGFkYXRhKTtcbiAgICBjb25zdCBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVwbG9hZFByb2dyZXNzPih7XG4gICAgICBieXRlc1RyYW5zZmVycmVkOiAwLFxuICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgIHN0YXRlOiAncnVubmluZycsXG4gICAgfSk7XG5cbiAgICB0YXNrLm9uKFxuICAgICAgJ3N0YXRlX2NoYW5nZWQnLFxuICAgICAgKHNuYXBzaG90OiBVcGxvYWRUYXNrU25hcHNob3QpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IHNuYXBzaG90LmJ5dGVzVHJhbnNmZXJyZWQsXG4gICAgICAgICAgdG90YWxCeXRlczogc25hcHNob3QudG90YWxCeXRlcyxcbiAgICAgICAgICBwZXJjZW50YWdlOiBNYXRoLnJvdW5kKChzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkIC8gc25hcHNob3QudG90YWxCeXRlcykgKiAxMDApLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLm1hcFRhc2tTdGF0ZShzbmFwc2hvdC5zdGF0ZSksXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBwcm9ncmVzcyQubmV4dCh7XG4gICAgICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICBzdGF0ZTogJ2Vycm9yJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2dyZXNzJC5lcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IGZpbGUuc2l6ZSxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxuICAgICAgICAgIHN0YXRlOiAnc3VjY2VzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9ncmVzcyQuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHByb2dyZXNzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8geSByZXRvcm5hIGxhIFVSTCBkZSBkZXNjYXJnYSBhbCBjb21wbGV0YXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkIGNvbiBVUkwgZGUgZGVzY2FyZ2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLnVwbG9hZEFuZEdldFVybCgnYXZhdGFycy91c2VyMTIzLmpwZycsIGZpbGUpO1xuICAgKiBjb25zb2xlLmxvZygnVVJMOicsIHJlc3VsdC5kb3dubG9hZFVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkQW5kR2V0VXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlIHwgQmxvYixcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMudXBsb2FkKHBhdGgsIGZpbGUsIG1ldGFkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgICBjb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gYXdhaXQgZ2V0RG93bmxvYWRVUkwoc3RvcmFnZVJlZik7XG4gICAgICAgICAgICBjb25zdCBzdG9yZWRNZXRhZGF0YSA9IGF3YWl0IGdldE1ldGFkYXRhKHN0b3JhZ2VSZWYpO1xuXG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgZG93bmxvYWRVcmwsXG4gICAgICAgICAgICAgIGZ1bGxQYXRoOiBzdG9yZWRNZXRhZGF0YS5mdWxsUGF0aCxcbiAgICAgICAgICAgICAgbmFtZTogc3RvcmVkTWV0YWRhdGEubmFtZSxcbiAgICAgICAgICAgICAgc2l6ZTogc3RvcmVkTWV0YWRhdGEuc2l6ZSxcbiAgICAgICAgICAgICAgY29udGVudFR5cGU6IHN0b3JlZE1ldGFkYXRhLmNvbnRlbnRUeXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuICAgICAgICAgICAgICBtZXRhZGF0YTogc3RvcmVkTWV0YWRhdGEuY3VzdG9tTWV0YWRhdGEgfHwge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiByZWplY3QoZXJyb3IpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIGRlc2RlIHVuYSBEYXRhIFVSTCAoYmFzZTY0KS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGVuIFN0b3JhZ2VcbiAgICogQHBhcmFtIGRhdGFVcmwgLSBEYXRhIFVSTCAoZWo6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsLi4uJylcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gTWV0YWRhdGEgb3BjaW9uYWxcbiAgICogQHJldHVybnMgUmVzdWx0YWRvIGRlbCB1cGxvYWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBEZXNkZSBjYW52YXNcbiAgICogY29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLnVwbG9hZEZyb21EYXRhVXJsKCdpbWFnZXMvZHJhd2luZy5wbmcnLCBkYXRhVXJsKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyB1cGxvYWRGcm9tRGF0YVVybChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZGF0YVVybDogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogU3RvcmFnZU1ldGFkYXRhXG4gICk6IFByb21pc2U8VXBsb2FkUmVzdWx0PiB7XG4gICAgLy8gRXh0cmFlciBjb250ZW50IHR5cGUgeSBkYXRvcyBiYXNlNjRcbiAgICBjb25zdCBtYXRjaGVzID0gZGF0YVVybC5tYXRjaCgvXmRhdGE6KFteO10rKTtiYXNlNjQsKC4rKSQvKTtcbiAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGF0YSBVUkwgaW52w6FsaWRhJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSBtYXRjaGVzWzFdO1xuICAgIGNvbnN0IGJhc2U2NERhdGEgPSBtYXRjaGVzWzJdO1xuXG4gICAgLy8gQ29udmVydGlyIGJhc2U2NCBhIEJsb2JcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYmFzZTY0RGF0YSk7XG4gICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG5cbiAgICByZXR1cm4gdGhpcy51cGxvYWRBbmRHZXRVcmwocGF0aCwgYmxvYiwge1xuICAgICAgY29udGVudFR5cGUsXG4gICAgICAuLi5tZXRhZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBET1dOTE9BRFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBVUkwgZGUgZGVzY2FyZ2EgZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBhcmNoaXZvIGVuIFN0b3JhZ2VcbiAgICogQHJldHVybnMgVVJMIGRlIGRlc2NhcmdhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdXJsID0gYXdhaXQgc3RvcmFnZS5nZXREb3dubG9hZFVybCgnaW1hZ2VzL3Bob3RvLmpwZycpO1xuICAgKiAvLyBVc2FyIGVuIDxpbWcgW3NyY109XCJ1cmxcIj5cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXREb3dubG9hZFVybChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICByZXR1cm4gYXdhaXQgZ2V0RG93bmxvYWRVUkwoc3RvcmFnZVJlZik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIG1ldGFkYXRhIGRlIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2b1xuICAgKiBAcmV0dXJucyBNZXRhZGF0YSBkZWwgYXJjaGl2b1xuICAgKi9cbiAgYXN5bmMgZ2V0TWV0YWRhdGEocGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlTWV0YWRhdGEgJiB7IHNpemU6IG51bWJlcjsgbmFtZTogc3RyaW5nIH0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBnZXRNZXRhZGF0YShzdG9yYWdlUmVmKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnRUeXBlOiBtZXRhZGF0YS5jb250ZW50VHlwZSxcbiAgICAgICAgY3VzdG9tTWV0YWRhdGE6IG1ldGFkYXRhLmN1c3RvbU1ldGFkYXRhLFxuICAgICAgICBjYWNoZUNvbnRyb2w6IG1ldGFkYXRhLmNhY2hlQ29udHJvbCxcbiAgICAgICAgc2l6ZTogbWV0YWRhdGEuc2l6ZSxcbiAgICAgICAgbmFtZTogbWV0YWRhdGEubmFtZSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBERUxFVEVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBhcmNoaXZvIGEgZWxpbWluYXJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBzdG9yYWdlLmRlbGV0ZSgnaW1hZ2VzL29sZC1waG90by5qcGcnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBkZWxldGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIGF3YWl0IGRlbGV0ZU9iamVjdChzdG9yYWdlUmVmKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgbcO6bHRpcGxlcyBhcmNoaXZvcy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhzIC0gQXJyYXkgZGUgcnV0YXMgYSBlbGltaW5hclxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IHN0b3JhZ2UuZGVsZXRlTXVsdGlwbGUoW1xuICAgKiAgICdpbWFnZXMvcGhvdG8xLmpwZycsXG4gICAqICAgJ2ltYWdlcy9waG90bzIuanBnJ1xuICAgKiBdKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBkZWxldGVNdWx0aXBsZShwYXRoczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwYXRocy5tYXAoKHBhdGgpID0+IHRoaXMuZGVsZXRlKHBhdGgpKSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTElTVFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTGlzdGEgYXJjaGl2b3MgZW4gdW4gZGlyZWN0b3Jpby5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBkaXJlY3RvcmlvXG4gICAqIEByZXR1cm5zIExpc3RhIGRlIHJ1dGFzIGRlIGFyY2hpdm9zXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS5saXN0KCdpbWFnZXMvJyk7XG4gICAqIGNvbnNvbGUubG9nKHJlc3VsdC5pdGVtcyk7IC8vIFsnaW1hZ2VzL3Bob3RvMS5qcGcnLCAnaW1hZ2VzL3Bob3RvMi5qcGcnXVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGxpc3QocGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlTGlzdFJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsaXN0QWxsKHN0b3JhZ2VSZWYpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5mdWxsUGF0aCksXG4gICAgICAgIG5leHRQYWdlVG9rZW46IHVuZGVmaW5lZCwgLy8gbGlzdEFsbCBubyBzb3BvcnRhIHBhZ2luYWNpw7NuXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2VuZXJhIHVuIG5vbWJyZSBkZSBhcmNoaXZvIMO6bmljbyBjb24gdGltZXN0YW1wLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxOYW1lIC0gTm9tYnJlIG9yaWdpbmFsIGRlbCBhcmNoaXZvXG4gICAqIEBwYXJhbSBwcmVmaXggLSBQcmVmaWpvIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIE5vbWJyZSDDum5pY29cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB1bmlxdWVOYW1lID0gc3RvcmFnZS5nZW5lcmF0ZUZpbGVOYW1lKCdwaG90by5qcGcnLCAndXNlcjEyMycpO1xuICAgKiAvLyA9PiAndXNlcjEyM18xNzAzMDkxMjM0NTY3X3Bob3RvLmpwZydcbiAgICogYGBgXG4gICAqL1xuICBnZW5lcmF0ZUZpbGVOYW1lKG9yaWdpbmFsTmFtZTogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2FuaXRpemVkTmFtZSA9IG9yaWdpbmFsTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOS4tXS9nLCAnXycpO1xuXG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH1fJHt0aW1lc3RhbXB9XyR7c2FuaXRpemVkTmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGltZXN0YW1wfV8ke3Nhbml0aXplZE5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmEgdW5hIHJ1dGEgw7puaWNhIHBhcmEgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdG9yeSAtIERpcmVjdG9yaW8gYmFzZVxuICAgKiBAcGFyYW0gb3JpZ2luYWxOYW1lIC0gTm9tYnJlIG9yaWdpbmFsXG4gICAqIEBwYXJhbSBwcmVmaXggLSBQcmVmaWpvIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJ1dGEgY29tcGxldGEgw7puaWNhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcGF0aCA9IHN0b3JhZ2UuZ2VuZXJhdGVQYXRoKCd1cGxvYWRzJywgJ3Bob3RvLmpwZycsICd1c2VyMTIzJyk7XG4gICAqIC8vID0+ICd1cGxvYWRzL3VzZXIxMjNfMTcwMzA5MTIzNDU2N19waG90by5qcGcnXG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuZXJhdGVQYXRoKGRpcmVjdG9yeTogc3RyaW5nLCBvcmlnaW5hbE5hbWU6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZ2VuZXJhdGVGaWxlTmFtZShvcmlnaW5hbE5hbWUsIHByZWZpeCk7XG4gICAgY29uc3QgY2xlYW5EaXIgPSBkaXJlY3RvcnkucmVwbGFjZSgvXFwvKyQvLCAnJyk7IC8vIFJlbW92ZXIgLyBmaW5hbFxuICAgIHJldHVybiBgJHtjbGVhbkRpcn0vJHtmaWxlTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgZXh0ZW5zacOzbiBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZW5hbWUgLSBOb21icmUgZGVsIGFyY2hpdm9cbiAgICogQHJldHVybnMgRXh0ZW5zacOzbiAoc2luIGVsIHB1bnRvKVxuICAgKi9cbiAgZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gZmlsZW5hbWUuc3BsaXQoJy4nKTtcbiAgICByZXR1cm4gcGFydHMubGVuZ3RoID4gMSA/IHBhcnRzLnBvcCgpIS50b0xvd2VyQ2FzZSgpIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gYXJjaGl2byBlcyB1bmEgaW1hZ2VuIGJhc8OhbmRvc2UgZW4gc3UgZXh0ZW5zacOzbi5cbiAgICovXG4gIGlzSW1hZ2UoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dCA9IHRoaXMuZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lKTtcbiAgICByZXR1cm4gWydqcGcnLCAnanBlZycsICdwbmcnLCAnZ2lmJywgJ3dlYnAnLCAnc3ZnJywgJ2JtcCddLmluY2x1ZGVzKGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gYXJjaGl2byBlcyB1biBkb2N1bWVudG8uXG4gICAqL1xuICBpc0RvY3VtZW50KGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEV4dGVuc2lvbihmaWxlbmFtZSk7XG4gICAgcmV0dXJuIFsncGRmJywgJ2RvYycsICdkb2N4JywgJ3hscycsICd4bHN4JywgJ3BwdCcsICdwcHR4JywgJ3R4dCddLmluY2x1ZGVzKGV4dCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVNFUiBBVkFUQVIgSEVMUEVSU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ29uc3RydXllIGxhIFVSTCBkZSBhdmF0YXIgZGUgdW4gdXN1YXJpby5cbiAgICpcbiAgICogTG9zIGF2YXRhcmVzIHNlIGFsbWFjZW5hbiBlbiBwYXRocyBwcmVkZWNpYmxlczogYHVzZXJzL3t1c2VySWR9L2F2YXRhci5qcGdgXG4gICAqIEVzdG8gcGVybWl0ZSBxdWUgY3VhbHF1aWVyIGFwcCBwdWVkYSBtb3N0cmFyIGF2YXRhcmVzIHNpbiBwZWRpciBsYSBVUkwgYWwgYmFja2VuZCxcbiAgICogc29sbyBuZWNlc2l0YSBlbCB1c2VySWQuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VySWQgLSBJRCBkZWwgdXN1YXJpbyAoVUxJRClcbiAgICogQHBhcmFtIHR5cGUgLSAnYXZhdGFyJyBwYXJhIGltYWdlbiBjb21wbGV0YSwgJ3RodW1iJyBwYXJhIHRodW1ibmFpbFxuICAgKiBAcmV0dXJucyBVUkwgZGlyZWN0YSBkZSBGaXJlYmFzZSBTdG9yYWdlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gTW9zdHJhciBhdmF0YXIgZGUgY3VhbHF1aWVyIHVzdWFyaW9cbiAgICogY29uc3QgYXZhdGFyVXJsID0gc3RvcmFnZS5nZXRVc2VyQXZhdGFyVXJsKCcwMUFCQ0QuLi4nKTtcbiAgICogY29uc3QgdGh1bWJVcmwgPSBzdG9yYWdlLmdldFVzZXJBdmF0YXJVcmwoJzAxQUJDRC4uLicsICd0aHVtYicpO1xuICAgKlxuICAgKiAvLyBDb24gY2FjaGUtYnVzdGluZ1xuICAgKiBjb25zdCBmcmVzaFVybCA9IHN0b3JhZ2UuZ2V0VXNlckF2YXRhclVybCh1c2VySWQpICsgYCZ0PSR7RGF0ZS5ub3coKX1gO1xuICAgKiBgYGBcbiAgICovXG4gIGdldFVzZXJBdmF0YXJVcmwodXNlcklkOiBzdHJpbmcsIHR5cGU6ICdhdmF0YXInIHwgJ3RodW1iJyA9ICdhdmF0YXInKTogc3RyaW5nIHtcbiAgICBjb25zdCBidWNrZXQgPSB0aGlzLmNvbmZpZz8uZmlyZWJhc2U/LnN0b3JhZ2VCdWNrZXQgfHwgJ215dmFsdGVjaC1kZXYuZmlyZWJhc2VzdG9yYWdlLmFwcCc7XG4gICAgY29uc3QgcGF0aCA9IGB1c2Vycy8ke3VzZXJJZH0vJHt0eXBlfS5qcGdgO1xuICAgIHJldHVybiBgaHR0cHM6Ly9maXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vdjAvYi8ke2J1Y2tldH0vby8ke2VuY29kZVVSSUNvbXBvbmVudChwYXRoKX0/YWx0PW1lZGlhYDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQUklWQURPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTWFwZWEgZWwgZXN0YWRvIGRlIGxhIHRhcmVhIGRlIHVwbG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBUYXNrU3RhdGUoc3RhdGU6IHN0cmluZyk6IFVwbG9hZFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlICdydW5uaW5nJzpcbiAgICAgICAgcmV0dXJuICdydW5uaW5nJztcbiAgICAgIGNhc2UgJ3BhdXNlZCc6XG4gICAgICAgIHJldHVybiAncGF1c2VkJztcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgY2FzZSAnY2FuY2VsZWQnOlxuICAgICAgICByZXR1cm4gJ2NhbmNlbGVkJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3J1bm5pbmcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252aWVydGUgZXJyb3JlcyBkZSBTdG9yYWdlIGEgbWVuc2FqZXMgZW4gZXNwYcOxb2xcbiAgICovXG4gIHByaXZhdGUgZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgY29kZSA9IChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZTtcblxuICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2Uvb2JqZWN0LW5vdC1mb3VuZCc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIG5vIGV4aXN0ZSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvdW5hdXRob3JpemVkJzpcbiAgICAgICAgICByZXR1cm4gJ05vIHRpZW5lcyBwZXJtaXNvIHBhcmEgYWNjZWRlciBhIGVzdGUgYXJjaGl2byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvY2FuY2VsZWQnOlxuICAgICAgICAgIHJldHVybiAnTGEgb3BlcmFjacOzbiBmdWUgY2FuY2VsYWRhJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9xdW90YS1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdTZSBoYSBleGNlZGlkbyBsYSBjdW90YSBkZSBhbG1hY2VuYW1pZW50byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1jaGVja3N1bSc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIGVzdMOhIGNvcnJ1cHRvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9yZXRyeS1saW1pdC1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdFcnJvciBkZSBjb25leGnDs24uIEludGVudGEgZGUgbnVldm8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtdXJsJzpcbiAgICAgICAgICByZXR1cm4gJ1VSTCBkZSBhcmNoaXZvIGludsOhbGlkYSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1hcmd1bWVudCc6XG4gICAgICAgICAgcmV0dXJuICdBcmd1bWVudG8gaW52w6FsaWRvJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXJyb3IubWVzc2FnZSB8fCAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICB9XG59XG4iXX0=
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxXQUFXLEVBQ1gsT0FBTyxFQUNQLEdBQUcsRUFFSCxvQkFBb0IsR0FHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBR25EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRjVCLFdBQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU5QixDQUFDO0lBRXhDOzs7Ozs7O09BT0c7SUFDSyxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsVUFBVSxHQUFHLEtBQUs7UUFDeEQsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuRCxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxTQUFTO0lBQ1QsOEVBQThFO0lBRTlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JHO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxJQUFpQixFQUFFLFFBQTBC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SSxLQUEyQixDQUFDLElBQUksQ0FBQztZQUUvQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNiLEtBQUssMEJBQTBCO29CQUM3QixPQUFPLHNCQUFzQixDQUFDO2dCQUNoQyxLQUFLLHNCQUFzQjtvQkFDekIsT0FBTywrQ0FBK0MsQ0FBQztnQkFDekQsS0FBSyxrQkFBa0I7b0JBQ3JCLE9BQU8sNEJBQTRCLENBQUM7Z0JBQ3RDLEtBQUssd0JBQXdCO29CQUMzQixPQUFPLDJDQUEyQyxDQUFDO2dCQUNyRCxLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTywwQkFBMEIsQ0FBQztnQkFDcEMsS0FBSyw4QkFBOEI7b0JBQ2pDLE9BQU8scUNBQXFDLENBQUM7Z0JBQy9DLEtBQUsscUJBQXFCO29CQUN4QixPQUFPLHlCQUF5QixDQUFDO2dCQUNuQyxLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTyxvQkFBb0IsQ0FBQztnQkFDOUI7b0JBQ0UsT0FBTyxLQUFLLENBQUMsT0FBTyxJQUFJLHFDQUFxQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxxQ0FBcUMsQ0FBQztJQUMvQyxDQUFDOytHQWhkVSxjQUFjO21IQUFkLGNBQWMsY0FERCxNQUFNOzs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0b3JhZ2UgU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIHBhcmEgb3BlcmFjaW9uZXMgZGUgRmlyZWJhc2UgU3RvcmFnZS5cbiAqIFNvcG9ydGEgdXBsb2FkIGNvbiB0cmFja2luZyBkZSBwcm9ncmVzbywgZG93bmxvYWQgeSBnZXN0acOzbiBkZSBhcmNoaXZvcy5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlbGV0ZU9iamVjdCxcbiAgZ2V0RG93bmxvYWRVUkwsXG4gIGdldE1ldGFkYXRhLFxuICBsaXN0QWxsLFxuICByZWYsXG4gIFN0b3JhZ2UsXG4gIHVwbG9hZEJ5dGVzUmVzdW1hYmxlLFxuICBVcGxvYWRNZXRhZGF0YSxcbiAgVXBsb2FkVGFza1NuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmFnZUxpc3RSZXN1bHQsIFN0b3JhZ2VNZXRhZGF0YSwgVXBsb2FkUHJvZ3Jlc3MsIFVwbG9hZFJlc3VsdCwgVXBsb2FkU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIEZpcmViYXNlIFN0b3JhZ2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgc3RvcmFnZSA9IGluamVjdChTdG9yYWdlU2VydmljZSk7XG4gKlxuICogICB1cGxvYWRQcm9ncmVzcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICogICBkb3dubG9hZFVybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAqXG4gKiAgIGFzeW5jIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xuICogICAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XG4gKiAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gKlxuICogICAgIC8vIFVwbG9hZCBjb24gcHJvZ3Jlc29cbiAqICAgICB0aGlzLnN0b3JhZ2UudXBsb2FkKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWAsIGZpbGUpLnN1YnNjcmliZSh7XG4gKiAgICAgICBuZXh0OiAocHJvZ3Jlc3MpID0+IHRoaXMudXBsb2FkUHJvZ3Jlc3Muc2V0KHByb2dyZXNzLnBlcmNlbnRhZ2UpLFxuICogICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAqICAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldERvd25sb2FkVXJsKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWApO1xuICogICAgICAgICB0aGlzLmRvd25sb2FkVXJsLnNldCh1cmwpO1xuICogICAgICAgfVxuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSkge31cblxuICAvKipcbiAgICogUHJlZmlqYSBlbCBwYXRoIGRlIHN0b3JhZ2UgY29uIGVsIGFwcElkIHNpIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICAgKiBTaSBubyBoYXkgYXBwSWQgbyBza2lwUHJlZml4IGVzIHRydWUsIHJldG9ybmEgZWwgcGF0aCBzaW4gbW9kaWZpY2FyLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgb3JpZ2luYWxcbiAgICogQHBhcmFtIHNraXBQcmVmaXggLSBTaSBlcyB0cnVlLCBubyBhcGxpY2EgZWwgcHJlZml4ICjDunRpbCBwYXJhIHBhdGhzIGNvbXBhcnRpZG9zIGNvbW8gYXZhdGFyZXMpXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBwcmVmaXhTdG9yYWdlUGF0aChwYXRoOiBzdHJpbmcsIHNraXBQcmVmaXggPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgaWYgKHNraXBQcmVmaXggfHwgIXRoaXMuY29uZmlnPy5hcHBJZCkgcmV0dXJuIHBhdGg7XG4gICAgcmV0dXJuIGAke3RoaXMuY29uZmlnLmFwcElkfS8ke3BhdGh9YDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVUExPQURcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFN1YmUgdW4gYXJjaGl2byBjb24gdHJhY2tpbmcgZGUgcHJvZ3Jlc28uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlIGRvbmRlIGd1YXJkYXIgZWwgYXJjaGl2b1xuICAgKiBAcGFyYW0gZmlsZSAtIEFyY2hpdm8gYSBzdWJpciAoRmlsZSBvIEJsb2IpXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsIChjb250ZW50VHlwZSwgY3VzdG9tTWV0YWRhdGEpXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgcXVlIGVtaXRlIGVsIHByb2dyZXNvIHkgY29tcGxldGEgY3VhbmRvIHRlcm1pbmFcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBVcGxvYWQgYsOhc2ljb1xuICAgKiBzdG9yYWdlLnVwbG9hZCgnaW1hZ2VzL3Bob3RvLmpwZycsIGZpbGUpLnN1YnNjcmliZSh7XG4gICAqICAgbmV4dDogKHByb2dyZXNzKSA9PiBjb25zb2xlLmxvZyhgJHtwcm9ncmVzcy5wZXJjZW50YWdlfSVgKSxcbiAgICogICBjb21wbGV0ZTogKCkgPT4gY29uc29sZS5sb2coJ1VwbG9hZCBjb21wbGV0YWRvJylcbiAgICogfSk7XG4gICAqXG4gICAqIC8vIENvbiBtZXRhZGF0YVxuICAgKiBzdG9yYWdlLnVwbG9hZCgnZG9jcy9yZXBvcnQucGRmJywgZmlsZSwge1xuICAgKiAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vcGRmJyxcbiAgICogICBjdXN0b21NZXRhZGF0YTogeyB1cGxvYWRlZEJ5OiAndXNlcjEyMycgfVxuICAgKiB9KS5zdWJzY3JpYmUoLi4uKTtcbiAgICogYGBgXG4gICAqL1xuICB1cGxvYWQocGF0aDogc3RyaW5nLCBmaWxlOiBGaWxlIHwgQmxvYiwgbWV0YWRhdGE/OiBTdG9yYWdlTWV0YWRhdGEpOiBPYnNlcnZhYmxlPFVwbG9hZFByb2dyZXNzPiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoLCBtZXRhZGF0YT8uc2tpcFByZWZpeCk7XG4gICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgY29uc3QgdXBsb2FkTWV0YWRhdGE6IFVwbG9hZE1ldGFkYXRhID0ge1xuICAgICAgY29udGVudFR5cGU6IG1ldGFkYXRhPy5jb250ZW50VHlwZSB8fCAoZmlsZSBpbnN0YW5jZW9mIEZpbGUgPyBmaWxlLnR5cGUgOiB1bmRlZmluZWQpLFxuICAgICAgY3VzdG9tTWV0YWRhdGE6IG1ldGFkYXRhPy5jdXN0b21NZXRhZGF0YSxcbiAgICAgIGNhY2hlQ29udHJvbDogbWV0YWRhdGE/LmNhY2hlQ29udHJvbCxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFzayA9IHVwbG9hZEJ5dGVzUmVzdW1hYmxlKHN0b3JhZ2VSZWYsIGZpbGUsIHVwbG9hZE1ldGFkYXRhKTtcbiAgICBjb25zdCBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVwbG9hZFByb2dyZXNzPih7XG4gICAgICBieXRlc1RyYW5zZmVycmVkOiAwLFxuICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgIHN0YXRlOiAncnVubmluZycsXG4gICAgfSk7XG5cbiAgICB0YXNrLm9uKFxuICAgICAgJ3N0YXRlX2NoYW5nZWQnLFxuICAgICAgKHNuYXBzaG90OiBVcGxvYWRUYXNrU25hcHNob3QpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IHNuYXBzaG90LmJ5dGVzVHJhbnNmZXJyZWQsXG4gICAgICAgICAgdG90YWxCeXRlczogc25hcHNob3QudG90YWxCeXRlcyxcbiAgICAgICAgICBwZXJjZW50YWdlOiBNYXRoLnJvdW5kKChzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkIC8gc25hcHNob3QudG90YWxCeXRlcykgKiAxMDApLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLm1hcFRhc2tTdGF0ZShzbmFwc2hvdC5zdGF0ZSksXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBwcm9ncmVzcyQubmV4dCh7XG4gICAgICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICBzdGF0ZTogJ2Vycm9yJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2dyZXNzJC5lcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IGZpbGUuc2l6ZSxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxuICAgICAgICAgIHN0YXRlOiAnc3VjY2VzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9ncmVzcyQuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHByb2dyZXNzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8geSByZXRvcm5hIGxhIFVSTCBkZSBkZXNjYXJnYSBhbCBjb21wbGV0YXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkIGNvbiBVUkwgZGUgZGVzY2FyZ2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLnVwbG9hZEFuZEdldFVybCgnYXZhdGFycy91c2VyMTIzLmpwZycsIGZpbGUpO1xuICAgKiBjb25zb2xlLmxvZygnVVJMOicsIHJlc3VsdC5kb3dubG9hZFVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkQW5kR2V0VXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlIHwgQmxvYixcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCwgbWV0YWRhdGE/LnNraXBQcmVmaXgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnVwbG9hZChwYXRoLCBmaWxlLCBtZXRhZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkTWV0YWRhdGEgPSBhd2FpdCBnZXRNZXRhZGF0YShzdG9yYWdlUmVmKTtcblxuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIGRvd25sb2FkVXJsLFxuICAgICAgICAgICAgICBmdWxsUGF0aDogc3RvcmVkTWV0YWRhdGEuZnVsbFBhdGgsXG4gICAgICAgICAgICAgIG5hbWU6IHN0b3JlZE1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgIHNpemU6IHN0b3JlZE1ldGFkYXRhLnNpemUsXG4gICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBzdG9yZWRNZXRhZGF0YS5jb250ZW50VHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyxcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IHN0b3JlZE1ldGFkYXRhLmN1c3RvbU1ldGFkYXRhIHx8IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YmUgdW4gYXJjaGl2byBkZXNkZSB1bmEgRGF0YSBVUkwgKGJhc2U2NCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBkYXRhVXJsIC0gRGF0YSBVUkwgKGVqOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LC4uLicpXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRGVzZGUgY2FudmFzXG4gICAqIGNvbnN0IGRhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS51cGxvYWRGcm9tRGF0YVVybCgnaW1hZ2VzL2RyYXdpbmcucG5nJywgZGF0YVVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkRnJvbURhdGFVcmwoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGRhdGFVcmw6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIC8vIEV4dHJhZXIgY29udGVudCB0eXBlIHkgZGF0b3MgYmFzZTY0XG4gICAgY29uc3QgbWF0Y2hlcyA9IGRhdGFVcmwubWF0Y2goL15kYXRhOihbXjtdKyk7YmFzZTY0LCguKykkLyk7XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgVVJMIGludsOhbGlkYScpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWF0Y2hlc1sxXTtcbiAgICBjb25zdCBiYXNlNjREYXRhID0gbWF0Y2hlc1syXTtcblxuICAgIC8vIENvbnZlcnRpciBiYXNlNjQgYSBCbG9iXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkQW5kR2V0VXJsKHBhdGgsIGJsb2IsIHtcbiAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgLi4ubWV0YWRhdGEsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRE9XTkxPQURcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgVVJMIGRlIGRlc2NhcmdhIGRlIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBlbiBTdG9yYWdlXG4gICAqIEByZXR1cm5zIFVSTCBkZSBkZXNjYXJnYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHVybCA9IGF3YWl0IHN0b3JhZ2UuZ2V0RG93bmxvYWRVcmwoJ2ltYWdlcy9waG90by5qcGcnKTtcbiAgICogLy8gVXNhciBlbiA8aW1nIFtzcmNdPVwidXJsXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0RG93bmxvYWRVcmwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgcmV0dXJuIGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBtZXRhZGF0YSBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm9cbiAgICogQHJldHVybnMgTWV0YWRhdGEgZGVsIGFyY2hpdm9cbiAgICovXG4gIGFzeW5jIGdldE1ldGFkYXRhKHBhdGg6IHN0cmluZyk6IFByb21pc2U8U3RvcmFnZU1ldGFkYXRhICYgeyBzaXplOiBudW1iZXI7IG5hbWU6IHN0cmluZyB9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgZ2V0TWV0YWRhdGEoc3RvcmFnZVJlZik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50VHlwZTogbWV0YWRhdGEuY29udGVudFR5cGUsXG4gICAgICAgIGN1c3RvbU1ldGFkYXRhOiBtZXRhZGF0YS5jdXN0b21NZXRhZGF0YSxcbiAgICAgICAgY2FjaGVDb250cm9sOiBtZXRhZGF0YS5jYWNoZUNvbnRyb2wsXG4gICAgICAgIHNpemU6IG1ldGFkYXRhLnNpemUsXG4gICAgICAgIG5hbWU6IG1ldGFkYXRhLm5hbWUsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gREVMRVRFXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBhIGVsaW1pbmFyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgc3RvcmFnZS5kZWxldGUoJ2ltYWdlcy9vbGQtcGhvdG8uanBnJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBhd2FpdCBkZWxldGVPYmplY3Qoc3RvcmFnZVJlZik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIG3Dumx0aXBsZXMgYXJjaGl2b3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRocyAtIEFycmF5IGRlIHJ1dGFzIGEgZWxpbWluYXJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBzdG9yYWdlLmRlbGV0ZU11bHRpcGxlKFtcbiAgICogICAnaW1hZ2VzL3Bob3RvMS5qcGcnLFxuICAgKiAgICdpbWFnZXMvcGhvdG8yLmpwZydcbiAgICogXSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTXVsdGlwbGUocGF0aHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocGF0aHMubWFwKChwYXRoKSA9PiB0aGlzLmRlbGV0ZShwYXRoKSkpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExJU1RcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIExpc3RhIGFyY2hpdm9zIGVuIHVuIGRpcmVjdG9yaW8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgZGlyZWN0b3Jpb1xuICAgKiBAcmV0dXJucyBMaXN0YSBkZSBydXRhcyBkZSBhcmNoaXZvc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JhZ2UubGlzdCgnaW1hZ2VzLycpO1xuICAgKiBjb25zb2xlLmxvZyhyZXN1bHQuaXRlbXMpOyAvLyBbJ2ltYWdlcy9waG90bzEuanBnJywgJ2ltYWdlcy9waG90bzIuanBnJ11cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBsaXN0KHBhdGg6IHN0cmluZyk6IFByb21pc2U8U3RvcmFnZUxpc3RSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGlzdEFsbChzdG9yYWdlUmVmKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZnVsbFBhdGgpLFxuICAgICAgICBuZXh0UGFnZVRva2VuOiB1bmRlZmluZWQsIC8vIGxpc3RBbGwgbm8gc29wb3J0YSBwYWdpbmFjacOzblxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVUSUxJREFERVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdlbmVyYSB1biBub21icmUgZGUgYXJjaGl2byDDum5pY28gY29uIHRpbWVzdGFtcC5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbCBkZWwgYXJjaGl2b1xuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBOb21icmUgw7puaWNvXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdW5pcXVlTmFtZSA9IHN0b3JhZ2UuZ2VuZXJhdGVGaWxlTmFtZSgncGhvdG8uanBnJywgJ3VzZXIxMjMnKTtcbiAgICogLy8gPT4gJ3VzZXIxMjNfMTcwMzA5MTIzNDU2N19waG90by5qcGcnXG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuZXJhdGVGaWxlTmFtZShvcmlnaW5hbE5hbWU6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNhbml0aXplZE5hbWUgPSBvcmlnaW5hbE5hbWUucmVwbGFjZSgvW15hLXpBLVowLTkuLV0vZywgJ18nKTtcblxuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7dGltZXN0YW1wfV8ke3Nhbml0aXplZE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RpbWVzdGFtcH1fJHtzYW5pdGl6ZWROYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhIHVuYSBydXRhIMO6bmljYSBwYXJhIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgLSBEaXJlY3RvcmlvIGJhc2VcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbFxuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSdXRhIGNvbXBsZXRhIMO6bmljYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBhdGggPSBzdG9yYWdlLmdlbmVyYXRlUGF0aCgndXBsb2FkcycsICdwaG90by5qcGcnLCAndXNlcjEyMycpO1xuICAgKiAvLyA9PiAndXBsb2Fkcy91c2VyMTIzXzE3MDMwOTEyMzQ1NjdfcGhvdG8uanBnJ1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmVyYXRlUGF0aChkaXJlY3Rvcnk6IHN0cmluZywgb3JpZ2luYWxOYW1lOiBzdHJpbmcsIHByZWZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmdlbmVyYXRlRmlsZU5hbWUob3JpZ2luYWxOYW1lLCBwcmVmaXgpO1xuICAgIGNvbnN0IGNsZWFuRGlyID0gZGlyZWN0b3J5LnJlcGxhY2UoL1xcLyskLywgJycpOyAvLyBSZW1vdmVyIC8gZmluYWxcbiAgICByZXR1cm4gYCR7Y2xlYW5EaXJ9LyR7ZmlsZU5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGV4dGVuc2nDs24gZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIC0gTm9tYnJlIGRlbCBhcmNoaXZvXG4gICAqIEByZXR1cm5zIEV4dGVuc2nDs24gKHNpbiBlbCBwdW50bylcbiAgICovXG4gIGdldEV4dGVuc2lvbihmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IGZpbGVuYW1lLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0cy5wb3AoKSEudG9Mb3dlckNhc2UoKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW5hIGltYWdlbiBiYXPDoW5kb3NlIGVuIHN1IGV4dGVuc2nDs24uXG4gICAqL1xuICBpc0ltYWdlKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEV4dGVuc2lvbihmaWxlbmFtZSk7XG4gICAgcmV0dXJuIFsnanBnJywgJ2pwZWcnLCAncG5nJywgJ2dpZicsICd3ZWJwJywgJ3N2ZycsICdibXAnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW4gZG9jdW1lbnRvLlxuICAgKi9cbiAgaXNEb2N1bWVudChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXh0ID0gdGhpcy5nZXRFeHRlbnNpb24oZmlsZW5hbWUpO1xuICAgIHJldHVybiBbJ3BkZicsICdkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICd0eHQnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVTRVIgQVZBVEFSIEhFTFBFUlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIENvbnN0cnV5ZSBsYSBVUkwgZGUgYXZhdGFyIGRlIHVuIHVzdWFyaW8uXG4gICAqXG4gICAqIExvcyBhdmF0YXJlcyBzZSBhbG1hY2VuYW4gZW4gcGF0aHMgcHJlZGVjaWJsZXM6IGB1c2Vycy97dXNlcklkfS9hdmF0YXIuanBnYFxuICAgKiBFc3RvIHBlcm1pdGUgcXVlIGN1YWxxdWllciBhcHAgcHVlZGEgbW9zdHJhciBhdmF0YXJlcyBzaW4gcGVkaXIgbGEgVVJMIGFsIGJhY2tlbmQsXG4gICAqIHNvbG8gbmVjZXNpdGEgZWwgdXNlcklkLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIC0gSUQgZGVsIHVzdWFyaW8gKFVMSUQpXG4gICAqIEBwYXJhbSB0eXBlIC0gJ2F2YXRhcicgcGFyYSBpbWFnZW4gY29tcGxldGEsICd0aHVtYicgcGFyYSB0aHVtYm5haWxcbiAgICogQHJldHVybnMgVVJMIGRpcmVjdGEgZGUgRmlyZWJhc2UgU3RvcmFnZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIE1vc3RyYXIgYXZhdGFyIGRlIGN1YWxxdWllciB1c3VhcmlvXG4gICAqIGNvbnN0IGF2YXRhclVybCA9IHN0b3JhZ2UuZ2V0VXNlckF2YXRhclVybCgnMDFBQkNELi4uJyk7XG4gICAqIGNvbnN0IHRodW1iVXJsID0gc3RvcmFnZS5nZXRVc2VyQXZhdGFyVXJsKCcwMUFCQ0QuLi4nLCAndGh1bWInKTtcbiAgICpcbiAgICogLy8gQ29uIGNhY2hlLWJ1c3RpbmdcbiAgICogY29uc3QgZnJlc2hVcmwgPSBzdG9yYWdlLmdldFVzZXJBdmF0YXJVcmwodXNlcklkKSArIGAmdD0ke0RhdGUubm93KCl9YDtcbiAgICogYGBgXG4gICAqL1xuICBnZXRVc2VyQXZhdGFyVXJsKHVzZXJJZDogc3RyaW5nLCB0eXBlOiAnYXZhdGFyJyB8ICd0aHVtYicgPSAnYXZhdGFyJyk6IHN0cmluZyB7XG4gICAgY29uc3QgYnVja2V0ID0gdGhpcy5jb25maWc/LmZpcmViYXNlPy5zdG9yYWdlQnVja2V0IHx8ICdteXZhbHRlY2gtZGV2LmZpcmViYXNlc3RvcmFnZS5hcHAnO1xuICAgIGNvbnN0IHBhdGggPSBgdXNlcnMvJHt1c2VySWR9LyR7dHlwZX0uanBnYDtcbiAgICByZXR1cm4gYGh0dHBzOi8vZmlyZWJhc2VzdG9yYWdlLmdvb2dsZWFwaXMuY29tL3YwL2IvJHtidWNrZXR9L28vJHtlbmNvZGVVUklDb21wb25lbnQocGF0aCl9P2FsdD1tZWRpYWA7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTcOJVE9ET1MgUFJJVkFET1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE1hcGVhIGVsIGVzdGFkbyBkZSBsYSB0YXJlYSBkZSB1cGxvYWRcbiAgICovXG4gIHByaXZhdGUgbWFwVGFza1N0YXRlKHN0YXRlOiBzdHJpbmcpOiBVcGxvYWRTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSAncnVubmluZyc6XG4gICAgICAgIHJldHVybiAncnVubmluZyc7XG4gICAgICBjYXNlICdwYXVzZWQnOlxuICAgICAgICByZXR1cm4gJ3BhdXNlZCc7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgIGNhc2UgJ2NhbmNlbGVkJzpcbiAgICAgICAgcmV0dXJuICdjYW5jZWxlZCc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdydW5uaW5nJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmllcnRlIGVycm9yZXMgZGUgU3RvcmFnZSBhIG1lbnNhamVzIGVuIGVzcGHDsW9sXG4gICAqL1xuICBwcml2YXRlIGdldEVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSAoZXJyb3IgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGU7XG5cbiAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICBjYXNlICdzdG9yYWdlL29iamVjdC1ub3QtZm91bmQnOlxuICAgICAgICAgIHJldHVybiAnRWwgYXJjaGl2byBubyBleGlzdGUnO1xuICAgICAgICBjYXNlICdzdG9yYWdlL3VuYXV0aG9yaXplZCc6XG4gICAgICAgICAgcmV0dXJuICdObyB0aWVuZXMgcGVybWlzbyBwYXJhIGFjY2VkZXIgYSBlc3RlIGFyY2hpdm8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2NhbmNlbGVkJzpcbiAgICAgICAgICByZXR1cm4gJ0xhIG9wZXJhY2nDs24gZnVlIGNhbmNlbGFkYSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvcXVvdGEtZXhjZWVkZWQnOlxuICAgICAgICAgIHJldHVybiAnU2UgaGEgZXhjZWRpZG8gbGEgY3VvdGEgZGUgYWxtYWNlbmFtaWVudG8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtY2hlY2tzdW0nOlxuICAgICAgICAgIHJldHVybiAnRWwgYXJjaGl2byBlc3TDoSBjb3JydXB0byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvcmV0cnktbGltaXQtZXhjZWVkZWQnOlxuICAgICAgICAgIHJldHVybiAnRXJyb3IgZGUgY29uZXhpw7NuLiBJbnRlbnRhIGRlIG51ZXZvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9pbnZhbGlkLXVybCc6XG4gICAgICAgICAgcmV0dXJuICdVUkwgZGUgYXJjaGl2byBpbnbDoWxpZGEnO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtYXJndW1lbnQnOlxuICAgICAgICAgIHJldHVybiAnQXJndW1lbnRvIGludsOhbGlkbyc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UgfHwgJ0Vycm9yIGRlIGFsbWFjZW5hbWllbnRvIGRlc2Nvbm9jaWRvJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJ0Vycm9yIGRlIGFsbWFjZW5hbWllbnRvIGRlc2Nvbm9jaWRvJztcbiAgfVxufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.684';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC42ODQnO1xuIl19
5
+ export const VERSION = '2.0.688';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC42ODgnO1xuIl19