wacom 18.2.6 → 18.2.7

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.
@@ -51,6 +51,7 @@ export class CrudService extends BaseService {
51
51
  this._store.getJson('docs_' + this._config.name, (docs) => {
52
52
  if (Array.isArray(docs)) {
53
53
  this._docs.push(...docs);
54
+ this._filterDocuments();
54
55
  }
55
56
  });
56
57
  }
@@ -151,6 +152,9 @@ export class CrudService extends BaseService {
151
152
  if (options.callback) {
152
153
  options.callback(resp);
153
154
  }
155
+ if (typeof config.page !== 'number') {
156
+ this._filterDocuments();
157
+ }
154
158
  },
155
159
  error: (err) => {
156
160
  if (options.errCallback) {
@@ -345,7 +349,7 @@ export class CrudService extends BaseService {
345
349
  obs.subscribe({
346
350
  next: (resp) => {
347
351
  if (resp) {
348
- this._docs = this._docs.filter((d) => this._id(d) !== this._id(doc));
352
+ this._docs.splice(this._docs.findIndex((d) => this._id(d) !== this._id(doc)), 1);
349
353
  this.setDocs();
350
354
  this._filterDocuments();
351
355
  if (options.callback) {
@@ -462,4 +466,4 @@ export class CrudService extends BaseService {
462
466
  }
463
467
  }
464
468
  }
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBb0I3Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBZ0IsV0FFcEIsU0FBUSxXQUFXO0lBK0JYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFsQ1Q7O09BRUc7SUFDSyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRXZCOztPQUVHO0lBQ0ssS0FBSyxHQUFlLEVBQUUsQ0FBQztJQUUvQjs7T0FFRztJQUNLLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFFdEI7O09BRUc7SUFDSywyQkFBMkIsR0FBbUIsRUFBRSxDQUFDO0lBRXpEOzs7Ozs7OztPQVFHO0lBQ0gsWUFDUyxPQUE2QixFQUM3QixLQUFrQixFQUNsQixNQUFvQixFQUNwQixNQUFvQixFQUNwQixLQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQU5BLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFJMUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUUvQixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMs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QUssTUFBTSxRQUFRLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ3BDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNGLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEQsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssR0FBRyxDQUFDLEdBQWE7UUFDeEIsT0FBUSxHQUEwQyxDQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQ3pCLEVBQUUsUUFBUSxFQUFZLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3ZCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDekQsUUFBUSxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZVNlcnZpY2UgfSBmcm9tICcuL2NvcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IENydWREb2N1bWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3J1ZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBDcnVkT3B0aW9uczxEb2N1bWVudD4ge1xyXG5cdG5hbWU/OiBzdHJpbmc7XHJcblx0YWxlcnQ/OiBzdHJpbmc7XHJcblx0Y2FsbGJhY2s/OiAocmVzcDogRG9jdW1lbnQgfCBEb2N1bWVudFtdKSA9PiB2b2lkO1xyXG5cdGVyckNhbGxiYWNrPzogKHJlc3A6IHVua25vd24pID0+IHZvaWQ7XHJcbn1cclxuXHJcbmludGVyZmFjZSBDcnVkQ29uZmlnPERvY3VtZW50PiB7XHJcblx0bmFtZTogc3RyaW5nO1xyXG5cdF9pZD86IHN0cmluZztcclxuXHRyZXBsYWNlPzogKGRvYzogRG9jdW1lbnQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmludGVyZmFjZSBHZXRDb25maWcge1xyXG5cdHBhZ2U/OiBudW1iZXI7XHJcblx0cGVyUGFnZT86IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyBhIENSVUQgKENyZWF0ZSwgUmVhZCwgVXBkYXRlLCBEZWxldGUpIHNlcnZpY2UuXHJcbiAqXHJcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3IgbWFuYWdpbmcgZG9jdW1lbnRzLCBpbnRlcmFjdGluZyB3aXRoIGFuIEFQSSxcclxuICogYW5kIHN0b3JpbmcvcmV0cmlldmluZyBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZS4gSXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5kZWRcclxuICogZm9yIHNwZWNpZmljIGRvY3VtZW50IHR5cGVzLlxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgRG9jdW1lbnQgLSBUaGUgdHlwZSBvZiB0aGUgZG9jdW1lbnQgdGhlIHNlcnZpY2UgaGFuZGxlcy5cclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDcnVkU2VydmljZTxcclxuXHREb2N1bWVudCBleHRlbmRzIENydWREb2N1bWVudFxyXG4+IGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG5cdC8qKlxyXG5cdCAqIFVSTCBmb3IgdGhlIEFQSS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF91cmwgPSAnL2FwaS8nO1xyXG5cclxuXHQvKipcclxuXHQgKiBBcnJheSBvZiBkb2N1bWVudHMgbWFuYWdlZCBieSB0aGlzIHNlcnZpY2UuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZG9jczogRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBOdW1iZXIgb2YgZG9jdW1lbnRzIHBlciBwYWdlLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BlclBhZ2UgPSAyMDtcclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGJhY2tzIGZvciBmaWx0ZXJpbmcgZG9jdW1lbnRzLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RzIGEgQ1JVRCBzZXJ2aWNlIGluc3RhbmNlLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIF9jb25maWcgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBDUlVEIHNlcnZpY2UuXHJcblx0ICogQHBhcmFtIF9odHRwIC0gU2VydmljZSB0byBoYW5kbGUgSFRUUCByZXF1ZXN0cy5cclxuXHQgKiBAcGFyYW0gX3N0b3JlIC0gU2VydmljZSB0byBtYW5hZ2UgbG9jYWwgc3RvcmFnZSBvZiBkb2N1bWVudHMuXHJcblx0ICogQHBhcmFtIF9hbGVydCAtIFNlcnZpY2UgdG8gZGlzcGxheSBhbGVydHMuXHJcblx0ICogQHBhcmFtIF9jb3JlIC0gQ29yZSBzZXJ2aWNlIGZvciB1dGlsaXR5IGZ1bmN0aW9ucy5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgX2NvbmZpZzogQ3J1ZENvbmZpZzxEb2N1bWVudD4sXHJcblx0XHRwcml2YXRlIF9odHRwOiBIdHRwU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3N0b3JlOiBTdG9yZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9hbGVydDogQWxlcnRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfY29yZTogQ29yZVNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHN1cGVyKCk7XHJcblxyXG5cdFx0dGhpcy5fdXJsICs9IHRoaXMuX2NvbmZpZy5uYW1lO1xyXG5cclxuXHRcdC8vIExvYWQgZG9jdW1lbnRzIGZyb20gbG9jYWwgc3RvcmFnZS5cclxuXHRcdHRoaXMuX3N0b3JlLmdldEpzb24oJ2RvY3NfJyArIHRoaXMuX2NvbmZpZy5uYW1lLCAoZG9jcykgPT4ge1xyXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShkb2NzKSkge1xyXG5cdFx0XHRcdHRoaXMuX2RvY3MucHVzaCguLi5kb2NzKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlcyB0aGUgY3VycmVudCBzZXQgb2YgZG9jdW1lbnRzIHRvIGxvY2FsIHN0b3JhZ2UuXHJcblx0ICovXHJcblx0c2V0RG9jcygpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3N0b3JlLnNldEpzb24oJ2RvY3NfJyArIHRoaXMuX2NvbmZpZy5uYW1lLCB0aGlzLl9kb2NzKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBsaXN0IG9mIGRvY3VtZW50cy5cclxuXHQgKlxyXG5cdCAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGRvY3VtZW50cy5cclxuXHQgKi9cclxuXHRnZXREb2NzKCk6IERvY3VtZW50W10ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RvY3M7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIG11bHRpcGxlIGRvY3VtZW50cyB0byB0aGUgc2VydmljZSBhbmQgc2F2ZXMgdGhlbSB0byBsb2NhbCBzdG9yYWdlLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvY3MgLSBBbiBhcnJheSBvZiBkb2N1bWVudHMgdG8gYWRkLlxyXG5cdCAqL1xyXG5cdGFkZERvY3MoZG9jczogRG9jdW1lbnRbXSk6IHZvaWQge1xyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoZG9jcykpIHtcclxuXHRcdFx0Zm9yIChjb25zdCBkb2Mgb2YgZG9jcykge1xyXG5cdFx0XHRcdHRoaXMuYWRkRG9jKGRvYyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgYSBzaW5nbGUgZG9jdW1lbnQgdG8gdGhlIHNlcnZpY2UuIElmIGl0IGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHVwZGF0ZWQuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGFkZC5cclxuXHQgKi9cclxuXHRhZGREb2MoZG9jOiBEb2N1bWVudCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuX2NvbmZpZy5yZXBsYWNlKSB7XHJcblx0XHRcdHRoaXMuX2NvbmZpZy5yZXBsYWNlKGRvYyk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZXhpc3RpbmdEb2MgPSB0aGlzLl9kb2NzLmZpbmQoXHJcblx0XHRcdChkKSA9PiB0aGlzLl9pZChkKSA9PT0gdGhpcy5faWQoZG9jKVxyXG5cdFx0KTtcclxuXHJcblx0XHRpZiAoZXhpc3RpbmdEb2MpIHtcclxuXHRcdFx0Ly8gVXBkYXRlIHRoZSBleGlzdGluZyBkb2N1bWVudFxyXG5cdFx0XHR0aGlzLl9jb3JlLmNvcHkoZG9jLCBleGlzdGluZ0RvYyk7XHJcblx0XHRcdHRoaXMuX2NvcmUuY29weShleGlzdGluZ0RvYywgZG9jKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIEFkZCBuZXcgZG9jdW1lbnRcclxuXHRcdFx0dGhpcy5fZG9jcy5wdXNoKGRvYyk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zZXREb2NzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IHdpdGggYSB0ZW1wb3JhcnkgSUQgYW5kIHN0YXR1cyBmbGFncy5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBPcHRpb25hbCBiYXNlIGRvY3VtZW50IHRvIHVzZSBmb3IgdGhlIG5ldyBkb2N1bWVudC5cclxuXHQgKiBAcmV0dXJucyBBIG5ldyBkb2N1bWVudCBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgcHJvcGVydGllcy5cclxuXHQgKi9cclxuXHRuZXcoZG9jOiBEb2N1bWVudCA9IHt9IGFzIERvY3VtZW50KTogRG9jdW1lbnQge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Li4uZG9jLFxyXG5cdFx0XHRfaWQ6IERhdGUubm93KCkudG9TdHJpbmcoKSxcclxuXHRcdFx0X19jcmVhdGVkOiBmYWxzZSxcclxuXHRcdFx0X19tb2RpZmllZDogZmFsc2UsXHJcblx0XHR9IGFzIERvY3VtZW50O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0cmlldmVzIGEgZG9jdW1lbnQgYnkgaXRzIHVuaXF1ZSBJRCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIF9pZCAtIFRoZSBkb2N1bWVudCBJRCB0byBzZWFyY2ggZm9yLlxyXG5cdCAqIEByZXR1cm5zIFRoZSBmb3VuZCBkb2N1bWVudCBvciBhIG5ldyBkb2N1bWVudCBpZiBub3QgZm91bmQuXHJcblx0ICovXHJcblx0ZG9jKF9pZDogc3RyaW5nKTogRG9jdW1lbnQge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RvY3MuZmluZCgoZCkgPT4gdGhpcy5faWQoZCkgPT09IF9pZCkgfHwgdGhpcy5uZXcoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgdGhlIG51bWJlciBvZiBkb2N1bWVudHMgdG8gZGlzcGxheSBwZXIgcGFnZS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBfcGVyUGFnZSAtIE51bWJlciBvZiBkb2N1bWVudHMgcGVyIHBhZ2UuXHJcblx0ICovXHJcblx0c2V0UGVyUGFnZShfcGVyUGFnZTogbnVtYmVyKTogdm9pZCB7XHJcblx0XHR0aGlzLl9wZXJQYWdlID0gX3BlclBhZ2U7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGZXRjaGVzIGEgbGlzdCBvZiBkb2N1bWVudHMgZnJvbSB0aGUgQVBJIHdpdGggb3B0aW9uYWwgcGFnaW5hdGlvbi5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBwYWdpbmF0aW9uIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGlzdCBvZiBkb2N1bWVudHMuXHJcblx0ICovXHJcblx0Z2V0KFxyXG5cdFx0Y29uZmlnOiBHZXRDb25maWcgPSB7fSxcclxuXHRcdG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9XHJcblx0KTogT2JzZXJ2YWJsZTxEb2N1bWVudFtdPiB7XHJcblx0XHRjb25zdCB1cmwgPSBgJHt0aGlzLl91cmx9L2dldCR7b3B0aW9ucy5uYW1lIHx8ICcnfWA7XHJcblxyXG5cdFx0Y29uc3QgcGFyYW1zID1cclxuXHRcdFx0dHlwZW9mIGNvbmZpZy5wYWdlID09PSAnbnVtYmVyJ1xyXG5cdFx0XHRcdD8gYD9za2lwPSR7dGhpcy5fcGVyUGFnZSAqIChjb25maWcucGFnZSAtIDEpfSZsaW1pdD0ke1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9wZXJQYWdlXHJcblx0XHRcdFx0ICB9YFxyXG5cdFx0XHRcdDogJyc7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5nZXQoYCR7dXJsfSR7cGFyYW1zfWApO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bik6IHZvaWQgPT4ge1xyXG5cdFx0XHRcdChyZXNwIGFzIERvY3VtZW50W10pLmZvckVhY2goKGRvYykgPT4gdGhpcy5hZGREb2MoZG9jKSk7XHJcblxyXG5cdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmNhbGxiYWNrKHJlc3AgYXMgRG9jdW1lbnRbXSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bik6IHZvaWQgPT4ge1xyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50W10+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2VuZHMgYSByZXF1ZXN0IHRvIHRoZSBBUEkgdG8gY3JlYXRlIGEgbmV3IGRvY3VtZW50LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byBjcmVhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY3JlYXRlZCBkb2N1bWVudCwgb3Igdm9pZCBpZiBhbHJlYWR5IGNyZWF0ZWQuXHJcblx0ICovXHJcblx0Y3JlYXRlKFxyXG5cdFx0ZG9jOiBEb2N1bWVudCxcclxuXHRcdG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9XHJcblx0KTogT2JzZXJ2YWJsZTxEb2N1bWVudD4gfCB2b2lkIHtcclxuXHRcdGlmIChkb2MuX19jcmVhdGVkKSByZXR1cm47XHJcblxyXG5cdFx0ZG9jLl9fY3JlYXRlZCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L2NyZWF0ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0dGhpcy5fY29yZS5jb3B5KHJlc3AsIGRvYyk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5hZGREb2MoZG9jKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl9maWx0ZXJEb2N1bWVudHMoKTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5jYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmNhbGxiYWNrKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuYWxlcnQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2hvdyh7XHJcblx0XHRcdFx0XHRcdFx0dW5pcXVlOiBgJHt0aGlzLl9jb25maWcubmFtZX1jcmVhdGVgLFxyXG5cdFx0XHRcdFx0XHRcdHRleHQ6IG9wdGlvbnMuYWxlcnQsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRkb2MuX19jcmVhdGVkID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuX2NvcmUuZW1pdChgJHt0aGlzLl9jb25maWcubmFtZX1fY3JlYXRlYCwgZG9jKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRkb2MuX19jcmVhdGVkID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSBvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHRcdHJldHVybiBvYnMgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudD47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGZXRjaGVzIGEgZG9jdW1lbnQgZnJvbSB0aGUgQVBJIGJhc2VkIG9uIGEgcXVlcnkuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcXVlcnkgLSBUaGUgcXVlcnkgb2JqZWN0IHVzZWQgdG8gZmlsdGVyIGRvY3VtZW50cy5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmZXRjaGVkIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdGZldGNoKFxyXG5cdFx0cXVlcnk6IG9iamVjdCA9IHt9LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vZmV0Y2gke29wdGlvbnMubmFtZSB8fCAnJ31gLFxyXG5cdFx0XHRxdWVyeVxyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0dGhpcy5hZGREb2MocmVzcCBhcyBEb2N1bWVudCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fZmlsdGVyRG9jdW1lbnRzKCk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIG9wdGlvbnMuY2FsbGJhY2socmVzcCBhcyBEb2N1bWVudCk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuYWxlcnQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2hvdyh7XHJcblx0XHRcdFx0XHRcdFx0dW5pcXVlOiBgJHt0aGlzLl9jb25maWcubmFtZX1jcmVhdGVgLFxyXG5cdFx0XHRcdFx0XHRcdHRleHQ6IG9wdGlvbnMuYWxlcnQsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKHJlc3AgYXMgRG9jdW1lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhlcnIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50PjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgYSBkb2N1bWVudCBhZnRlciBhIHNwZWNpZmllZCBkZWxheS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgdG8gdXBkYXRlLlxyXG5cdCAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY2FsbGJhY2sgYW5kIGVycm9yIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb24uXHJcblx0ICovXHJcblx0dXBkYXRlQWZ0ZXJXaGlsZShkb2M6IERvY3VtZW50LCBvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fSk6IHZvaWQge1xyXG5cdFx0ZG9jLl9fbW9kaWZpZWQgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuX2NvcmUuYWZ0ZXJXaGlsZSh0aGlzLl9pZChkb2MpLCAoKSA9PiB7XHJcblx0XHRcdHRoaXMudXBkYXRlKGRvYywgb3B0aW9ucyk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgYSBkb2N1bWVudCBpbiB0aGUgQVBJLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byB1cGRhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdXBkYXRlZCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHR1cGRhdGUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRkb2MuX19tb2RpZmllZCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L3VwZGF0ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0ZG9jLl9fbW9kaWZpZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl9jb3JlLmNvcHkocmVzcCwgZG9jKTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5jYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmNhbGxiYWNrKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuYWxlcnQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2hvdyh7XHJcblx0XHRcdFx0XHRcdFx0dW5pcXVlOiBgJHt0aGlzLl9jb25maWcubmFtZX11cGRhdGVgLFxyXG5cdFx0XHRcdFx0XHRcdHRleHQ6IG9wdGlvbnMuYWxlcnQsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0dGhpcy5fY29yZS5lbWl0KGAke3RoaXMuX2NvbmZpZy5uYW1lfV91cGRhdGVgLCBkb2MpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50PjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVuaXF1ZSB1cGRhdGUgYSBkb2N1bWVudCBmaWVsZCBpbiB0aGUgQVBJLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byB1cGRhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdXBkYXRlZCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHR1bmlxdWUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRkb2MuX19tb2RpZmllZCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L3VuaXF1ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0ZG9jLl9fbW9kaWZpZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHQoZG9jIGFzIGFueSlbb3B0aW9ucy5uYW1lIGFzIHN0cmluZ10gPSByZXNwO1xyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2soZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfXVuaXF1ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2socmVzcCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR0aGlzLl9jb3JlLmVtaXQoYCR7dGhpcy5fY29uZmlnLm5hbWV9X3VuaXF1ZWAsIGRvYyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyOiB1bmtub3duKSA9PiB7XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnQ+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBhIGRvY3VtZW50IGZyb20gdGhlIEFQSS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgdG8gZGVsZXRlLlxyXG5cdCAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY2FsbGJhY2sgYW5kIGVycm9yIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRlbGV0ZWQgZG9jdW1lbnQuXHJcblx0ICovXHJcblx0ZGVsZXRlKFxyXG5cdFx0ZG9jOiBEb2N1bWVudCxcclxuXHRcdG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9XHJcblx0KTogT2JzZXJ2YWJsZTxEb2N1bWVudD4ge1xyXG5cdFx0Y29uc3Qgb2JzID0gdGhpcy5faHR0cC5wb3N0KFxyXG5cdFx0XHRgJHt0aGlzLl91cmx9L2RlbGV0ZSR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdGRvY1xyXG5cdFx0KTtcclxuXHJcblx0XHRvYnMuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3A6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcCkge1xyXG5cdFx0XHRcdFx0dGhpcy5fZG9jcyA9IHRoaXMuX2RvY3MuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHQoZCkgPT4gdGhpcy5faWQoZCkgIT09IHRoaXMuX2lkKGRvYylcclxuXHRcdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5zZXREb2NzKCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fZmlsdGVyRG9jdW1lbnRzKCk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5jYWxsYmFjayhkb2MpO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmFsZXJ0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNob3coe1xyXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZTogYCR7dGhpcy5fY29uZmlnLm5hbWV9ZGVsZXRlYCxcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBvcHRpb25zLmFsZXJ0LFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuX2NvcmUuZW1pdChgJHt0aGlzLl9jb25maWcubmFtZX1fZGVsZXRlYCwgZG9jKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhlcnIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBvYnMgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudD47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGaWx0ZXJzIGRvY3VtZW50cyBiYXNlZCBvbiBzcGVjaWZpYyBjb25kaXRpb25zIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiBhIHByb3ZpZGVkIG9iamVjdC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBzdG9yZU9iamVjdCAtIE9iamVjdCB0byBzdG9yZSBmaWx0ZXJlZCBkb2N1bWVudHMuXHJcblx0ICogQHBhcmFtIGZpZWxkIC0gVGhlIGZpZWxkIHRvIGZpbHRlciBieSBvciBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIGZpZWxkLlxyXG5cdCAqIEBwYXJhbSB2YWxpZCAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBhIGRvY3VtZW50LlxyXG5cdCAqIEBwYXJhbSBzb3J0IC0gRnVuY3Rpb24gdG8gc29ydCB0aGUgZmlsdGVyZWQgZG9jdW1lbnRzLlxyXG5cdCAqIEByZXR1cm5zIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyB0aGUgZmlsdGVyaW5nIHByb2Nlc3MuXHJcblx0ICovXHJcblx0ZmlsdGVyZWREb2N1bWVudHMoXHJcblx0XHRzdG9yZU9iamVjdDogUmVjb3JkPHN0cmluZywgRG9jdW1lbnRbXT4sXHJcblx0XHRmaWVsZDogc3RyaW5nIHwgKChkb2M6IERvY3VtZW50KSA9PiBzdHJpbmcpID0gJ2F1dGhvcicsXHJcblx0XHR2YWxpZD86IChkb2M6IERvY3VtZW50KSA9PiBib29sZWFuLFxyXG5cdFx0c29ydDogKGE6IERvY3VtZW50LCBiOiBEb2N1bWVudCkgPT4gbnVtYmVyID0gKFxyXG5cdFx0XHRhOiBEb2N1bWVudCxcclxuXHRcdFx0YjogRG9jdW1lbnRcclxuXHRcdCkgPT4ge1xyXG5cdFx0XHRpZiAoKGEgYXMgYW55KVt0aGlzLl9pZChhKV0gPCAoYiBhcyBhbnkpW3RoaXMuX2lkKGIpXSkgcmV0dXJuIC0xO1xyXG5cclxuXHRcdFx0aWYgKChhIGFzIGFueSlbdGhpcy5faWQoYSldID4gKGIgYXMgYW55KVt0aGlzLl9pZChiKV0pIHJldHVybiAxO1xyXG5cclxuXHRcdFx0cmV0dXJuIDA7XHJcblx0XHR9XHJcblx0KTogKCkgPT4gdm9pZCB7XHJcblx0XHRjb25zdCBjYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcclxuXHRcdFx0LyogcmVtb3ZlIGRvY3MgaWYgdGhleSB3ZXJlIHJlbW92ZWQgKi9cclxuXHRcdFx0Zm9yIChjb25zdCBwYXJlbnRJZCBpbiBzdG9yZU9iamVjdCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSBzdG9yZU9iamVjdFtwYXJlbnRJZF0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuXHRcdFx0XHRcdGNvbnN0IF9maWVsZCA9XHJcblx0XHRcdFx0XHRcdHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJ1xyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGQoc3RvcmVPYmplY3RbcGFyZW50SWRdW2ldKVxyXG5cdFx0XHRcdFx0XHRcdDogZmllbGQ7XHJcblx0XHRcdFx0XHRjb25zdCBfZG9jOiBhbnkgPSBzdG9yZU9iamVjdFtwYXJlbnRJZF1baV07XHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhdGhpcy5fZG9jcy5maW5kKChkb2M6IGFueSkgPT5cclxuXHRcdFx0XHRcdFx0XHRBcnJheS5pc0FycmF5KGRvY1tfZmllbGRdKVxyXG5cdFx0XHRcdFx0XHRcdFx0PyBkb2NbX2ZpZWxkXS5pbmNsdWRlcyhfZG9jW3RoaXMuX2lkKGRvYyldKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBkb2NbX2ZpZWxkXSA9PT0gX2RvY1t0aGlzLl9pZChkb2MpXVxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbcGFyZW50SWRdLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIGFkZCBkb2NzIGlmIHRoZXkgYXJlIG5vdCBhZGRlZCAqL1xyXG5cdFx0XHRmb3IgKGNvbnN0IGRvYyBvZiB0aGlzLl9kb2NzKSB7XHJcblx0XHRcdFx0Y29uc3QgX2ZpZWxkID0gdHlwZW9mIGZpZWxkID09PSAnZnVuY3Rpb24nID8gZmllbGQoZG9jKSA6IGZpZWxkO1xyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHR0eXBlb2YgdmFsaWQgPT09ICdmdW5jdGlvbidcclxuXHRcdFx0XHRcdFx0PyAhdmFsaWQoZG9jKVxyXG5cdFx0XHRcdFx0XHQ6IEFycmF5LmlzQXJyYXkoKGRvYyBhcyBhbnkpW19maWVsZF0pXHJcblx0XHRcdFx0XHRcdD8gIShkb2MgYXMgYW55KVtfZmllbGRdPy5sZW5ndGhcclxuXHRcdFx0XHRcdFx0OiAhKGRvYyBhcyBhbnkpW19maWVsZF1cclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRmaWVsZChkb2MpICYmXHJcblx0XHRcdFx0XHRcdCFzdG9yZU9iamVjdFsoZG9jIGFzIGFueSlbX2ZpZWxkXV0uZmluZChcclxuXHRcdFx0XHRcdFx0XHQoYykgPT4gYy5faWQgPT09IGRvYy5faWRcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXS5wdXNoKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KChkb2MgYXMgYW55KVtfZmllbGRdKSkge1xyXG5cdFx0XHRcdFx0KGRvYyBhcyBhbnkpW19maWVsZF0uZm9yRWFjaCgoX2ZpZWxkOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbX2ZpZWxkXSA9IHN0b3JlT2JqZWN0W19maWVsZF0gfHwgW107XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0IXN0b3JlT2JqZWN0W19maWVsZF0uZmluZCgoYykgPT4gYy5faWQgPT09IGRvYy5faWQpXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0W19maWVsZF0ucHVzaChkb2MpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dID1cclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dIHx8IFtdO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IXN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXS5maW5kKFxyXG5cdFx0XHRcdFx0XHRcdChjKSA9PiBjLl9pZCA9PT0gZG9jLl9pZFxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dLnB1c2goZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIHNvcnQgdGhlIGFycmF5J3MgKi9cclxuXHRcdFx0Zm9yIChjb25zdCBwYXJlbnRJZCBpbiBzdG9yZU9iamVjdCkge1xyXG5cdFx0XHRcdHN0b3JlT2JqZWN0W3BhcmVudElkXS5zb3J0KHNvcnQpO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdHRoaXMuX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xyXG5cclxuXHRcdHJldHVybiBjYWxsYmFjaztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRCBmb3IgYSBkb2N1bWVudC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgZm9yIHdoaWNoIHRvIGdlbmVyYXRlIHRoZSBJRC5cclxuXHQgKiBAcmV0dXJucyBUaGUgdW5pcXVlIElEIGFzIGEgc3RyaW5nLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2lkKGRvYzogRG9jdW1lbnQpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChkb2MgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbXHJcblx0XHRcdHRoaXMuX2NvbmZpZy5faWQgfHwgJ19pZCdcclxuXHRcdF0/LnRvU3RyaW5nKCkgYXMgc3RyaW5nO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXhlY3V0ZXMgYWxsIHJlZ2lzdGVyZWQgZmlsdGVyIGRvY3VtZW50IGNhbGxiYWNrcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9maWx0ZXJEb2N1bWVudHMoKTogdm9pZCB7XHJcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMuX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzKSB7XHJcblx0XHRcdGNhbGxiYWNrKCk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBb0I3Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBZ0IsV0FFcEIsU0FBUSxXQUFXO0lBK0JYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFsQ1Q7O09BRUc7SUFDSyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRXZCOztPQUVHO0lBQ0ssS0FBSyxHQUFlLEVBQUUsQ0FBQztJQUUvQjs7T0FFRztJQUNLLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFFdEI7O09BRUc7SUFDSywyQkFBMkIsR0FBbUIsRUFBRSxDQUFDO0lBRXpEOzs7Ozs7OztPQVFHO0lBQ0gsWUFDUyxPQUE2QixFQUM3QixLQUFrQixFQUNsQixNQUFvQixFQUNwQixNQUFvQixFQUNwQixLQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQU5BLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFJMUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUUvQixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMs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SyxHQUFHLENBQUMsR0FBRyxDQUN4QixFQUNBLENBQUM7d0JBQ0YsV0FBVyxDQUFFLEdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0MsQ0FBQztnQkFDRixDQUFDO1lBQ0YsQ0FBQztZQUVELHNCQUFzQjtZQUN0QixLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDRixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhELE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLEdBQUcsQ0FBQyxHQUFhO1FBQ3hCLE9BQVEsR0FBMEMsQ0FDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUN6QixFQUFFLFFBQVEsRUFBWSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQjtRQUN2QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ3pELFFBQVEsRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNGLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnVkRG9jdW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NydWQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+IHtcclxuXHRuYW1lPzogc3RyaW5nO1xyXG5cdGFsZXJ0Pzogc3RyaW5nO1xyXG5cdGNhbGxiYWNrPzogKHJlc3A6IERvY3VtZW50IHwgRG9jdW1lbnRbXSkgPT4gdm9pZDtcclxuXHRlcnJDYWxsYmFjaz86IChyZXNwOiB1bmtub3duKSA9PiB2b2lkO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQ3J1ZENvbmZpZzxEb2N1bWVudD4ge1xyXG5cdG5hbWU6IHN0cmluZztcclxuXHRfaWQ/OiBzdHJpbmc7XHJcblx0cmVwbGFjZT86IChkb2M6IERvY3VtZW50KSA9PiB2b2lkO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgR2V0Q29uZmlnIHtcclxuXHRwYWdlPzogbnVtYmVyO1xyXG5cdHBlclBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgYSBDUlVEIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSBzZXJ2aWNlLlxyXG4gKlxyXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgZm9yIG1hbmFnaW5nIGRvY3VtZW50cywgaW50ZXJhY3Rpbmcgd2l0aCBhbiBBUEksXHJcbiAqIGFuZCBzdG9yaW5nL3JldHJpZXZpbmcgZGF0YSBmcm9tIGxvY2FsIHN0b3JhZ2UuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuZGVkXHJcbiAqIGZvciBzcGVjaWZpYyBkb2N1bWVudCB0eXBlcy5cclxuICpcclxuICogQHRlbXBsYXRlIERvY3VtZW50IC0gVGhlIHR5cGUgb2YgdGhlIGRvY3VtZW50IHRoZSBzZXJ2aWNlIGhhbmRsZXMuXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3J1ZFNlcnZpY2U8XHJcblx0RG9jdW1lbnQgZXh0ZW5kcyBDcnVkRG9jdW1lbnRcclxuPiBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuXHQvKipcclxuXHQgKiBVUkwgZm9yIHRoZSBBUEkuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfdXJsID0gJy9hcGkvJztcclxuXHJcblx0LyoqXHJcblx0ICogQXJyYXkgb2YgZG9jdW1lbnRzIG1hbmFnZWQgYnkgdGhpcyBzZXJ2aWNlLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2RvY3M6IERvY3VtZW50W10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogTnVtYmVyIG9mIGRvY3VtZW50cyBwZXIgcGFnZS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9wZXJQYWdlID0gMjA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENhbGxiYWNrcyBmb3IgZmlsdGVyaW5nIGRvY3VtZW50cy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9maWx0ZXJlZERvY3VtZW50c0NhbGxiYWNrczogKCgpID0+IHZvaWQpW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0cyBhIENSVUQgc2VydmljZSBpbnN0YW5jZS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBfY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQ1JVRCBzZXJ2aWNlLlxyXG5cdCAqIEBwYXJhbSBfaHR0cCAtIFNlcnZpY2UgdG8gaGFuZGxlIEhUVFAgcmVxdWVzdHMuXHJcblx0ICogQHBhcmFtIF9zdG9yZSAtIFNlcnZpY2UgdG8gbWFuYWdlIGxvY2FsIHN0b3JhZ2Ugb2YgZG9jdW1lbnRzLlxyXG5cdCAqIEBwYXJhbSBfYWxlcnQgLSBTZXJ2aWNlIHRvIGRpc3BsYXkgYWxlcnRzLlxyXG5cdCAqIEBwYXJhbSBfY29yZSAtIENvcmUgc2VydmljZSBmb3IgdXRpbGl0eSBmdW5jdGlvbnMuXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIF9jb25maWc6IENydWRDb25maWc8RG9jdW1lbnQ+LFxyXG5cdFx0cHJpdmF0ZSBfaHR0cDogSHR0cFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9zdG9yZTogU3RvcmVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfYWxlcnQ6IEFsZXJ0U2VydmljZSxcclxuXHRcdHByaXZhdGUgX2NvcmU6IENvcmVTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cclxuXHRcdHRoaXMuX3VybCArPSB0aGlzLl9jb25maWcubmFtZTtcclxuXHJcblx0XHQvLyBMb2FkIGRvY3VtZW50cyBmcm9tIGxvY2FsIHN0b3JhZ2UuXHJcblx0XHR0aGlzLl9zdG9yZS5nZXRKc29uKCdkb2NzXycgKyB0aGlzLl9jb25maWcubmFtZSwgKGRvY3MpID0+IHtcclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZG9jcykpIHtcclxuXHRcdFx0XHR0aGlzLl9kb2NzLnB1c2goLi4uZG9jcyk7XHJcblxyXG5cdFx0XHRcdHRoaXMuX2ZpbHRlckRvY3VtZW50cygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhdmVzIHRoZSBjdXJyZW50IHNldCBvZiBkb2N1bWVudHMgdG8gbG9jYWwgc3RvcmFnZS5cclxuXHQgKi9cclxuXHRzZXREb2NzKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fc3RvcmUuc2V0SnNvbignZG9jc18nICsgdGhpcy5fY29uZmlnLm5hbWUsIHRoaXMuX2RvY3MpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGxpc3Qgb2YgZG9jdW1lbnRzLlxyXG5cdCAqXHJcblx0ICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZG9jdW1lbnRzLlxyXG5cdCAqL1xyXG5cdGdldERvY3MoKTogRG9jdW1lbnRbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fZG9jcztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgbXVsdGlwbGUgZG9jdW1lbnRzIHRvIHRoZSBzZXJ2aWNlIGFuZCBzYXZlcyB0aGVtIHRvIGxvY2FsIHN0b3JhZ2UuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jcyAtIEFuIGFycmF5IG9mIGRvY3VtZW50cyB0byBhZGQuXHJcblx0ICovXHJcblx0YWRkRG9jcyhkb2NzOiBEb2N1bWVudFtdKTogdm9pZCB7XHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheShkb2NzKSkge1xyXG5cdFx0XHRmb3IgKGNvbnN0IGRvYyBvZiBkb2NzKSB7XHJcblx0XHRcdFx0dGhpcy5hZGREb2MoZG9jKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBhIHNpbmdsZSBkb2N1bWVudCB0byB0aGUgc2VydmljZS4gSWYgaXQgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgdXBkYXRlZC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgdG8gYWRkLlxyXG5cdCAqL1xyXG5cdGFkZERvYyhkb2M6IERvY3VtZW50KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5fY29uZmlnLnJlcGxhY2UpIHtcclxuXHRcdFx0dGhpcy5fY29uZmlnLnJlcGxhY2UoZG9jKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBleGlzdGluZ0RvYyA9IHRoaXMuX2RvY3MuZmluZChcclxuXHRcdFx0KGQpID0+IHRoaXMuX2lkKGQpID09PSB0aGlzLl9pZChkb2MpXHJcblx0XHQpO1xyXG5cclxuXHRcdGlmIChleGlzdGluZ0RvYykge1xyXG5cdFx0XHQvLyBVcGRhdGUgdGhlIGV4aXN0aW5nIGRvY3VtZW50XHJcblx0XHRcdHRoaXMuX2NvcmUuY29weShkb2MsIGV4aXN0aW5nRG9jKTtcclxuXHRcdFx0dGhpcy5fY29yZS5jb3B5KGV4aXN0aW5nRG9jLCBkb2MpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gQWRkIG5ldyBkb2N1bWVudFxyXG5cdFx0XHR0aGlzLl9kb2NzLnB1c2goZG9jKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNldERvY3MoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBuZXcgZG9jdW1lbnQgd2l0aCBhIHRlbXBvcmFyeSBJRCBhbmQgc3RhdHVzIGZsYWdzLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIE9wdGlvbmFsIGJhc2UgZG9jdW1lbnQgdG8gdXNlIGZvciB0aGUgbmV3IGRvY3VtZW50LlxyXG5cdCAqIEByZXR1cm5zIEEgbmV3IGRvY3VtZW50IGluc3RhbmNlIHdpdGggZGVmYXVsdCBwcm9wZXJ0aWVzLlxyXG5cdCAqL1xyXG5cdG5ldyhkb2M6IERvY3VtZW50ID0ge30gYXMgRG9jdW1lbnQpOiBEb2N1bWVudCB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHQuLi5kb2MsXHJcblx0XHRcdF9pZDogRGF0ZS5ub3coKS50b1N0cmluZygpLFxyXG5cdFx0XHRfX2NyZWF0ZWQ6IGZhbHNlLFxyXG5cdFx0XHRfX21vZGlmaWVkOiBmYWxzZSxcclxuXHRcdH0gYXMgRG9jdW1lbnQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRyaWV2ZXMgYSBkb2N1bWVudCBieSBpdHMgdW5pcXVlIElEIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gX2lkIC0gVGhlIGRvY3VtZW50IElEIHRvIHNlYXJjaCBmb3IuXHJcblx0ICogQHJldHVybnMgVGhlIGZvdW5kIGRvY3VtZW50IG9yIGEgbmV3IGRvY3VtZW50IGlmIG5vdCBmb3VuZC5cclxuXHQgKi9cclxuXHRkb2MoX2lkOiBzdHJpbmcpOiBEb2N1bWVudCB7XHJcblx0XHRyZXR1cm4gdGhpcy5fZG9jcy5maW5kKChkKSA9PiB0aGlzLl9pZChkKSA9PT0gX2lkKSB8fCB0aGlzLm5ldygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyB0aGUgbnVtYmVyIG9mIGRvY3VtZW50cyB0byBkaXNwbGF5IHBlciBwYWdlLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIF9wZXJQYWdlIC0gTnVtYmVyIG9mIGRvY3VtZW50cyBwZXIgcGFnZS5cclxuXHQgKi9cclxuXHRzZXRQZXJQYWdlKF9wZXJQYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3BlclBhZ2UgPSBfcGVyUGFnZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZldGNoZXMgYSBsaXN0IG9mIGRvY3VtZW50cyBmcm9tIHRoZSBBUEkgd2l0aCBvcHRpb25hbCBwYWdpbmF0aW9uLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIHBhZ2luYXRpb24gY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsaXN0IG9mIGRvY3VtZW50cy5cclxuXHQgKi9cclxuXHRnZXQoXHJcblx0XHRjb25maWc6IEdldENvbmZpZyA9IHt9LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50W10+IHtcclxuXHRcdGNvbnN0IHVybCA9IGAke3RoaXMuX3VybH0vZ2V0JHtvcHRpb25zLm5hbWUgfHwgJyd9YDtcclxuXHJcblx0XHRjb25zdCBwYXJhbXMgPVxyXG5cdFx0XHR0eXBlb2YgY29uZmlnLnBhZ2UgPT09ICdudW1iZXInXHJcblx0XHRcdFx0PyBgP3NraXA9JHt0aGlzLl9wZXJQYWdlICogKGNvbmZpZy5wYWdlIC0gMSl9JmxpbWl0PSR7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3BlclBhZ2VcclxuXHRcdFx0XHQgIH1gXHJcblx0XHRcdFx0OiAnJztcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLmdldChgJHt1cmx9JHtwYXJhbXN9YCk7XHJcblxyXG5cdFx0b2JzLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwOiB1bmtub3duKTogdm9pZCA9PiB7XHJcblx0XHRcdFx0KHJlc3AgYXMgRG9jdW1lbnRbXSkuZm9yRWFjaCgoZG9jKSA9PiB0aGlzLmFkZERvYyhkb2MpKTtcclxuXHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2socmVzcCBhcyBEb2N1bWVudFtdKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmICh0eXBlb2YgY29uZmlnLnBhZ2UgIT09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9maWx0ZXJEb2N1bWVudHMoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyOiB1bmtub3duKTogdm9pZCA9PiB7XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnRbXT47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZW5kcyBhIHJlcXVlc3QgdG8gdGhlIEFQSSB0byBjcmVhdGUgYSBuZXcgZG9jdW1lbnQuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGNyZWF0ZS5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBjcmVhdGVkIGRvY3VtZW50LCBvciB2b2lkIGlmIGFscmVhZHkgY3JlYXRlZC5cclxuXHQgKi9cclxuXHRjcmVhdGUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB8IHZvaWQge1xyXG5cdFx0aWYgKGRvYy5fX2NyZWF0ZWQpIHJldHVybjtcclxuXHJcblx0XHRkb2MuX19jcmVhdGVkID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vY3JlYXRlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9jb3JlLmNvcHkocmVzcCwgZG9jKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmFkZERvYyhkb2MpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX2ZpbHRlckRvY3VtZW50cygpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2soZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfWNyZWF0ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGRvYy5fX2NyZWF0ZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0dGhpcy5fY29yZS5lbWl0KGAke3RoaXMuX2NvbmZpZy5uYW1lfV9jcmVhdGVgLCBkb2MpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGRvYy5fX2NyZWF0ZWQgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG9icyBhcyBPYnNlcnZhYmxlPERvY3VtZW50PjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZldGNoZXMgYSBkb2N1bWVudCBmcm9tIHRoZSBBUEkgYmFzZWQgb24gYSBxdWVyeS5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBxdWVyeSAtIFRoZSBxdWVyeSBvYmplY3QgdXNlZCB0byBmaWx0ZXIgZG9jdW1lbnRzLlxyXG5cdCAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY2FsbGJhY2sgYW5kIGVycm9yIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb24uXHJcblx0ICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGZldGNoZWQgZG9jdW1lbnQuXHJcblx0ICovXHJcblx0ZmV0Y2goXHJcblx0XHRxdWVyeTogb2JqZWN0ID0ge30sXHJcblx0XHRvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fVxyXG5cdCk6IE9ic2VydmFibGU8RG9jdW1lbnQ+IHtcclxuXHRcdGNvbnN0IG9icyA9IHRoaXMuX2h0dHAucG9zdChcclxuXHRcdFx0YCR7dGhpcy5fdXJsfS9mZXRjaCR7b3B0aW9ucy5uYW1lIHx8ICcnfWAsXHJcblx0XHRcdHF1ZXJ5XHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHR0aGlzLmFkZERvYyhyZXNwIGFzIERvY3VtZW50KTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl9maWx0ZXJEb2N1bWVudHMoKTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5jYWxsYmFjaykgb3B0aW9ucy5jYWxsYmFjayhyZXNwIGFzIERvY3VtZW50KTtcclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfWNyZWF0ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2socmVzcCBhcyBEb2N1bWVudCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycjogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRvcHRpb25zLmVyckNhbGxiYWNrKGVycik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnQ+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyBhIGRvY3VtZW50IGFmdGVyIGEgc3BlY2lmaWVkIGRlbGF5LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byB1cGRhdGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKi9cclxuXHR1cGRhdGVBZnRlcldoaWxlKGRvYzogRG9jdW1lbnQsIG9wdGlvbnM6IENydWRPcHRpb25zPERvY3VtZW50PiA9IHt9KTogdm9pZCB7XHJcblx0XHRkb2MuX19tb2RpZmllZCA9IHRydWU7XHJcblxyXG5cdFx0dGhpcy5fY29yZS5hZnRlcldoaWxlKHRoaXMuX2lkKGRvYyksICgpID0+IHtcclxuXHRcdFx0dGhpcy51cGRhdGUoZG9jLCBvcHRpb25zKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyBhIGRvY3VtZW50IGluIHRoZSBBUEkuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB1cGRhdGVkIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdHVwZGF0ZShcclxuXHRcdGRvYzogRG9jdW1lbnQsXHJcblx0XHRvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fVxyXG5cdCk6IE9ic2VydmFibGU8RG9jdW1lbnQ+IHtcclxuXHRcdGRvYy5fX21vZGlmaWVkID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vdXBkYXRlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHRkb2MuX19tb2RpZmllZCA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX2NvcmUuY29weShyZXNwLCBkb2MpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2FsbGJhY2soZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5hbGVydCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9hbGVydC5zaG93KHtcclxuXHRcdFx0XHRcdFx0XHR1bmlxdWU6IGAke3RoaXMuX2NvbmZpZy5uYW1lfXVwZGF0ZWAsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogb3B0aW9ucy5hbGVydCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmVyckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2socmVzcCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR0aGlzLl9jb3JlLmVtaXQoYCR7dGhpcy5fY29uZmlnLm5hbWV9X3VwZGF0ZWAsIGRvYyk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyOiB1bmtub3duKSA9PiB7XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdG9wdGlvbnMuZXJyQ2FsbGJhY2soZXJyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzIGFzIE9ic2VydmFibGU8RG9jdW1lbnQ+O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVW5pcXVlIHVwZGF0ZSBhIGRvY3VtZW50IGZpZWxkIGluIHRoZSBBUEkuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNhbGxiYWNrIGFuZCBlcnJvciBoYW5kbGluZyBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB1cGRhdGVkIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdHVuaXF1ZShcclxuXHRcdGRvYzogRG9jdW1lbnQsXHJcblx0XHRvcHRpb25zOiBDcnVkT3B0aW9uczxEb2N1bWVudD4gPSB7fVxyXG5cdCk6IE9ic2VydmFibGU8RG9jdW1lbnQ+IHtcclxuXHRcdGRvYy5fX21vZGlmaWVkID0gdHJ1ZTtcclxuXHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vdW5pcXVlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHRkb2MuX19tb2RpZmllZCA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRcdChkb2MgYXMgYW55KVtvcHRpb25zLm5hbWUgYXMgc3RyaW5nXSA9IHJlc3A7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5jYWxsYmFjayhkb2MpO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmFsZXJ0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNob3coe1xyXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZTogYCR7dGhpcy5fY29uZmlnLm5hbWV9dW5pcXVlYCxcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBvcHRpb25zLmFsZXJ0LFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuX2NvcmUuZW1pdChgJHt0aGlzLl9jb25maWcubmFtZX1fdW5pcXVlYCwgZG9jKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhlcnIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBvYnMgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudD47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWxldGVzIGEgZG9jdW1lbnQgZnJvbSB0aGUgQVBJLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRvYyAtIFRoZSBkb2N1bWVudCB0byBkZWxldGUuXHJcblx0ICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjYWxsYmFjayBhbmQgZXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZGVsZXRlZCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHRkZWxldGUoXHJcblx0XHRkb2M6IERvY3VtZW50LFxyXG5cdFx0b3B0aW9uczogQ3J1ZE9wdGlvbnM8RG9jdW1lbnQ+ID0ge31cclxuXHQpOiBPYnNlcnZhYmxlPERvY3VtZW50PiB7XHJcblx0XHRjb25zdCBvYnMgPSB0aGlzLl9odHRwLnBvc3QoXHJcblx0XHRcdGAke3RoaXMuX3VybH0vZGVsZXRlJHtvcHRpb25zLm5hbWUgfHwgJyd9YCxcclxuXHRcdFx0ZG9jXHJcblx0XHQpO1xyXG5cclxuXHRcdG9icy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9kb2NzLnNwbGljZShcclxuXHRcdFx0XHRcdFx0dGhpcy5fZG9jcy5maW5kSW5kZXgoXHJcblx0XHRcdFx0XHRcdFx0KGQpID0+IHRoaXMuX2lkKGQpICE9PSB0aGlzLl9pZChkb2MpXHJcblx0XHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5zZXREb2NzKCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fZmlsdGVyRG9jdW1lbnRzKCk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuY2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5jYWxsYmFjayhkb2MpO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmFsZXJ0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNob3coe1xyXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZTogYCR7dGhpcy5fY29uZmlnLm5hbWV9ZGVsZXRlYCxcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBvcHRpb25zLmFsZXJ0LFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMuZXJyQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhyZXNwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuX2NvcmUuZW1pdChgJHt0aGlzLl9jb25maWcubmFtZX1fZGVsZXRlYCwgZG9jKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnI6IHVua25vd24pID0+IHtcclxuXHRcdFx0XHRpZiAob3B0aW9ucy5lcnJDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0b3B0aW9ucy5lcnJDYWxsYmFjayhlcnIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBvYnMgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudD47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGaWx0ZXJzIGRvY3VtZW50cyBiYXNlZCBvbiBzcGVjaWZpYyBjb25kaXRpb25zIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiBhIHByb3ZpZGVkIG9iamVjdC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBzdG9yZU9iamVjdCAtIE9iamVjdCB0byBzdG9yZSBmaWx0ZXJlZCBkb2N1bWVudHMuXHJcblx0ICogQHBhcmFtIGZpZWxkIC0gVGhlIGZpZWxkIHRvIGZpbHRlciBieSBvciBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIGZpZWxkLlxyXG5cdCAqIEBwYXJhbSB2YWxpZCAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBhIGRvY3VtZW50LlxyXG5cdCAqIEBwYXJhbSBzb3J0IC0gRnVuY3Rpb24gdG8gc29ydCB0aGUgZmlsdGVyZWQgZG9jdW1lbnRzLlxyXG5cdCAqIEByZXR1cm5zIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyB0aGUgZmlsdGVyaW5nIHByb2Nlc3MuXHJcblx0ICovXHJcblx0ZmlsdGVyZWREb2N1bWVudHMoXHJcblx0XHRzdG9yZU9iamVjdDogUmVjb3JkPHN0cmluZywgRG9jdW1lbnRbXT4sXHJcblx0XHRmaWVsZDogc3RyaW5nIHwgKChkb2M6IERvY3VtZW50KSA9PiBzdHJpbmcpID0gJ2F1dGhvcicsXHJcblx0XHR2YWxpZD86IChkb2M6IERvY3VtZW50KSA9PiBib29sZWFuLFxyXG5cdFx0c29ydDogKGE6IERvY3VtZW50LCBiOiBEb2N1bWVudCkgPT4gbnVtYmVyID0gKFxyXG5cdFx0XHRhOiBEb2N1bWVudCxcclxuXHRcdFx0YjogRG9jdW1lbnRcclxuXHRcdCkgPT4ge1xyXG5cdFx0XHRpZiAoKGEgYXMgYW55KVt0aGlzLl9pZChhKV0gPCAoYiBhcyBhbnkpW3RoaXMuX2lkKGIpXSkgcmV0dXJuIC0xO1xyXG5cclxuXHRcdFx0aWYgKChhIGFzIGFueSlbdGhpcy5faWQoYSldID4gKGIgYXMgYW55KVt0aGlzLl9pZChiKV0pIHJldHVybiAxO1xyXG5cclxuXHRcdFx0cmV0dXJuIDA7XHJcblx0XHR9XHJcblx0KTogKCkgPT4gdm9pZCB7XHJcblx0XHRjb25zdCBjYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcclxuXHRcdFx0LyogcmVtb3ZlIGRvY3MgaWYgdGhleSB3ZXJlIHJlbW92ZWQgKi9cclxuXHRcdFx0Zm9yIChjb25zdCBwYXJlbnRJZCBpbiBzdG9yZU9iamVjdCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSBzdG9yZU9iamVjdFtwYXJlbnRJZF0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuXHRcdFx0XHRcdGNvbnN0IF9maWVsZCA9XHJcblx0XHRcdFx0XHRcdHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJ1xyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGQoc3RvcmVPYmplY3RbcGFyZW50SWRdW2ldKVxyXG5cdFx0XHRcdFx0XHRcdDogZmllbGQ7XHJcblx0XHRcdFx0XHRjb25zdCBfZG9jOiBhbnkgPSBzdG9yZU9iamVjdFtwYXJlbnRJZF1baV07XHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhdGhpcy5fZG9jcy5maW5kKChkb2M6IGFueSkgPT5cclxuXHRcdFx0XHRcdFx0XHRBcnJheS5pc0FycmF5KGRvY1tfZmllbGRdKVxyXG5cdFx0XHRcdFx0XHRcdFx0PyBkb2NbX2ZpZWxkXS5pbmNsdWRlcyhfZG9jW3RoaXMuX2lkKGRvYyldKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBkb2NbX2ZpZWxkXSA9PT0gX2RvY1t0aGlzLl9pZChkb2MpXVxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbcGFyZW50SWRdLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIGFkZCBkb2NzIGlmIHRoZXkgYXJlIG5vdCBhZGRlZCAqL1xyXG5cdFx0XHRmb3IgKGNvbnN0IGRvYyBvZiB0aGlzLl9kb2NzKSB7XHJcblx0XHRcdFx0Y29uc3QgX2ZpZWxkID0gdHlwZW9mIGZpZWxkID09PSAnZnVuY3Rpb24nID8gZmllbGQoZG9jKSA6IGZpZWxkO1xyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHR0eXBlb2YgdmFsaWQgPT09ICdmdW5jdGlvbidcclxuXHRcdFx0XHRcdFx0PyAhdmFsaWQoZG9jKVxyXG5cdFx0XHRcdFx0XHQ6IEFycmF5LmlzQXJyYXkoKGRvYyBhcyBhbnkpW19maWVsZF0pXHJcblx0XHRcdFx0XHRcdD8gIShkb2MgYXMgYW55KVtfZmllbGRdPy5sZW5ndGhcclxuXHRcdFx0XHRcdFx0OiAhKGRvYyBhcyBhbnkpW19maWVsZF1cclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRmaWVsZChkb2MpICYmXHJcblx0XHRcdFx0XHRcdCFzdG9yZU9iamVjdFsoZG9jIGFzIGFueSlbX2ZpZWxkXV0uZmluZChcclxuXHRcdFx0XHRcdFx0XHQoYykgPT4gYy5faWQgPT09IGRvYy5faWRcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXS5wdXNoKGRvYyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KChkb2MgYXMgYW55KVtfZmllbGRdKSkge1xyXG5cdFx0XHRcdFx0KGRvYyBhcyBhbnkpW19maWVsZF0uZm9yRWFjaCgoX2ZpZWxkOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbX2ZpZWxkXSA9IHN0b3JlT2JqZWN0W19maWVsZF0gfHwgW107XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0IXN0b3JlT2JqZWN0W19maWVsZF0uZmluZCgoYykgPT4gYy5faWQgPT09IGRvYy5faWQpXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdHN0b3JlT2JqZWN0W19maWVsZF0ucHVzaChkb2MpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dID1cclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dIHx8IFtdO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IXN0b3JlT2JqZWN0Wyhkb2MgYXMgYW55KVtfZmllbGRdXS5maW5kKFxyXG5cdFx0XHRcdFx0XHRcdChjKSA9PiBjLl9pZCA9PT0gZG9jLl9pZFxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0c3RvcmVPYmplY3RbKGRvYyBhcyBhbnkpW19maWVsZF1dLnB1c2goZG9jKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIHNvcnQgdGhlIGFycmF5J3MgKi9cclxuXHRcdFx0Zm9yIChjb25zdCBwYXJlbnRJZCBpbiBzdG9yZU9iamVjdCkge1xyXG5cdFx0XHRcdHN0b3JlT2JqZWN0W3BhcmVudElkXS5zb3J0KHNvcnQpO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdHRoaXMuX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xyXG5cclxuXHRcdHJldHVybiBjYWxsYmFjaztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRCBmb3IgYSBkb2N1bWVudC5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgZm9yIHdoaWNoIHRvIGdlbmVyYXRlIHRoZSBJRC5cclxuXHQgKiBAcmV0dXJucyBUaGUgdW5pcXVlIElEIGFzIGEgc3RyaW5nLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2lkKGRvYzogRG9jdW1lbnQpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChkb2MgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbXHJcblx0XHRcdHRoaXMuX2NvbmZpZy5faWQgfHwgJ19pZCdcclxuXHRcdF0/LnRvU3RyaW5nKCkgYXMgc3RyaW5nO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXhlY3V0ZXMgYWxsIHJlZ2lzdGVyZWQgZmlsdGVyIGRvY3VtZW50IGNhbGxiYWNrcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9maWx0ZXJEb2N1bWVudHMoKTogdm9pZCB7XHJcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMuX2ZpbHRlcmVkRG9jdW1lbnRzQ2FsbGJhY2tzKSB7XHJcblx0XHRcdGNhbGxiYWNrKCk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -1135,6 +1135,7 @@ class CrudService extends BaseService {
1135
1135
  this._store.getJson('docs_' + this._config.name, (docs) => {
1136
1136
  if (Array.isArray(docs)) {
1137
1137
  this._docs.push(...docs);
1138
+ this._filterDocuments();
1138
1139
  }
1139
1140
  });
1140
1141
  }
@@ -1235,6 +1236,9 @@ class CrudService extends BaseService {
1235
1236
  if (options.callback) {
1236
1237
  options.callback(resp);
1237
1238
  }
1239
+ if (typeof config.page !== 'number') {
1240
+ this._filterDocuments();
1241
+ }
1238
1242
  },
1239
1243
  error: (err) => {
1240
1244
  if (options.errCallback) {
@@ -1429,7 +1433,7 @@ class CrudService extends BaseService {
1429
1433
  obs.subscribe({
1430
1434
  next: (resp) => {
1431
1435
  if (resp) {
1432
- this._docs = this._docs.filter((d) => this._id(d) !== this._id(doc));
1436
+ this._docs.splice(this._docs.findIndex((d) => this._id(d) !== this._id(doc)), 1);
1433
1437
  this.setDocs();
1434
1438
  this._filterDocuments();
1435
1439
  if (options.callback) {