@reveldigital/player-client 1.0.9 → 1.0.11

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JldmVsZGlnaXRhbC9wbGF5ZXItY2xpZW50L3NyYy9saWIvaW50ZXJmYWNlcy9jbGllbnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGlnbm9yZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElDbGllbnQge1xyXG5cclxuICAgIGNhbGxiYWNrKC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcclxuXHJcbiAgICBnZXREZXZpY2VUaW1lKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxzdHJpbmc+O1xyXG5cclxuICAgIGdldERldmljZVRpbWVab25lTmFtZSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gICAgZ2V0RGV2aWNlVGltZVpvbmVJRCgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gICAgZ2V0RGV2aWNlVGltZVpvbmVPZmZzZXQoKTogUHJvbWlzZTxudW1iZXI+O1xyXG5cclxuICAgIGdldExhbmd1YWdlQ29kZSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gICAgZ2V0RGV2aWNlS2V5KCk6IFByb21pc2U8c3RyaW5nPjtcclxuXHJcbiAgICBzZW5kQ29tbWFuZChuYW1lOiBzdHJpbmcsIGFyZzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgICBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQ7XHJcblxyXG4gICAgdHJhY2soZXZlbnROYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM/OiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICAgIHRpbWVFdmVudChldmVudE5hbWU6IHN0cmluZyk6IHZvaWQ7XHJcblxyXG4gICAgbmV3RXZlbnRTZXNzaW9uKGlkPzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgICBnZXRSZXZlbFJvb3QoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG5cclxuICAgIGdldENvbW1hbmRNYXAoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG5cclxuICAgIGdldERldmljZSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gICAgZmluaXNoKCk6IHZvaWQ7XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JldmVsZGlnaXRhbC9wbGF5ZXItY2xpZW50L3NyYy9saWIvaW50ZXJmYWNlcy9jbGllbnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGlnbm9yZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElDbGllbnQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgdG8gdGhlIHBsYXllci5cclxuICAgICAqIFRoaXMgaXMgdGhlIHByaW1hcnkgbWV0aG9kIG9mIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgY2xpZW50IGFuZCB0aGUgcGxheWVyLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIGNhbGxiYWNrKC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBkZXZpY2UgbmFtZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBudWxsPn1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIGdldERldmljZVRpbWUoZGF0ZT86IERhdGUpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGRldmljZSB0aW1lIHpvbmUgbmFtZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBudWxsPn1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIGdldERldmljZVRpbWVab25lTmFtZSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGRldmljZSB0aW1lIHpvbmUgSURcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgbnVsbD59XHJcbiAgICAgKiBAbWVtYmVyb2YgSUNsaWVudFxyXG4gICAgICovXHJcbiAgICBnZXREZXZpY2VUaW1lWm9uZUlEKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgZGV2aWNlIHRpbWUgem9uZSBvZmZzZXRcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyIHwgbnVsbD59XHJcbiAgICAgKiBAbWVtYmVyb2YgSUNsaWVudFxyXG4gICAgICovXHJcbiAgICBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlciB8IG51bGw+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGRldmljZSBsYW5ndWFnZSBjb2RlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fVxyXG4gICAgICogQG1lbWJlcm9mIElDbGllbnRcclxuICAgICAqL1xyXG4gICAgZ2V0TGFuZ3VhZ2VDb2RlKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgZGV2aWNlIGtleVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBudWxsPn1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIGdldERldmljZUtleSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VuZCBjb21tYW5kIHRvIGRldmljZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gbmFtZSBcclxuICAgICAqIEBwYXJhbSBhcmcgXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIHNlbmRDb21tYW5kKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VuZCByZW1vdGUgY29tbWFuZCB0byBkZXZpY2VcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGRldmljZUtleXNcclxuICAgICAqIEBwYXJhbSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gYXJnXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIHNlbmRSZW1vdGVDb21tYW5kKGRldmljZUtleXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcsIGFyZzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyYWNrIGV2ZW50XHJcbiAgICAgKiBcclxuICAgICAqIEluIHRoZSBjYXNlIG9mIGEgdGltZWQgZXZlbnQsIHRoZSBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIHRpbWVFdmVudCBjYWxsIHRvIHRoZSB0cmFjayBjYWxsLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gZXZlbnROYW1lIFxyXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIHRyYWNrKGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0YXJ0IHRyYWNraW5nIG9mIGV2ZW50IHdpdGggZHVyYXRpb25cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGV2ZW50TmFtZVxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKiBAbWVtYmVyb2YgSUNsaWVudFxyXG4gICAgICovXHJcbiAgICB0aW1lRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3RhcnQgYSBuZXcgc2Vzc2lvblxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gaWQgb3B0aW9uYWwgc2Vzc2lvbiBJRFxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKiBAbWVtYmVyb2YgSUNsaWVudFxyXG4gICAgICovXHJcbiAgICBuZXdFdmVudFNlc3Npb24oaWQ/OiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgUmV2ZWwgc3lzdGVtXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fVxyXG4gICAgICogQG1lbWJlcm9mIElDbGllbnRcclxuICAgICAqL1xyXG4gICAgZ2V0UmV2ZWxSb290KCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGhlIGNvbW1hbmQgbWFwXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fVxyXG4gICAgICogQG1lbWJlcm9mIElDbGllbnRcclxuICAgICAqL1xyXG4gICAgZ2V0Q29tbWFuZE1hcCgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2lnbmFscyB0byB0aGUgcGxheWVyIHRoYXQgdGhlIGNsaWVudCBpcyBmaW5pc2hlZCBhbmQgdGhlIHBsYXllciBjYW4gdHJhbnNpdGlvbiB0byB0aGUgbmV4dCBzb3VyY2VcclxuICAgICAqL1xyXG4gICAgZmluaXNoKCk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgZGV2aWNlIGluZm9ybWF0aW9uXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fVxyXG4gICAgICogQG1lbWJlcm9mIElDbGllbnRcclxuICAgICAqL1xyXG4gICAgZ2V0RGV2aWNlKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgd2lkdGggb2YgdGhlIHZpc3VhbGl6YXRpb24gYXJlYVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXIgfCBudWxsPn1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIGdldFdpZHRoKCk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgaGVpZ2h0IG9mIHRoZSB2aXN1YWxpemF0aW9uIGFyZWFcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyIHwgbnVsbD59XHJcbiAgICAgKiBAbWVtYmVyb2YgSUNsaWVudFxyXG4gICAgICovXHJcbiAgICBnZXRIZWlnaHQoKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCB0aGUgZHVyYXRpb24gb2YgdGhlIGN1cnJlbnRseSBwbGF5aW5nIHNvdXJjZVxyXG4gICAgICogKG9ubHkgYXBwbGljYWJsZSB3aGVuIGFzc29jaWF0ZWQgd2l0aCBhIHBsYXlsaXN0KVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXIgfCBudWxsPn1cclxuICAgICAqIEBtZW1iZXJvZiBJQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIGdldER1cmF0aW9uKCk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGhlIFNESyB2ZXJzaW9uXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fVxyXG4gICAgICogQG1lbWJlcm9mIElDbGllbnRcclxuICAgICAqL1xyXG4gICAgZ2V0U2RrVmVyc2lvbigpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGEgcHJlZmVyZW5jZSB2YWx1ZS4gVXBkYXRlcyB0aGUgcHJlZmVyZW5jZSB2YWx1ZSBpbiB0aGUgQ01TLlxyXG4gICAgICogXHJcbiAgICAgKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBoYXZlIHRoZSBnYWRnZXQgcHJlc2VudCBhIFVJIGZvciBzZXR0aW5nIHByZWZlcmVuY2VzLlxyXG4gICAgICogT25seSBhdmFpbGFibGUgZHVyaW5nIGRlc2lnbiB0aW1lLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ga2V5IFByZWZlcm5jZSBrZXlcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBQcmVmZXJlbmNlIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHNldFByZWZlcmVuY2Uoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTogdm9pZDtcclxufSJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, fromEvent, Subject } from 'rxjs';
3
3
  import { map, share, tap } from 'rxjs/operators';
4
+ import { version } from './version';
4
5
  import * as i0 from "@angular/core";
5
6
  export class PlayerClientService {
6
7
  // private onPostMessageSub: Subscription;
@@ -316,6 +317,60 @@ export class PlayerClientService {
316
317
  });
317
318
  return device[0];
318
319
  }
320
+ /**
321
+ * Returns the width of the visualization area.
322
+ *
323
+ * @returns Width of the visualization area
324
+ */
325
+ async getWidth() {
326
+ const client = await this.getClient();
327
+ return client.getWidth();
328
+ }
329
+ /**
330
+ * Returns the height of the visualization area.
331
+ *
332
+ * @returns Height of the visualization area
333
+ */
334
+ async getHeight() {
335
+ const client = await this.getClient();
336
+ return client.getHeight();
337
+ }
338
+ /**
339
+ * Returns the duration of the currently playing source.
340
+ * (only applicable when associated with a playlist)
341
+ *
342
+ * @returns Duration of the current item in milliseconds
343
+ */
344
+ async getDuration() {
345
+ const client = await this.getClient();
346
+ return client.getDuration();
347
+ }
348
+ /**
349
+ * Returns the current SDK version.
350
+ *
351
+ * @returns SDK version
352
+ */
353
+ async getSdkVersion() {
354
+ return Promise.resolve(version);
355
+ }
356
+ /**
357
+ * Set a preference value.
358
+ *
359
+ * Provides the ability to have the gadget present a UI for setting preferences.
360
+ * Only available during design time.
361
+ *
362
+ * @param key Prefernce key
363
+ * @param value Preference value
364
+ */
365
+ async setPreference(key, value) {
366
+ if (await this.isPreviewMode()) {
367
+ const client = await this.getClient();
368
+ client.setPreference(key, value);
369
+ }
370
+ else {
371
+ console.log('%csetPreference() is only available in preview mode.', 'background-color:blue; color:yellow;');
372
+ }
373
+ }
319
374
  // ---
320
375
  // PRIVATE METHODS.
321
376
  // ---
@@ -413,11 +468,32 @@ class NoopClient {
413
468
  async getCommandMap() {
414
469
  return Promise.resolve('{}');
415
470
  }
471
+ finish() {
472
+ // NOOP implement, nothing to do....
473
+ }
416
474
  async getDevice() {
417
475
  return Promise.resolve(null);
418
476
  }
419
- finish() {
420
- // NOOP implement, nothing to do....
477
+ async getWidth() {
478
+ return Promise.resolve(null);
479
+ }
480
+ async getHeight() {
481
+ return Promise.resolve(null);
482
+ }
483
+ async getDuration() {
484
+ return Promise.resolve(null);
485
+ }
486
+ async getSdkVersion() {
487
+ return Promise.resolve(version);
488
+ }
489
+ setPreference(key, value) {
490
+ //if (window.parent !== window.top) {
491
+ window.parent.postMessage(JSON.stringify({
492
+ type: 'setPreference',
493
+ key: key,
494
+ value: value
495
+ }), '*');
496
+ //}
421
497
  }
422
498
  }
423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmV2ZWxkaWdpdGFsL3BsYXllci1jbGllbnQvc3JjL2xpYi9wbGF5ZXItY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFvQmpELE1BQU0sT0FBTyxtQkFBbUI7SUFtRDlCLDBDQUEwQztJQUMxQyxpRUFBaUU7SUFDakUsMkNBQTJDO0lBQzNDLCtDQUErQztJQUMvQywrQ0FBK0M7SUFDL0Msc0RBQXNEO0lBQ3RELHdFQUF3RTtJQUN4RSxhQUFhO0lBQ2IseUJBQXlCO0lBQ3pCLEtBQUs7SUFFTCxjQUFjO0lBQ2QsWUFBWSxJQUFZO1FBMUR4Qjs7V0FFRztRQUNJLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBQzVDOztXQUVHO1FBQ0ksYUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDOztXQUVHO1FBQ0ksYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDSSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVUvQixjQUFjO1FBQ04sZ0JBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUNsRSxLQUFLLEVBQUUsRUFDUCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUNuQixDQUFDO1FBR0YsY0FBYztRQUNOLGVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFF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QU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWU7UUFFMUIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUV2QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUUxQyxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFVBQW9CLEVBQUUsSUFBWSxFQUFFLEdBQVc7UUFFdEUsb0NBQW9DO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBaUIsRUFBRSxVQUFtQjtRQUVqRCxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxTQUFpQjtRQUVoQyxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFXO1FBRWhDLG9DQUFvQztJQUN0QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVk7UUFFdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYTtRQUV4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTO1FBRXBCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTTtRQUVYLG9DQUFvQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBnYWRnZXRzIH0gZnJvbSAnQHJldmVsZGlnaXRhbC9nYWRnZXQtdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgc2hhcmUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSUNvbW1hbmQgfSBmcm9tICcuL2ludGVyZmFjZXMvY29tbWFuZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJRGV2aWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2RldmljZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJRXZlbnRQcm9wZXJ0aWVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2V2ZW50LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSUNsaWVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9jbGllbnQuaW50ZXJmYWNlJztcclxuXHJcblxyXG4vLyBTbyB0aGF0IFR5cGVTY3JpcHQgZG9lc24ndCBjb21wbGFpbiwgd2UncmUgZ29pbmcgdG8gYXVnbWVudCB0aGUgR0xPQkFMIC8gV0lORE9XIFxyXG4vLyBuYW1lLXNwYWNlIGRlZmluaXRpb24gdG8gaW5jbHVkZSB0aGUgVHJhY2tlciBBUEkuIFRoaXMgYWxzbyBwcm92aWRlcyB1cyB3aXRoIGEgcGxhY2VcclxuLy8gdG8gYWN0dWFsbHkgRE9DVU1FTlQgdGhlIEFQSSBzbyB0aGF0IG91ciBkZXZlbG9wZXJzIGFyZW4ndCBndWVzc2luZyBhYm91dCB3aGF0J3NcclxuLy8gYXZhaWxhYmxlIG9uIHRoZSBsaWJyYXJ5LlxyXG5cclxuLyoqIEBpZ25vcmUgKi9cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIHZhciBDbGllbnQ6IElDbGllbnQ7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYXllckNsaWVudFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgY2xpZW50UHJvbWlzZTogUHJvbWlzZTxJQ2xpZW50PiB8IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbW1hbmRzIHNlbnQgdG8gdGhpcyBwbGF5ZXIuXHJcbiAgICovXHJcbiAgcHVibGljIG9uQ29tbWFuZCQgPSBuZXcgU3ViamVjdDxJQ29tbWFuZD4oKTtcclxuICAvKipcclxuICAgKiBTaWduYWxzIHRoZSBnYWRnZXQgaGFzIGJlZW4gbG9hZGVkIGFuZCBpcyByZWFkeSB0byBzdGFydC5cclxuICAgKi9cclxuICBwdWJsaWMgb25SZWFkeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICAvKipcclxuICAgKiBTaWduYWxzIHRoZSBnYWRnZXQgaGFzIGJlZW4gc3RhcnRlZCBieSB0aGUgcGxheWVyLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblN0YXJ0JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgLyoqXHJcbiAgICogU2lnbmFscyB0aGUgZ2FkZ2V0cyBoYXMgYmVlbiBzdG9wcGVkIGJ5IHRoZSBwbGF5ZXIuXHJcbiAgICovXHJcbiAgcHVibGljIG9uU3RvcCQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvL1xyXG4gIC8vIFR3byBtZXRob2RzIGF2YWlsYWJsZSBmb3IgY2FsbGluZyBpbnRvIHRoZSBsaWJyYXJ5OlxyXG4gIC8vXHJcbiAgLy8gMSkgVXNpbmcgZGlzcGF0Y2hFdmVudCgpIHdpdGggdGhlIGZvbGxvd2luZyBjdXN0b20gZXZlbnRzXHJcbiAgLy8gMikgVXNpbmcgdGhlIHdpbmRvdyBzY29wZWQgUmV2ZWxEaWdpdGFsIG9iamVjdCBhcyBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3RvclxyXG4gIC8vXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIG9uU3RhcnRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgb25TdGFydEV2dCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdSZXZlbERpZ2l0YWwuU3RhcnQnKS5waXBlKFxyXG4gICAgc2hhcmUoKSxcclxuICAgIHRhcCh0aGlzLm9uU3RhcnQkKVxyXG4gICk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIG9uU3RvcFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBvblN0b3BFdnQkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnUmV2ZWxEaWdpdGFsLlN0b3AnKS5waXBlKFxyXG4gICAgc2hhcmUoKSxcclxuICAgIHRhcCh0aGlzLm9uU3RvcCQpXHJcbiAgKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgb25Db21tYW5kU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIG9uQ29tbWFuZEV2dCQgPSBmcm9tRXZlbnQ8SUNvbW1hbmQ+KGRvY3VtZW50LCAnUmV2ZWxEaWdpdGFsLkNvbW1hbmQnKS5waXBlKFxyXG4gICAgbWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIHsgbmFtZTogZS5kZXRhaWwubmFtZSwgYXJnOiBlLmRldGFpbC5hcmcgfSBhcyBJQ29tbWFuZCB9KSxcclxuICAgIHNoYXJlKCksXHJcbiAgICB0YXAodGhpcy5vbkNvbW1hbmQkKVxyXG4gICk7XHJcblxyXG4gIC8vIHByaXZhdGUgb25Qb3N0TWVzc2FnZVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIC8vIHByaXZhdGUgb25Qb3N0TWVzc2FnZUV2dCQgPSBmcm9tRXZlbnQod2luZG93LCAnbWVzc2FnZScpLnBpcGUoXHJcbiAgLy8gICBmaWx0ZXIoKG1lc3NhZ2VFdmVudDogTWVzc2FnZUV2ZW50KSA9PlxyXG4gIC8vICAgICBtZXNzYWdlRXZlbnQuc291cmNlICE9PSB3aW5kb3cucGFyZW50ICYmXHJcbiAgLy8gICAgIHR5cGVvZiBtZXNzYWdlRXZlbnQuZGF0YSA9PT0gJ3N0cmluZycgJiZcclxuICAvLyAgICAgbWVzc2FnZUV2ZW50LmRhdGEuc3RhcnRzV2l0aCgncmV2ZWxkaWdpdGFsOicpKSxcclxuICAvLyAgIG1hcCgoZTogYW55KSA9PiB7IHJldHVybiBKU09OLnBhcnNlKGUuc3Vic3RyaW5nKDEzKSkgYXMgQ29tbWFuZCB9KSxcclxuICAvLyAgIHNoYXJlKCksXHJcbiAgLy8gICB0YXAodGhpcy5vbkNvbW1hbmQkKVxyXG4gIC8vICk7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgY29uc3RydWN0b3Ioem9uZTogTmdab25lKSB7XHJcblxyXG4gICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgKHdpbmRvdyBhcyBhbnkpLlJldmVsRGlnaXRhbCA9IHtcclxuICAgICAgQ29udHJvbGxlcjoge1xyXG4gICAgICAgIG9uQ29tbWFuZDogZnVuY3Rpb24gKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpIHtcclxuICAgICAgICAgIHpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgc2VsZi5vbkNvbW1hbmQkLm5leHQoeyBuYW1lOiBuYW1lLCBhcmc6IGFyZyB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25TdGFydDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLm9uU3RhcnQkLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uU3RvcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLm9uU3RvcCQubmV4dChudWxsKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25TdGFydFN1YiA9IHRoaXMub25TdGFydEV2dCQuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcbiAgICB0aGlzLm9uU3RvcFN1YiA9IHRoaXMub25TdG9wRXZ0JC5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuICAgIHRoaXMub25Db21tYW5kU3ViID0gdGhpcy5vbkNvbW1hbmRFdnQkLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG5cclxuICAgIHRoaXMuY2xpZW50UHJvbWlzZSA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5vblJlYWR5JC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm9uU3RhcnRTdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLm9uU3RvcFN1Yj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMub25Db21tYW5kU3ViPy51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMub25SZWFkeSQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaW5pdChkYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcclxuICAgICAgJyVj4pqZ77iPIEluaXRpYWxpemluZyBSZXZlbCBEaWdpdGFsIGNsaWVudCBsaWJyYXJ5JyxcclxuICAgICAgJ2JhY2tncm91bmQtY29sb3I6Ymx1ZTsgY29sb3I6eWVsbG93OydcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgdGhlIGdhZGdldCB0byBjb21tdW5pY2F0ZSB3aXRoIHBsYXllciBzY3JpcHRpbmcuXHJcbiAgICogSWYgdGhlIGFwcHJvcHJpYXRlIHNjcmlwdGluZyBpcyBpbiBwbGFjZSBpbiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVtcGxhdGUsIGNhbGxpbmcgdGhpcyBtZXRob2RcclxuICAgKiB3aWxsIGluaXRpYXRlIGEgY2FsbGJhY2sgd2hpY2ggY2FuIGJlIGFjdGVkIHVwb24gaW4gcGxheWVyIHNjcmlwdC5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGNsaWVudC5jYWxsYmFjaygndGVzdCcsICd0aGlzJyk7XHJcbiAgICogXHJcbiAgICogQHBhcmFtIGFyZ3MgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjYWxsYmFjayguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcblxyXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgY2xpZW50LmNhbGxiYWNrKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1swXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1sxXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1syXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1szXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDU6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1s0XSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjY2Vzc29yIG1ldGhvZCBmb3IgdGhlIHVzZXIgcHJlZmVyZW5jZXMgaW50ZXJmYWNlIGV4cG9zZWQgYnkgdGhlIEdhZGdldHMgQVBJLlxyXG4gICAqIFxyXG4gICAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vZ2FkZ2V0cy9kb2NzL2Jhc2ljfSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBHYWRnZXRzIEFQSS5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGNvbnN0cnVjdG9yKHB1YmxpYyBjbGllbnQ6IFBsYXllckNsaWVudFNlcnZpY2UpIHtcclxuICAgKiAgICAgICAgICAgIGxldCBwcmVmcyA9IGNsaWVudC5nZXRQcmVmcygpO1xyXG4gICAqICAgICAgICAgICAgbGV0IG15U3RyaW5nID0gcHJlZnMuZ2V0U3RyaW5nKCdteVN0cmluZ1ByZWYnKTtcclxuICAgKiB9XHJcbiAgICogQHJldHVybnMge2dhZGdldHMuUHJlZnN9IEdhZGdldCBBUEkgUHJlZnMgb2JqZWN0XHJcbiAgICovXHJcbiAgcHVibGljIGdldFByZWZzKCk6IGdhZGdldHMuUHJlZnMge1xyXG5cclxuICAgIHJldHVybiBuZXcgd2luZG93WydnYWRnZXRzJ11bJ1ByZWZzJ10oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgZGV2aWNlIHRpbWUgaW4gSVNPODYwMSBmb3JtYXQuXHJcbiAgICogQ3VycmVudCBkZXZpY2UgdGltZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBkZXZpY2UgdGltZXpvbmUgYXNzaWduZWQgdG8gdGhlIGRldmljZSBpbiB0aGUgQ01TLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkYXRlIE9wdGlvbmFsLiBJZiBzdXBwbGllZCB3aWxsIHRyYW5zbGF0ZSB0aGUgc3VwcGxpZWQgZGF0ZS90aW1lIHRvIGRldmljZSB0aW1lIGJhc2VkIG9uIHJlc3BlY3RpdmUgdGltZXpvbmVzLlxyXG4gICAqIEByZXR1cm5zIERhdGUvdGltZSBpbiBJU084NjAxIGZvcm1hdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIGlmIChkYXRlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VUaW1lKGRhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VUaW1lKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0aW1lem9uZSBuYW1lIGN1cnJlbnRseSBhc3NpZ25lZCB0byB0aGUgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFRpbWV6b25lIE5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZVpvbmVOYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldERldmljZVRpbWVab25lTmFtZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdGltZXpvbmUgSUQgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVGltZXpvbmUgSURcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZVpvbmVJRCgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VUaW1lWm9uZUlEKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBudW1lcmljYWwgb2Zmc2V0IGZyb20gR01UIG9mIHRoZSB0aW1lem9uZSBjdXJyZW50bHkgYXNzaWduZWQgdG8gdGhlIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBUaW1lem9uZSBvZmZzZXRcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZVpvbmVPZmZzZXQoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlVGltZVpvbmVPZmZzZXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGxhbmd1YWdlIGNvZGUgb2YgdGhlIGxhbmd1YWdlIGN1cnJlbnRseSBhc3NpZ25lZCB0byB0aGUgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIExhbmd1YWdlIGNvZGVcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGFuZ3VhZ2VDb2RlKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldExhbmd1YWdlQ29kZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIFJldmVsIERpZ2l0YWwgZGV2aWNlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBEZXZpY2Uga2V5XHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZUtleSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VLZXkoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgYSBjb21tYW5kIHRvIHRoZSBwbGF5ZXIgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lIENvbW1hbmQgbmFtZVxyXG4gICAqIEBwYXJhbSBhcmcgQ29tbWFuZCBhcmd1bWVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZW5kQ29tbWFuZChuYW1lOiBzdHJpbmcsIGFyZzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5nZXRDbGllbnQoKS50aGVuKChjbGllbnQpID0+IHtcclxuICAgICAgY2xpZW50LnNlbmRDb21tYW5kKG5hbWUsIGFyZyk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBhIGNvbW1hbmQgdG8gYW55IHJlbW90ZSBwbGF5ZXIgd2l0aCB0aGUgc3VwcGxpZWQgZGV2aWNlIGtleShzKS5cclxuICAgKiBOb3RlOiBSZW1vdGUgY29tbWFuZHMgY2FuIG9ubHkgYmUgZGVsaXZlcmVkIHRvIGRldmljZXMgd2l0aGluIHRoZSBzYW1lIGFjY291bnQgYXMgdGhlIHNlbmRlciBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRldmljZUtleXMgQXJyYXkgb2YgcmVtb3RlIGRldmljZSBrZXlzXHJcbiAgICogQHBhcmFtIG5hbWUgQ29tbWFuZCBuYW1lXHJcbiAgICogQHBhcmFtIGFyZyBDb21tYW5kIGFyZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGNsaWVudC5zZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzLCBuYW1lLCBhcmcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgYW4gZXZlbnQgZm9yIHVzZSB3aXRoIEFkSGF3ayBhbmFseXRpY3MuXHJcbiAgICogRXZlbnRzIGFyZSB1c2VkIGZvciB0cmFja2luZyB2YXJpb3VzIG1ldHJpY3MgaW5jbHVkaW5nIHVzYWdlIHN0YXRpc3RpY3MsIHBsYXllciBjb25kaXRpb24sIHN0YXRlIGNoYW5nZXMsIGV0Yy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZXZlbnROYW1lIFVuaXF1ZSBuYW1lIGZvciB0aGlzIGV2ZW50XHJcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgQSBtYXAgb2YgdXNlciBkZWZpbmVkIHByb3BlcnRpZXMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBldmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0cmFjayhldmVudE5hbWU6IHN0cmluZywgcHJvcGVydGllcz86IElFdmVudFByb3BlcnRpZXMpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBjbGllbnQudHJhY2soZXZlbnROYW1lLCBKU09OLnN0cmluZ2lmeShwcm9wZXJ0aWVzKSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIGZvciBpbml0aWF0aW5nIGEgdGltZWQgZXZlbnQuXHJcbiAgICogVGltZWQgZXZlbnRzIGFyZSB1c2VmdWwgZm9yIHRyYWNraW5nIHRoZSBkdXJhdGlvbiBvZiBhbiBldmVudCBhbmQgbXVzdCBiZSBwcm9jZWVkZWQgd2l0aCBhIGNhbGwgdG8gdHJhY2soKS5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGNsaWVudC50aW1lRXZlbnQoJ3Rlc3RFdmVudCcpO1xyXG4gICAqIGNsaWVudC50cmFjayhcInRlc3RcIiwgeyBcImFcIjogXCJiXCIgfSk7XHJcbiAgICogQHBhcmFtIGV2ZW50TmFtZSBVbmlxdWUgbmFtZSBmb3IgdGhpcyBldmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0aW1lRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBjbGllbnQudGltZUV2ZW50KGV2ZW50TmFtZSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBzZXNzaW9uIGlzIGEgd2F5IG9mIGdyb3VwaW5nIGV2ZW50cyB0b2dldGhlci4gRWFjaCBldmVudCBoYXMgYW4gYXNzb2NpYXRlZCBzZXNzaW9uIElELlxyXG4gICAqIFNlc3Npb24gSUQncyBhcmUgcmFuZG9tbHkgZ2VuZXJhdGVkIGFuZCByZXNldCBieSBzdWJzZXF1ZW50IGNhbGxzIHRvIG5ld0V2ZW50U2Vzc2lvbigpLlxyXG4gICAqIFxyXG4gICAqIEVhY2ggY2FsbCB0byB0cmFjaygpIHdpbGwgdXRpbGl6ZSB0aGUgc2FtZSBzZXNzaW9uIElELCB1bnRpbCBhbm90aGVyIGNhbGwgdG8gbmV3RXZlbnRTZXNzaW9uKCkuXHJcbiAgICogQHBhcmFtIGlkIE9wdGlvbmFsLiBVc2VyIHN1cHBsaWVkIHNlc3Npb24gSUQuIElmIG5vdCBzdXBwbGllZCBhIHJhbmRvbSBzZXNzaW9uIElEIHdpbGwgYmUgZ2VuZXJhdGVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZXdFdmVudFNlc3Npb24oaWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNsaWVudC5uZXdFdmVudFNlc3Npb24oKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjbGllbnQubmV3RXZlbnRTZXNzaW9uKGlkKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHJvb3QgZm9sZGVyIHV0aWxpemVkIGJ5IHRoaXMgcGxheWVyIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBQYXRoIHRvIHRoZSByb290IGZvbGRlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXRSZXZlbFJvb3QoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0UmV2ZWxSb290KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbWFwIG9mIGNvbW1hbmRzIGN1cnJlbnRseSBhY3RpdmUgZm9yIHRoaXMgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIE1hcCBvZiBjb21tYW5kcyBjdXJyZW50bHkgYWN0aXZlIGZvciB0aGlzIGRldmljZS5cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tbWFuZE1hcCgpOiBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgY2xpZW50LmdldENvbW1hbmRNYXAoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZSB0byB0aGUgcGxheWVyIHRoYXQgdGhpcyBnYWRnZXQgaGFzIGZpbmlzaGVkIGl0J3MgdmlzdWFsaXphdGlvbi5cclxuICAgKiBUaGlzIGFsbG93cyB0aGUgcGxheWVyIHRvIHByb2NlZWQgd2l0aCB0aGUgbmV4dCBpdGVtIGluIGEgcGxheWxpc3QgaWYgYXBwbGljYWJsZS5cclxuICAgKi9cclxuICBwdWJsaWMgZmluaXNoKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcblxyXG4gICAgICBjbGllbnQuZmluaXNoKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaXMgdGhlIGdhZGdldCBpcyBydW5uaW5nIGluIHByZXZpZXcgbW9kZS4gUHJldmlldyBtb2RlIGlzIGVuYWJsZWQgd2hlbiB0aGUgZ2FkZ2V0IGlzXHJcbiAgICogYmVpbmcgZWRpdGVkIGluIHRoZSBDTVMsIG9yIG90aGVyd2lzZSBub3QgcnVubmluZyBpbiBhIG5vcm1hbCBwbGF5ZXIgZW52aXJvbm1lbnQuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZ2FkZ2V0IGlzIHJ1bm5pbmcgaW4gcHJldmlldyBtb2RlLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGlzUHJldmlld01vZGUoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50IGluc3RhbmNlb2YgTm9vcENsaWVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBSZXR1cm5zIHRoZSBkZXZpY2UgZGV0YWlscyBhc3NvY2lhdGVkIHdpdGggdGhlIHBsYXllciBydW5uaW5nIHRoZSBnYWRnZXQgb3Igd2ViIGFwcC5cclxuICogXHJcbiAqIEByZXR1cm5zIERldmljZSBkZXRhaWxzLlxyXG4gKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlKCk6IFByb21pc2U8SURldmljZSB8IG51bGw+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIGxldCBvYmo6IGFueSA9IEpTT04ucGFyc2UoPHN0cmluZz5hd2FpdCBjbGllbnQuZ2V0RGV2aWNlKCkpO1xyXG5cclxuICAgIGNvbnN0IGRldmljZTogSURldmljZVtdID0gW29ial0ubWFwKChkZXZpY2U6IGFueSkgPT4ge1xyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuYW1lOiBkZXZpY2UubmFtZSxcclxuICAgICAgICByZWdpc3RyYXRpb25LZXk6IGRldmljZS5rZXksXHJcbiAgICAgICAgZGV2aWNlVHlwZTogZGV2aWNlLmRldmljZXR5cGUsXHJcbiAgICAgICAgZW50ZXJlZFNlcnZpY2U6IG5ldyBEYXRlKGRldmljZS5lbnRlcmVkc2VydmljZSksXHJcbiAgICAgICAgbGFuZ0NvZGU6IGRldmljZS5sYW5nY29kZSxcclxuICAgICAgICB0aW1lWm9uZTogZGV2aWNlLnRpbWV6b25lLFxyXG4gICAgICAgIHRhZ3M6IGRldmljZS5kZXNjcmlwdGlvbj8uc3BsaXQoJ1xcbicpLFxyXG4gICAgICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgICBjaXR5OiBkZXZpY2UubG9jYXRpb24/LmNpdHksXHJcbiAgICAgICAgICBzdGF0ZTogZGV2aWNlLmxvY2F0aW9uPy5zdGF0ZSxcclxuICAgICAgICAgIGNvdW50cnk6IGRldmljZS5sb2NhdGlvbj8uY291bnRyeSxcclxuICAgICAgICAgIHBvc3RhbENvZGU6IGRldmljZS5sb2NhdGlvbj8ucG9zdGFsY29kZSxcclxuICAgICAgICAgIGFkZHJlc3M6IGRldmljZS5sb2NhdGlvbj8uYWRkcmVzcyxcclxuICAgICAgICAgIGxhdGl0dWRlOiBkZXZpY2UubG9jYXRpb24/LmxhdGl0dWRlLFxyXG4gICAgICAgICAgbG9uZ2l0dWRlOiBkZXZpY2UubG9jYXRpb24/LmxvbmdpdHVkZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGV2aWNlWzBdO1xyXG4gIH1cclxuXHJcbiAgLy8gLS0tXHJcbiAgLy8gUFJJVkFURSBNRVRIT0RTLlxyXG4gIC8vIC0tLVxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBnZXRDbGllbnQoKTogUHJvbWlzZTxJQ2xpZW50PiB7XHJcblxyXG4gICAgaWYgKHRoaXMuY2xpZW50UHJvbWlzZSkge1xyXG5cclxuICAgICAgcmV0dXJuICh0aGlzLmNsaWVudFByb21pc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cuQ2xpZW50KSB7XHJcblxyXG4gICAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh3aW5kb3cuQ2xpZW50KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQSBcImNvbXBsZXRlXCIgc3RhdHVzIGluZGljYXRlcyB0aGF0IHRoZSBcImxvYWRcIiBldmVudCBoYXMgYmVlbiBmaXJlZCBvbiB0aGVcclxuICAgIC8vIHdpbmRvdzsgYW5kLCB0aGF0IGFsbCBzdWItcmVzb3VyY2VzIHN1Y2ggYXMgU2NyaXB0cywgSW1hZ2VzLCBhbmQgRnJhbWVzIGhhdmVcclxuICAgIC8vIGJlZW4gbG9hZGVkLlxyXG4gICAgaWYgKHdpbmRvdy5kb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuXHJcbiAgICAgIC8vIElmIHRoaXMgZXZlbnQgaGFzIGZpcmVkIEFORCB0aGUgM3JkLXBhcnR5IHNjcmlwdCBpc24ndCBhdmFpbGFibGUgKHNlZSBJRi1cclxuICAgICAgLy8gY29uZGl0aW9uIEJFRk9SRSB0aGlzIG9uZSksIGl0IG1lYW5zIHRoYXQgdGhlIDNyZC1wYXJ0eSBzY3JpcHQgZWl0aGVyXHJcbiAgICAgIC8vIGZhaWxlZCBvbiB0aGUgbmV0d29yayBvciB3YXMgQkxPQ0tFRCBieSBhbiBhZC1ibG9ja2VyLiBBcyBzdWNoLCB3ZSBoYXZlIHRvXHJcbiAgICAgIC8vIGZhbGwtYmFjayB0byB1c2luZyBhIG1vY2sgQVBJLlxyXG4gICAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShuZXcgTm9vcENsaWVudCgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQVNTRVJUOiBJZiB3ZSBtYWRlIGl0IHRoaXMgZmFyLCB0aGUgZG9jdW1lbnQgaGFzIG5vdCBjb21wbGV0ZWQgbG9hZGluZyAoYnV0IGl0XHJcbiAgICAvLyBtYXkgYmUgaW4gYW4gXCJpbnRlcmFjdGl2ZVwiIHN0YXRlIHdoaWNoIGlzIHdoZW4gSSBiZWxpZXZlIHRoYXQgdGhlIEFuZ3VsYXIgYXBwXHJcbiAgICAvLyBnZXRzIGJvb3RzdHJhcHBlZCkuIEFzIHN1Y2gsIHdlIG5lZWQgYmluZCB0byB0aGUgTE9BRCBldmVudCB0byB3YWl0IGZvciBvdXJcclxuICAgIC8vIHRoaXJkLXBhcnR5IHNjcmlwdHMgdG8gbG9hZCAob3IgZmFpbCB0byBsb2FkLCBvciBiZSBibG9ja2VkKS5cclxuICAgIHRoaXMuY2xpZW50UHJvbWlzZSA9IG5ldyBQcm9taXNlPElDbGllbnQ+KFxyXG4gICAgICAocmVzb2x2ZSkgPT4ge1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAgIFwibG9hZFwiLFxyXG4gICAgICAgICAgZnVuY3Rpb24gaGFuZGxlV2luZG93TG9hZCgpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSAzcmQtcGFydHkgbGlicmFyeSBpcyBlaXRoZXIgYXZhaWxhYmxlIG9yXHJcbiAgICAgICAgICAgIC8vIGl0J3Mgbm90IC0gdGhlcmUncyBubyBmdXJ0aGVyIGxvYWRpbmcgdG8gZG8uIElmIGl0J3Mgbm90XHJcbiAgICAgICAgICAgIC8vIHByZXNlbnQgb24gdGhlIGdsb2JhbCBzY29wZSwgd2UncmUgZ29pbmcgdG8gZmFsbC1iYWNrIHRvIHVzaW5nXHJcbiAgICAgICAgICAgIC8vIGEgbW9jayBBUEkuXHJcbiAgICAgICAgICAgIHJlc29sdmUod2luZG93LkNsaWVudCB8fCBuZXcgTm9vcENsaWVudCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG5cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xyXG5cclxuLy8gSSBwcm92aWRlIGEgbW9jayBBUEkgZm9yIHRoZSAzcmQtcGFydHkgc2NyaXB0LiBUaGlzIGp1c3QgYWxsb3dzIHRoZSBjb25zdW1pbmcgY29kZSB0b1xyXG4vLyBhY3QgYXMgdGhvdWdoIHRoZSBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBldmVuIGlmIGl0IGZhaWxlZCB0byBsb2FkIChleGFtcGxlLCBpdCB3YXNcclxuLy8gYmxvY2tlZCBieSBhbiBhZC1ibG9ja2VyKS5cclxuXHJcbi8qKiBAaWdub3JlICovXHJcbmNsYXNzIE5vb3BDbGllbnQgaW1wbGVtZW50cyBJQ2xpZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXHJcbiAgICAgICclY0NsaWVudCBBUEkgbm90IGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIG1vY2sgQVBJJyxcclxuICAgICAgJ2JhY2tncm91bmQtY29sb3I6Ymx1ZTsgY29sb3I6eWVsbG93OydcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsbGJhY2soLi4uYXJnczogYW55W10pOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREZXZpY2VUaW1lKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZVpvbmVOYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZUlEKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGFuZ3VhZ2VDb2RlKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VLZXkoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbmRDb21tYW5kKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZykge1xyXG5cclxuICAgIC8vIE5PT1AgaW1wbGVtZW50LCBub3RoaW5nIHRvIGRvLi4uLlxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrKGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdGltZUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmV3RXZlbnRTZXNzaW9uKGlkPzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UmV2ZWxSb290KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRDb21tYW5kTWFwKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgne30nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2UoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaW5pc2goKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG59XHJcbiJdfQ==
499
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmV2ZWxkaWdpdGFsL3BsYXllci1jbGllbnQvc3JjL2xpYi9wbGF5ZXItY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQWlCcEMsTUFBTSxPQUFPLG1CQUFtQjtJQW1EOUIsMENBQTBDO0lBQzFDLGlFQUFpRTtJQUNqRSwyQ0FBMkM7SUFDM0MsK0NBQStDO0lBQy9DLCtDQUErQztJQUMvQyxzREFBc0Q7SUFDdEQsd0VBQXdFO0lBQ3hFLGFBQWE7SUFDYix5QkFBeUI7SUFDekIsS0FBSztJQUVMLGNBQWM7SUFDZCxZQUFZLElBQVk7UUExRHhCOztXQUVHO1FBQ0ksZUFBVSxHQUFHLElBQUksT0FBTyxFQUFZLENBQUM7UUFDNUM7O1dBRUc7UUFDSSxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0M7O1dBRUc7UUFDSSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNoQzs7V0FFRztRQUNJLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBVS9CLGNBQWM7UUFDTixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQ2xFLEtBQUssRUFBRSxFQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ25CLENBQUM7UUFH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T0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBVyxFQUFFLEtBQWdDO1FBRWhFLHFDQUFxQztRQUVuQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxlQUFlO1lBQ3JCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLEVBQ0YsR0FBRyxDQUNKLENBQUM7UUFDSixHQUFHO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZ2FkZ2V0cyB9IGZyb20gJ0ByZXZlbGRpZ2l0YWwvZ2FkZ2V0LXR5cGVzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHNoYXJlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElDb21tYW5kIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbW1hbmQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSURldmljZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9kZXZpY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSUV2ZW50UHJvcGVydGllcyB9IGZyb20gJy4vaW50ZXJmYWNlcy9ldmVudC1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElDbGllbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvY2xpZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL3ZlcnNpb24nO1xyXG5cclxuLy9pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi92ZXJzaW9uLmpzJztcclxuXHJcbi8vIFNvIHRoYXQgVHlwZVNjcmlwdCBkb2Vzbid0IGNvbXBsYWluLCB3ZSdyZSBnb2luZyB0byBhdWdtZW50IHRoZSBHTE9CQUwgLyBXSU5ET1cgXHJcbi8vIG5hbWUtc3BhY2UgZGVmaW5pdGlvbiB0byBpbmNsdWRlIHRoZSBUcmFja2VyIEFQSS4gVGhpcyBhbHNvIHByb3ZpZGVzIHVzIHdpdGggYSBwbGFjZVxyXG4vLyB0byBhY3R1YWxseSBET0NVTUVOVCB0aGUgQVBJIHNvIHRoYXQgb3VyIGRldmVsb3BlcnMgYXJlbid0IGd1ZXNzaW5nIGFib3V0IHdoYXQnc1xyXG4vLyBhdmFpbGFibGUgb24gdGhlIGxpYnJhcnkuXHJcblxyXG4vKiogQGlnbm9yZSAqL1xyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgdmFyIENsaWVudDogSUNsaWVudDtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxheWVyQ2xpZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBjbGllbnRQcm9taXNlOiBQcm9taXNlPElDbGllbnQ+IHwgbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29tbWFuZHMgc2VudCB0byB0aGlzIHBsYXllci5cclxuICAgKi9cclxuICBwdWJsaWMgb25Db21tYW5kJCA9IG5ldyBTdWJqZWN0PElDb21tYW5kPigpO1xyXG4gIC8qKlxyXG4gICAqIFNpZ25hbHMgdGhlIGdhZGdldCBoYXMgYmVlbiBsb2FkZWQgYW5kIGlzIHJlYWR5IHRvIHN0YXJ0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblJlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG4gIC8qKlxyXG4gICAqIFNpZ25hbHMgdGhlIGdhZGdldCBoYXMgYmVlbiBzdGFydGVkIGJ5IHRoZSBwbGF5ZXIuXHJcbiAgICovXHJcbiAgcHVibGljIG9uU3RhcnQkID0gbmV3IFN1YmplY3QoKTtcclxuICAvKipcclxuICAgKiBTaWduYWxzIHRoZSBnYWRnZXRzIGhhcyBiZWVuIHN0b3BwZWQgYnkgdGhlIHBsYXllci5cclxuICAgKi9cclxuICBwdWJsaWMgb25TdG9wJCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8vXHJcbiAgLy8gVHdvIG1ldGhvZHMgYXZhaWxhYmxlIGZvciBjYWxsaW5nIGludG8gdGhlIGxpYnJhcnk6XHJcbiAgLy9cclxuICAvLyAxKSBVc2luZyBkaXNwYXRjaEV2ZW50KCkgd2l0aCB0aGUgZm9sbG93aW5nIGN1c3RvbSBldmVudHNcclxuICAvLyAyKSBVc2luZyB0aGUgd2luZG93IHNjb3BlZCBSZXZlbERpZ2l0YWwgb2JqZWN0IGFzIGRlZmluZWQgaW4gdGhlIGNvbnN0cnVjdG9yXHJcbiAgLy9cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgb25TdGFydFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBvblN0YXJ0RXZ0JCA9IGZyb21FdmVudChkb2N1bWVudCwgJ1JldmVsRGlnaXRhbC5TdGFydCcpLnBpcGUoXHJcbiAgICBzaGFyZSgpLFxyXG4gICAgdGFwKHRoaXMub25TdGFydCQpXHJcbiAgKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgb25TdG9wU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIG9uU3RvcEV2dCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdSZXZlbERpZ2l0YWwuU3RvcCcpLnBpcGUoXHJcbiAgICBzaGFyZSgpLFxyXG4gICAgdGFwKHRoaXMub25TdG9wJClcclxuICApO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBvbkNvbW1hbmRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgb25Db21tYW5kRXZ0JCA9IGZyb21FdmVudDxJQ29tbWFuZD4oZG9jdW1lbnQsICdSZXZlbERpZ2l0YWwuQ29tbWFuZCcpLnBpcGUoXHJcbiAgICBtYXAoKGU6IGFueSkgPT4geyByZXR1cm4geyBuYW1lOiBlLmRldGFpbC5uYW1lLCBhcmc6IGUuZGV0YWlsLmFyZyB9IGFzIElDb21tYW5kIH0pLFxyXG4gICAgc2hhcmUoKSxcclxuICAgIHRhcCh0aGlzLm9uQ29tbWFuZCQpXHJcbiAgKTtcclxuXHJcbiAgLy8gcHJpdmF0ZSBvblBvc3RNZXNzYWdlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgLy8gcHJpdmF0ZSBvblBvc3RNZXNzYWdlRXZ0JCA9IGZyb21FdmVudCh3aW5kb3csICdtZXNzYWdlJykucGlwZShcclxuICAvLyAgIGZpbHRlcigobWVzc2FnZUV2ZW50OiBNZXNzYWdlRXZlbnQpID0+XHJcbiAgLy8gICAgIG1lc3NhZ2VFdmVudC5zb3VyY2UgIT09IHdpbmRvdy5wYXJlbnQgJiZcclxuICAvLyAgICAgdHlwZW9mIG1lc3NhZ2VFdmVudC5kYXRhID09PSAnc3RyaW5nJyAmJlxyXG4gIC8vICAgICBtZXNzYWdlRXZlbnQuZGF0YS5zdGFydHNXaXRoKCdyZXZlbGRpZ2l0YWw6JykpLFxyXG4gIC8vICAgbWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIEpTT04ucGFyc2UoZS5zdWJzdHJpbmcoMTMpKSBhcyBDb21tYW5kIH0pLFxyXG4gIC8vICAgc2hhcmUoKSxcclxuICAvLyAgIHRhcCh0aGlzLm9uQ29tbWFuZCQpXHJcbiAgLy8gKTtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBjb25zdHJ1Y3Rvcih6b25lOiBOZ1pvbmUpIHtcclxuXHJcbiAgICBsZXQgc2VsZiA9IHRoaXM7XHJcbiAgICAod2luZG93IGFzIGFueSkuUmV2ZWxEaWdpdGFsID0ge1xyXG4gICAgICBDb250cm9sbGVyOiB7XHJcbiAgICAgICAgb25Db21tYW5kOiBmdW5jdGlvbiAobmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZykge1xyXG4gICAgICAgICAgem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLm9uQ29tbWFuZCQubmV4dCh7IG5hbWU6IG5hbWUsIGFyZzogYXJnIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblN0YXJ0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICB6b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIHNlbGYub25TdGFydCQubmV4dChudWxsKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25TdG9wOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICB6b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIHNlbGYub25TdG9wJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vblN0YXJ0U3ViID0gdGhpcy5vblN0YXJ0RXZ0JC5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuICAgIHRoaXMub25TdG9wU3ViID0gdGhpcy5vblN0b3BFdnQkLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG4gICAgdGhpcy5vbkNvbW1hbmRTdWIgPSB0aGlzLm9uQ29tbWFuZEV2dCQuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcblxyXG4gICAgdGhpcy5jbGllbnRQcm9taXNlID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLm9uUmVhZHkkLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMub25TdGFydFN1Yj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMub25TdG9wU3ViPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5vbkNvbW1hbmRTdWI/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5vblJlYWR5JC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHVibGljIHN0YXRpYyBpbml0KGRhdGE6IGFueSkge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAnJWPimpnvuI8gSW5pdGlhbGl6aW5nIFJldmVsIERpZ2l0YWwgY2xpZW50IGxpYnJhcnknLFxyXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIGFsbG93cyB0aGUgZ2FkZ2V0IHRvIGNvbW11bmljYXRlIHdpdGggcGxheWVyIHNjcmlwdGluZy5cclxuICAgKiBJZiB0aGUgYXBwcm9wcmlhdGUgc2NyaXB0aW5nIGlzIGluIHBsYWNlIGluIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZW1wbGF0ZSwgY2FsbGluZyB0aGlzIG1ldGhvZFxyXG4gICAqIHdpbGwgaW5pdGlhdGUgYSBjYWxsYmFjayB3aGljaCBjYW4gYmUgYWN0ZWQgdXBvbiBpbiBwbGF5ZXIgc2NyaXB0LlxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogY2xpZW50LmNhbGxiYWNrKCd0ZXN0JywgJ3RoaXMnKTtcclxuICAgKiBcclxuICAgKiBAcGFyYW0gYXJncyB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzXHJcbiAgICovXHJcbiAgcHVibGljIGNhbGxiYWNrKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5nZXRDbGllbnQoKS50aGVuKChjbGllbnQpID0+IHtcclxuXHJcbiAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIGNsaWVudC5jYWxsYmFjayhhcmdzWzBdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIGNsaWVudC5jYWxsYmFjayhhcmdzWzFdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIGNsaWVudC5jYWxsYmFjayhhcmdzWzJdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgIGNsaWVudC5jYWxsYmFjayhhcmdzWzNdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNTpcclxuICAgICAgICAgIGNsaWVudC5jYWxsYmFjayhhcmdzWzRdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWNjZXNzb3IgbWV0aG9kIGZvciB0aGUgdXNlciBwcmVmZXJlbmNlcyBpbnRlcmZhY2UgZXhwb3NlZCBieSB0aGUgR2FkZ2V0cyBBUEkuXHJcbiAgICogXHJcbiAgICogU2VlIHtAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9nYWRnZXRzL2RvY3MvYmFzaWN9IGZvciBtb3JlIGRldGFpbHMgb24gdGhlIEdhZGdldHMgQVBJLlxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogY29uc3RydWN0b3IocHVibGljIGNsaWVudDogUGxheWVyQ2xpZW50U2VydmljZSkge1xyXG4gICAqICAgICAgICAgICAgbGV0IHByZWZzID0gY2xpZW50LmdldFByZWZzKCk7XHJcbiAgICogICAgICAgICAgICBsZXQgbXlTdHJpbmcgPSBwcmVmcy5nZXRTdHJpbmcoJ215U3RyaW5nUHJlZicpO1xyXG4gICAqIH1cclxuICAgKiBAcmV0dXJucyB7Z2FkZ2V0cy5QcmVmc30gR2FkZ2V0IEFQSSBQcmVmcyBvYmplY3RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UHJlZnMoKTogZ2FkZ2V0cy5QcmVmcyB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyB3aW5kb3dbJ2dhZGdldHMnXVsnUHJlZnMnXSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBkZXZpY2UgdGltZSBpbiBJU084NjAxIGZvcm1hdC5cclxuICAgKiBDdXJyZW50IGRldmljZSB0aW1lIGlzIGRldGVybWluZWQgYnkgdGhlIGRldmljZSB0aW1lem9uZSBhc3NpZ25lZCB0byB0aGUgZGV2aWNlIGluIHRoZSBDTVMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRhdGUgT3B0aW9uYWwuIElmIHN1cHBsaWVkIHdpbGwgdHJhbnNsYXRlIHRoZSBzdXBwbGllZCBkYXRlL3RpbWUgdG8gZGV2aWNlIHRpbWUgYmFzZWQgb24gcmVzcGVjdGl2ZSB0aW1lem9uZXMuXHJcbiAgICogQHJldHVybnMgRGF0ZS90aW1lIGluIElTTzg2MDEgZm9ybWF0XHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZVRpbWUoZGF0ZT86IERhdGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgaWYgKGRhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gY2xpZW50LmdldERldmljZVRpbWUoZGF0ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xpZW50LmdldERldmljZVRpbWUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRpbWV6b25lIG5hbWUgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVGltZXpvbmUgTmFtZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZU5hbWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlVGltZVpvbmVOYW1lKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0aW1lem9uZSBJRCBjdXJyZW50bHkgYXNzaWduZWQgdG8gdGhlIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBUaW1lem9uZSBJRFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZUlEKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldERldmljZVRpbWVab25lSUQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIG51bWVyaWNhbCBvZmZzZXQgZnJvbSBHTVQgb2YgdGhlIHRpbWV6b25lIGN1cnJlbnRseSBhc3NpZ25lZCB0byB0aGUgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFRpbWV6b25lIG9mZnNldFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbGFuZ3VhZ2UgY29kZSBvZiB0aGUgbGFuZ3VhZ2UgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgTGFuZ3VhZ2UgY29kZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXRMYW5ndWFnZUNvZGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0TGFuZ3VhZ2VDb2RlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB1bmlxdWUgUmV2ZWwgRGlnaXRhbCBkZXZpY2Uga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIERldmljZSBrZXlcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlS2V5KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldERldmljZUtleSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBhIGNvbW1hbmQgdG8gdGhlIHBsYXllciBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5hbWUgQ29tbWFuZCBuYW1lXHJcbiAgICogQHBhcmFtIGFyZyBDb21tYW5kIGFyZ3VtZW50XHJcbiAgICovXHJcbiAgcHVibGljIHNlbmRDb21tYW5kKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBjbGllbnQuc2VuZENvbW1hbmQobmFtZSwgYXJnKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGEgY29tbWFuZCB0byBhbnkgcmVtb3RlIHBsYXllciB3aXRoIHRoZSBzdXBwbGllZCBkZXZpY2Uga2V5KHMpLlxyXG4gICAqIE5vdGU6IFJlbW90ZSBjb21tYW5kcyBjYW4gb25seSBiZSBkZWxpdmVyZWQgdG8gZGV2aWNlcyB3aXRoaW4gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgc2VuZGVyIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZGV2aWNlS2V5cyBBcnJheSBvZiByZW1vdGUgZGV2aWNlIGtleXNcclxuICAgKiBAcGFyYW0gbmFtZSBDb21tYW5kIG5hbWVcclxuICAgKiBAcGFyYW0gYXJnIENvbW1hbmQgYXJnXHJcbiAgICovXHJcbiAgcHVibGljIHNlbmRSZW1vdGVDb21tYW5kKGRldmljZUtleXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcsIGFyZzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5nZXRDbGllbnQoKS50aGVuKChjbGllbnQpID0+IHtcclxuICAgICAgY2xpZW50LnNlbmRSZW1vdGVDb21tYW5kKGRldmljZUtleXMsIG5hbWUsIGFyZyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZyBhbiBldmVudCBmb3IgdXNlIHdpdGggQWRIYXdrIGFuYWx5dGljcy5cclxuICAgKiBFdmVudHMgYXJlIHVzZWQgZm9yIHRyYWNraW5nIHZhcmlvdXMgbWV0cmljcyBpbmNsdWRpbmcgdXNhZ2Ugc3RhdGlzdGljcywgcGxheWVyIGNvbmRpdGlvbiwgc3RhdGUgY2hhbmdlcywgZXRjLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBldmVudE5hbWUgVW5pcXVlIG5hbWUgZm9yIHRoaXMgZXZlbnRcclxuICAgKiBAcGFyYW0gcHJvcGVydGllcyBBIG1hcCBvZiB1c2VyIGRlZmluZWQgcHJvcGVydGllcyB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGV2ZW50XHJcbiAgICovXHJcbiAgcHVibGljIHRyYWNrKGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzogSUV2ZW50UHJvcGVydGllcyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGNsaWVudC50cmFjayhldmVudE5hbWUsIEpTT04uc3RyaW5naWZ5KHByb3BlcnRpZXMpKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2QgZm9yIGluaXRpYXRpbmcgYSB0aW1lZCBldmVudC5cclxuICAgKiBUaW1lZCBldmVudHMgYXJlIHVzZWZ1bCBmb3IgdHJhY2tpbmcgdGhlIGR1cmF0aW9uIG9mIGFuIGV2ZW50IGFuZCBtdXN0IGJlIHByb2NlZWRlZCB3aXRoIGEgY2FsbCB0byB0cmFjaygpLlxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogY2xpZW50LnRpbWVFdmVudCgndGVzdEV2ZW50Jyk7XHJcbiAgICogY2xpZW50LnRyYWNrKFwidGVzdFwiLCB7IFwiYVwiOiBcImJcIiB9KTtcclxuICAgKiBAcGFyYW0gZXZlbnROYW1lIFVuaXF1ZSBuYW1lIGZvciB0aGlzIGV2ZW50XHJcbiAgICovXHJcbiAgcHVibGljIHRpbWVFdmVudChldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGNsaWVudC50aW1lRXZlbnQoZXZlbnROYW1lKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIHNlc3Npb24gaXMgYSB3YXkgb2YgZ3JvdXBpbmcgZXZlbnRzIHRvZ2V0aGVyLiBFYWNoIGV2ZW50IGhhcyBhbiBhc3NvY2lhdGVkIHNlc3Npb24gSUQuXHJcbiAgICogU2Vzc2lvbiBJRCdzIGFyZSByYW5kb21seSBnZW5lcmF0ZWQgYW5kIHJlc2V0IGJ5IHN1YnNlcXVlbnQgY2FsbHMgdG8gbmV3RXZlbnRTZXNzaW9uKCkuXHJcbiAgICogXHJcbiAgICogRWFjaCBjYWxsIHRvIHRyYWNrKCkgd2lsbCB1dGlsaXplIHRoZSBzYW1lIHNlc3Npb24gSUQsIHVudGlsIGFub3RoZXIgY2FsbCB0byBuZXdFdmVudFNlc3Npb24oKS5cclxuICAgKiBAcGFyYW0gaWQgT3B0aW9uYWwuIFVzZXIgc3VwcGxpZWQgc2Vzc2lvbiBJRC4gSWYgbm90IHN1cHBsaWVkIGEgcmFuZG9tIHNlc3Npb24gSUQgd2lsbCBiZSBnZW5lcmF0ZWQuXHJcbiAgICovXHJcbiAgcHVibGljIG5ld0V2ZW50U2Vzc2lvbihpZD86IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY2xpZW50Lm5ld0V2ZW50U2Vzc2lvbigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNsaWVudC5uZXdFdmVudFNlc3Npb24oaWQpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcm9vdCBmb2xkZXIgdXRpbGl6ZWQgYnkgdGhpcyBwbGF5ZXIgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFBhdGggdG8gdGhlIHJvb3QgZm9sZGVyXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldFJldmVsUm9vdCgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXRSZXZlbFJvb3QoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBtYXAgb2YgY29tbWFuZHMgY3VycmVudGx5IGFjdGl2ZSBmb3IgdGhpcyBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgTWFwIG9mIGNvbW1hbmRzIGN1cnJlbnRseSBhY3RpdmUgZm9yIHRoaXMgZGV2aWNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXRDb21tYW5kTWFwKCk6IFByb21pc2U8YW55PiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCBjbGllbnQuZ2V0Q29tbWFuZE1hcCgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlIHRvIHRoZSBwbGF5ZXIgdGhhdCB0aGlzIGdhZGdldCBoYXMgZmluaXNoZWQgaXQncyB2aXN1YWxpemF0aW9uLlxyXG4gICAqIFRoaXMgYWxsb3dzIHRoZSBwbGF5ZXIgdG8gcHJvY2VlZCB3aXRoIHRoZSBuZXh0IGl0ZW0gaW4gYSBwbGF5bGlzdCBpZiBhcHBsaWNhYmxlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaW5pc2goKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5nZXRDbGllbnQoKS50aGVuKChjbGllbnQpID0+IHtcclxuXHJcbiAgICAgIGNsaWVudC5maW5pc2goKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpcyB0aGUgZ2FkZ2V0IGlzIHJ1bm5pbmcgaW4gcHJldmlldyBtb2RlLiBQcmV2aWV3IG1vZGUgaXMgZW5hYmxlZCB3aGVuIHRoZSBnYWRnZXQgaXNcclxuICAgKiBiZWluZyBlZGl0ZWQgaW4gdGhlIENNUywgb3Igb3RoZXJ3aXNlIG5vdCBydW5uaW5nIGluIGEgbm9ybWFsIHBsYXllciBlbnZpcm9ubWVudC5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBnYWRnZXQgaXMgcnVubmluZyBpbiBwcmV2aWV3IG1vZGUsIGZhbHNlIG90aGVyd2lzZS5cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgaXNQcmV2aWV3TW9kZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQgaW5zdGFuY2VvZiBOb29wQ2xpZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFJldHVybnMgdGhlIGRldmljZSBkZXRhaWxzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGxheWVyIHJ1bm5pbmcgdGhlIGdhZGdldCBvciB3ZWIgYXBwLlxyXG4gKiBcclxuICogQHJldHVybnMgRGV2aWNlIGRldGFpbHMuXHJcbiAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2UoKTogUHJvbWlzZTxJRGV2aWNlIHwgbnVsbD4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgbGV0IG9iajogYW55ID0gSlNPTi5wYXJzZSg8c3RyaW5nPmF3YWl0IGNsaWVudC5nZXREZXZpY2UoKSk7XHJcblxyXG4gICAgY29uc3QgZGV2aWNlOiBJRGV2aWNlW10gPSBbb2JqXS5tYXAoKGRldmljZTogYW55KSA9PiB7XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IGRldmljZS5uYW1lLFxyXG4gICAgICAgIHJlZ2lzdHJhdGlvbktleTogZGV2aWNlLmtleSxcclxuICAgICAgICBkZXZpY2VUeXBlOiBkZXZpY2UuZGV2aWNldHlwZSxcclxuICAgICAgICBlbnRlcmVkU2VydmljZTogbmV3IERhdGUoZGV2aWNlLmVudGVyZWRzZXJ2aWNlKSxcclxuICAgICAgICBsYW5nQ29kZTogZGV2aWNlLmxhbmdjb2RlLFxyXG4gICAgICAgIHRpbWVab25lOiBkZXZpY2UudGltZXpvbmUsXHJcbiAgICAgICAgdGFnczogZGV2aWNlLmRlc2NyaXB0aW9uPy5zcGxpdCgnXFxuJyksXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgIGNpdHk6IGRldmljZS5sb2NhdGlvbj8uY2l0eSxcclxuICAgICAgICAgIHN0YXRlOiBkZXZpY2UubG9jYXRpb24/LnN0YXRlLFxyXG4gICAgICAgICAgY291bnRyeTogZGV2aWNlLmxvY2F0aW9uPy5jb3VudHJ5LFxyXG4gICAgICAgICAgcG9zdGFsQ29kZTogZGV2aWNlLmxvY2F0aW9uPy5wb3N0YWxjb2RlLFxyXG4gICAgICAgICAgYWRkcmVzczogZGV2aWNlLmxvY2F0aW9uPy5hZGRyZXNzLFxyXG4gICAgICAgICAgbGF0aXR1ZGU6IGRldmljZS5sb2NhdGlvbj8ubGF0aXR1ZGUsXHJcbiAgICAgICAgICBsb25naXR1ZGU6IGRldmljZS5sb2NhdGlvbj8ubG9uZ2l0dWRlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkZXZpY2VbMF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgdmlzdWFsaXphdGlvbiBhcmVhLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFdpZHRoIG9mIHRoZSB2aXN1YWxpemF0aW9uIGFyZWFcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0V2lkdGgoKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldFdpZHRoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIHZpc3VhbGl6YXRpb24gYXJlYS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBIZWlnaHQgb2YgdGhlIHZpc3VhbGl6YXRpb24gYXJlYVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXRIZWlnaHQoKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldEhlaWdodCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZHVyYXRpb24gb2YgdGhlIGN1cnJlbnRseSBwbGF5aW5nIHNvdXJjZS5cclxuICAgKiAob25seSBhcHBsaWNhYmxlIHdoZW4gYXNzb2NpYXRlZCB3aXRoIGEgcGxheWxpc3QpXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgRHVyYXRpb24gb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiBtaWxsaXNlY29uZHNcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0RHVyYXRpb24oKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldER1cmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFNESyB2ZXJzaW9uXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldFNka1ZlcnNpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZlcnNpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGEgcHJlZmVyZW5jZSB2YWx1ZS5cclxuICAgKiBcclxuICAgKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBoYXZlIHRoZSBnYWRnZXQgcHJlc2VudCBhIFVJIGZvciBzZXR0aW5nIHByZWZlcmVuY2VzLlxyXG4gICAqIE9ubHkgYXZhaWxhYmxlIGR1cmluZyBkZXNpZ24gdGltZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ga2V5IFByZWZlcm5jZSBrZXlcclxuICAgKiBAcGFyYW0gdmFsdWUgUHJlZmVyZW5jZSB2YWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBzZXRQcmVmZXJlbmNlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikge1xyXG5cclxuICAgIGlmIChhd2FpdCB0aGlzLmlzUHJldmlld01vZGUoKSkge1xyXG4gICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG4gICAgICBjbGllbnQuc2V0UHJlZmVyZW5jZShrZXksIHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICclY3NldFByZWZlcmVuY2UoKSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBwcmV2aWV3IG1vZGUuJyxcclxuICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gLS0tXHJcbiAgLy8gUFJJVkFURSBNRVRIT0RTLlxyXG4gIC8vIC0tLVxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBnZXRDbGllbnQoKTogUHJvbWlzZTxJQ2xpZW50PiB7XHJcblxyXG4gICAgaWYgKHRoaXMuY2xpZW50UHJvbWlzZSkge1xyXG5cclxuICAgICAgcmV0dXJuICh0aGlzLmNsaWVudFByb21pc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cuQ2xpZW50KSB7XHJcblxyXG4gICAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh3aW5kb3cuQ2xpZW50KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQSBcImNvbXBsZXRlXCIgc3RhdHVzIGluZGljYXRlcyB0aGF0IHRoZSBcImxvYWRcIiBldmVudCBoYXMgYmVlbiBmaXJlZCBvbiB0aGVcclxuICAgIC8vIHdpbmRvdzsgYW5kLCB0aGF0IGFsbCBzdWItcmVzb3VyY2VzIHN1Y2ggYXMgU2NyaXB0cywgSW1hZ2VzLCBhbmQgRnJhbWVzIGhhdmVcclxuICAgIC8vIGJlZW4gbG9hZGVkLlxyXG4gICAgaWYgKHdpbmRvdy5kb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuXHJcbiAgICAgIC8vIElmIHRoaXMgZXZlbnQgaGFzIGZpcmVkIEFORCB0aGUgM3JkLXBhcnR5IHNjcmlwdCBpc24ndCBhdmFpbGFibGUgKHNlZSBJRi1cclxuICAgICAgLy8gY29uZGl0aW9uIEJFRk9SRSB0aGlzIG9uZSksIGl0IG1lYW5zIHRoYXQgdGhlIDNyZC1wYXJ0eSBzY3JpcHQgZWl0aGVyXHJcbiAgICAgIC8vIGZhaWxlZCBvbiB0aGUgbmV0d29yayBvciB3YXMgQkxPQ0tFRCBieSBhbiBhZC1ibG9ja2VyLiBBcyBzdWNoLCB3ZSBoYXZlIHRvXHJcbiAgICAgIC8vIGZhbGwtYmFjayB0byB1c2luZyBhIG1vY2sgQVBJLlxyXG4gICAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShuZXcgTm9vcENsaWVudCgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQVNTRVJUOiBJZiB3ZSBtYWRlIGl0IHRoaXMgZmFyLCB0aGUgZG9jdW1lbnQgaGFzIG5vdCBjb21wbGV0ZWQgbG9hZGluZyAoYnV0IGl0XHJcbiAgICAvLyBtYXkgYmUgaW4gYW4gXCJpbnRlcmFjdGl2ZVwiIHN0YXRlIHdoaWNoIGlzIHdoZW4gSSBiZWxpZXZlIHRoYXQgdGhlIEFuZ3VsYXIgYXBwXHJcbiAgICAvLyBnZXRzIGJvb3RzdHJhcHBlZCkuIEFzIHN1Y2gsIHdlIG5lZWQgYmluZCB0byB0aGUgTE9BRCBldmVudCB0byB3YWl0IGZvciBvdXJcclxuICAgIC8vIHRoaXJkLXBhcnR5IHNjcmlwdHMgdG8gbG9hZCAob3IgZmFpbCB0byBsb2FkLCBvciBiZSBibG9ja2VkKS5cclxuICAgIHRoaXMuY2xpZW50UHJvbWlzZSA9IG5ldyBQcm9taXNlPElDbGllbnQ+KFxyXG4gICAgICAocmVzb2x2ZSkgPT4ge1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAgIFwibG9hZFwiLFxyXG4gICAgICAgICAgZnVuY3Rpb24gaGFuZGxlV2luZG93TG9hZCgpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSAzcmQtcGFydHkgbGlicmFyeSBpcyBlaXRoZXIgYXZhaWxhYmxlIG9yXHJcbiAgICAgICAgICAgIC8vIGl0J3Mgbm90IC0gdGhlcmUncyBubyBmdXJ0aGVyIGxvYWRpbmcgdG8gZG8uIElmIGl0J3Mgbm90XHJcbiAgICAgICAgICAgIC8vIHByZXNlbnQgb24gdGhlIGdsb2JhbCBzY29wZSwgd2UncmUgZ29pbmcgdG8gZmFsbC1iYWNrIHRvIHVzaW5nXHJcbiAgICAgICAgICAgIC8vIGEgbW9jayBBUEkuXHJcbiAgICAgICAgICAgIHJlc29sdmUod2luZG93LkNsaWVudCB8fCBuZXcgTm9vcENsaWVudCgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG5cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXHJcblxyXG4vLyBJIHByb3ZpZGUgYSBtb2NrIEFQSSBmb3IgdGhlIDNyZC1wYXJ0eSBzY3JpcHQuIFRoaXMganVzdCBhbGxvd3MgdGhlIGNvbnN1bWluZyBjb2RlIHRvXHJcbi8vIGFjdCBhcyB0aG91Z2ggdGhlIGxpYnJhcnkgaXMgYXZhaWxhYmxlIGV2ZW4gaWYgaXQgZmFpbGVkIHRvIGxvYWQgKGV4YW1wbGUsIGl0IHdhc1xyXG4vLyBibG9ja2VkIGJ5IGFuIGFkLWJsb2NrZXIpLlxyXG5cclxuLyoqIEBpZ25vcmUgKi9cclxuY2xhc3MgTm9vcENsaWVudCBpbXBsZW1lbnRzIElDbGllbnQge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcclxuICAgICAgJyVjQ2xpZW50IEFQSSBub3QgYXZhaWxhYmxlLCBmYWxsaW5nIGJhY2sgdG8gbW9jayBBUEknLFxyXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxsYmFjayguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xyXG5cclxuICAgIC8vIE5PT1AgaW1wbGVtZW50LCBub3RoaW5nIHRvIGRvLi4uLlxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERldmljZVRpbWUoZGF0ZT86IERhdGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZU5hbWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZVRpbWVab25lSUQoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZVRpbWVab25lT2Zmc2V0KCk6IFByb21pc2U8bnVtYmVyPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMYW5ndWFnZUNvZGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZUtleSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VuZENvbW1hbmQobmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIC8vIE5PT1AgaW1wbGVtZW50LCBub3RoaW5nIHRvIGRvLi4uLlxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbmRSZW1vdGVDb21tYW5kKGRldmljZUtleXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcsIGFyZzogc3RyaW5nKSB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhY2soZXZlbnROYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0aW1lRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXdFdmVudFNlc3Npb24oaWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRSZXZlbFJvb3QoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldENvbW1hbmRNYXAoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCd7fScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbmlzaCgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2UoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRXaWR0aCgpOiBQcm9taXNlPG51bWJlciB8IG51bGw+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEhlaWdodCgpOiBQcm9taXNlPG51bWJlciB8IG51bGw+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldER1cmF0aW9uKCk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2RrVmVyc2lvbigpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmVyc2lvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UHJlZmVyZW5jZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pIHtcclxuXHJcbiAgICAvL2lmICh3aW5kb3cucGFyZW50ICE9PSB3aW5kb3cudG9wKSB7XHJcblxyXG4gICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgIHR5cGU6ICdzZXRQcmVmZXJlbmNlJyxcclxuICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICAvL31cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,3 @@
1
+ // Generated by genversion.
2
+ export const version = '1.0.11';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JldmVsZGlnaXRhbC9wbGF5ZXItY2xpZW50L3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBnZW52ZXJzaW9uLlxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSAnMS4wLjExJ1xuIl19
@@ -12,6 +12,9 @@ import { RouterModule } from '@angular/router';
12
12
  import { APP_BASE_HREF } from '@angular/common';
13
13
  import * as i1$1 from '@angular/platform-browser';
14
14
 
15
+ // Generated by genversion.
16
+ const version = '1.0.11';
17
+
15
18
  class PlayerClientService {
16
19
  // private onPostMessageSub: Subscription;
17
20
  // private onPostMessageEvt$ = fromEvent(window, 'message').pipe(
@@ -348,6 +351,70 @@ class PlayerClientService {
348
351
  return device[0];
349
352
  });
350
353
  }
354
+ /**
355
+ * Returns the width of the visualization area.
356
+ *
357
+ * @returns Width of the visualization area
358
+ */
359
+ getWidth() {
360
+ return __awaiter(this, void 0, void 0, function* () {
361
+ const client = yield this.getClient();
362
+ return client.getWidth();
363
+ });
364
+ }
365
+ /**
366
+ * Returns the height of the visualization area.
367
+ *
368
+ * @returns Height of the visualization area
369
+ */
370
+ getHeight() {
371
+ return __awaiter(this, void 0, void 0, function* () {
372
+ const client = yield this.getClient();
373
+ return client.getHeight();
374
+ });
375
+ }
376
+ /**
377
+ * Returns the duration of the currently playing source.
378
+ * (only applicable when associated with a playlist)
379
+ *
380
+ * @returns Duration of the current item in milliseconds
381
+ */
382
+ getDuration() {
383
+ return __awaiter(this, void 0, void 0, function* () {
384
+ const client = yield this.getClient();
385
+ return client.getDuration();
386
+ });
387
+ }
388
+ /**
389
+ * Returns the current SDK version.
390
+ *
391
+ * @returns SDK version
392
+ */
393
+ getSdkVersion() {
394
+ return __awaiter(this, void 0, void 0, function* () {
395
+ return Promise.resolve(version);
396
+ });
397
+ }
398
+ /**
399
+ * Set a preference value.
400
+ *
401
+ * Provides the ability to have the gadget present a UI for setting preferences.
402
+ * Only available during design time.
403
+ *
404
+ * @param key Prefernce key
405
+ * @param value Preference value
406
+ */
407
+ setPreference(key, value) {
408
+ return __awaiter(this, void 0, void 0, function* () {
409
+ if (yield this.isPreviewMode()) {
410
+ const client = yield this.getClient();
411
+ client.setPreference(key, value);
412
+ }
413
+ else {
414
+ console.log('%csetPreference() is only available in preview mode.', 'background-color:blue; color:yellow;');
415
+ }
416
+ });
417
+ }
351
418
  // ---
352
419
  // PRIVATE METHODS.
353
420
  // ---
@@ -459,13 +526,42 @@ class NoopClient {
459
526
  return Promise.resolve('{}');
460
527
  });
461
528
  }
529
+ finish() {
530
+ // NOOP implement, nothing to do....
531
+ }
462
532
  getDevice() {
463
533
  return __awaiter(this, void 0, void 0, function* () {
464
534
  return Promise.resolve(null);
465
535
  });
466
536
  }
467
- finish() {
468
- // NOOP implement, nothing to do....
537
+ getWidth() {
538
+ return __awaiter(this, void 0, void 0, function* () {
539
+ return Promise.resolve(null);
540
+ });
541
+ }
542
+ getHeight() {
543
+ return __awaiter(this, void 0, void 0, function* () {
544
+ return Promise.resolve(null);
545
+ });
546
+ }
547
+ getDuration() {
548
+ return __awaiter(this, void 0, void 0, function* () {
549
+ return Promise.resolve(null);
550
+ });
551
+ }
552
+ getSdkVersion() {
553
+ return __awaiter(this, void 0, void 0, function* () {
554
+ return Promise.resolve(version);
555
+ });
556
+ }
557
+ setPreference(key, value) {
558
+ //if (window.parent !== window.top) {
559
+ window.parent.postMessage(JSON.stringify({
560
+ type: 'setPreference',
561
+ key: key,
562
+ value: value
563
+ }), '*');
564
+ //}
469
565
  }
470
566
  }
471
567
 
@@ -571,7 +667,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
571
667
  args: [{
572
668
  providedIn: 'root'
573
669
  }]
574
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ActivatedRoute }, { type: i2.Router }]; } });
670
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ActivatedRoute }, { type: i2.Router }]; } });
671
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JldmVsZGlnaXRhbC9wbGF5ZXItY2xpZW50L3NyYy9saWIvYXBwLWluaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEUsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7Ozs7QUFFekMsTUFBTSxPQUFPLEdBQVksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xFLENBQUMsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBRzdCLGNBQWM7QUFJZCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLElBQWdCLEVBQ2YsTUFBc0IsRUFDdEIsT0FBZTtRQUZoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUN6QixDQUFDO0lBRUQsSUFBSTtRQUVGLE9BQU8sSUFBSSxPQUFPLENBQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBRXpDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVqQixJQUFJLFNBQVMsRUFBRSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQ1QsK0JBQStCLEVBQy9CLHNDQUFzQyxDQUN2QyxDQUFDO2dCQUVGOzttQkFFRztnQkFDRyxNQUFPLENBQUMsT0FBTyxHQUFHO29CQUV0QixLQUFLLEVBQUU7d0JBQ0wsU0FBUyxDQUFDLEdBQVcsSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUM7d0JBRTlELFFBQVEs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MUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBlbmFibGVQcm9kTW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0ICogYXMgeWFtbCBmcm9tIFwianMteWFtbFwiO1xyXG5pbXBvcnQgKiBhcyBXZWJGb250IGZyb20gJ3dlYmZvbnRsb2FkZXInO1xyXG5cclxuY29uc3QgaXNMb2NhbDogYm9vbGVhbiA9IC9sb2NhbGhvc3QvLnRlc3QoZG9jdW1lbnQubG9jYXRpb24uaG9zdCk7XHJcbiFpc0xvY2FsICYmIGVuYWJsZVByb2RNb2RlKCk7XHJcblxyXG5cclxuLyoqIEBpZ25vcmUgKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwSW5pdFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHtcclxuICB9XHJcblxyXG4gIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcclxuXHJcbiAgICAgIHRoaXMubG9hZEZvbnRzKCk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICclY1J1bm5pbmcgaW4gZGV2ZWxvcG1lbnQgbW9kZScsXHJcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFNoaW0gdGhlIHNoaW5kaWcgcHJlZnMgZnVuY3Rpb25hbGl0eSBmb3IgZGV2IG1vZGVcclxuICAgICAgICAgKi9cclxuICAgICAgICAoPGFueT53aW5kb3cpLmdhZGdldHMgPSB7XHJcblxyXG4gICAgICAgICAgUHJlZnM6IGNsYXNzIHtcclxuICAgICAgICAgICAgZ2V0U3RyaW5nKGtleTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldEFycmF5KGtleTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpLnNwbGl0KCcsJykgfVxyXG5cclxuICAgICAgICAgICAgZ2V0Qm9vbChrZXk6IHN0cmluZykgeyByZXR1cm4gdGhpcy5nZXRQYXJhbWV0ZXJCeU5hbWUoa2V5KSA9PT0gJ3RydWUnIH1cclxuXHJcbiAgICAgICAgICAgIGdldENvdW50cnkoKSB7IH1cclxuXHJcbiAgICAgICAgICAgIGdldEZsb2F0KGtleTogc3RyaW5nKSB7IHJldHVybiBwYXJzZUZsb2F0KHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKGtleSkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldEludChrZXk6IHN0cmluZykgeyByZXR1cm4gcGFyc2VJbnQodGhpcy5nZXRQYXJhbWV0ZXJCeU5hbWUoa2V5KSkgfVxyXG5cclxuICAgICAgICAgICAgZ2V0TGFuZygpIHsgcmV0dXJuIHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKCdsYW5nJykgPT09ICcnID8gJ2VuJyA6IHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKCdsYW5nJyk7IH1cclxuXHJcbiAgICAgICAgICAgIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcsIHNlYXJjaCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKTogc3RyaW5nIHtcclxuXHJcbiAgICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW1xcXV0vZywgJ1xcXFwkJicpO1xyXG4gICAgICAgICAgICAgIGxldCByZWdleCA9IG5ldyBSZWdFeHAoJ1s/Jl0nICsgbmFtZSArICcoPShbXiYjXSopfCZ8I3wkKScpLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWMoc2VhcmNoKTtcclxuICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiAnJztcclxuICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csICcgJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5odHRwLmdldCgnYXNzZXRzL2dhZGdldC55YW1sJywge1xyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgICAgICB9KS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkb2M6IGFueSA9IHlhbWwubG9hZChkYXRhKTtcclxuICAgICAgICAgIGxldCBwYXJhbXM6IGFueSA9IHt9XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiBkb2MucHJlZnMpIHtcclxuICAgICAgICAgICAgcGFyYW1zW3ZhbC5uYW1lXSA9IHZhbC5kZWZhdWx0X3ZhbHVlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuX3JvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogcGFyYW1zLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIGAlY1VzZXIgcHJlZnMgbG9hZGVkIHN1Y2Nlc3NmdWxseWAsXHJcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yOmJsdWU7IGNvbG9yOnllbGxvdzsnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgJWNVbmFibGUgdG8gbG9hZCB1c2VyIHByZWZlcmVuY2VzIFlBTUwgZGVmaW5pdGlvbiBmaWxlOiAke2Vycn1gLFxyXG4gICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgJWNQbGVhc2Ugc2VlIG91ciBkZXZlbG9wZXIgZG9jdW1lbnRhdGlvbiBmb3IgaGVscCB3aXRoIHlvdXIgYXBwIGNvbmZpZ3VyYXRpb246IGh0dHBzOi8vZGV2ZWxvcGVyLnJldmVsZGlnaXRhbC5jb21gLFxyXG4gICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpyZWQ7IGNvbG9yOnllbGxvdzsnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGdldEZhbWlseU5hbWUoY3NzKSB7XHJcblxyXG4gICAgbGV0IEZPTlRfRkFNSUxZX1JFR0VYID0gL2ZvbnQtZmFtaWx5OlxccyooPzpbJiMzOTsmIzM0O10pKlsnXCJdKiguKz8pWydcIl0qKD86WyYjMzk7JiMzNDtdKSpcXHMqOy9pO1xyXG4gICAgaWYgKEZPTlRfRkFNSUxZX1JFR0VYLnRlc3QoY3NzKSkge1xyXG4gICAgICB2YXIgbWF0Y2hlcyA9IGNzcy5tYXRjaChGT05UX0ZBTUlMWV9SRUdFWCk7XHJcbiAgICAgIHJldHVybiBtYXRjaGVzWzFdLnNwbGl0KCcsJylbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgZ2l2ZW4gZm9udCBmcm9tIEdvb2dsZSBXZWIgRm9udHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkRm9udHMoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICBwYXJhbWV0ZXJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGZvbnRGYW1pbHkgPSB0aGlzLmdldEZhbWlseU5hbWUodmFsKTtcclxuICAgICAgICBpZiAoZm9udEZhbWlseSAhPT0gJycpIHtcclxuICAgICAgICAgIFdlYkZvbnQubG9hZCh7XHJcbiAgICAgICAgICAgIGdvb2dsZToge1xyXG4gICAgICAgICAgICAgIGZhbWlsaWVzOiBbZm9udEZhbWlseV1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZm9udGFjdGl2ZTogKGZhbWlseU5hbWUpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgJWNBY3RpdmF0aW5nIGZvbnQ6ICR7ZmFtaWx5TmFtZX1gLFxyXG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3I6Ymx1ZTsgY29sb3I6eWVsbG93OycpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmb250aW5hY3RpdmU6IChmYW1pbHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYCVjRm9udCBpbmFjdGl2ZTogJHtmYW1pbHlOYW1lfWAsXHJcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpyZWQ7IGNvbG9yOnllbGxvdzsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
672
+ //# sourceMappingURL=C:/Users/mike_/Documents/GitHub/reveldigital-client-library/dist/reveldigital/player-client/esm2020/lib/module.js.map
575
673
 
576
674
  /**
577
675
  * The safe style pipe is used when custom styles are defined for a gadget and must be applied to an Angular
@@ -607,7 +705,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
607
705
  declarations: [SafeStylePipe],
608
706
  exports: [SafeStylePipe],
609
707
  }]
610
- }] });
708
+ }] });
709
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1zdHlsZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmV2ZWxkaWdpdGFsL3BsYXllci1jbGllbnQvc3JjL2xpYi9zYWZlLXN0eWxlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHOUQ7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFJLENBQUM7SUFFaEQsU0FBUyxDQUFDLEtBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7OzJHQUxRLGFBQWE7eUdBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUh6QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxXQUFXO2lCQUNwQjs7QUFhRCxNQUFNLE9BQU8scUJBQXFCOzttSEFBckIscUJBQXFCO29IQUFyQixxQkFBcUIsaUJBWnJCLGFBQWEsYUFBYixhQUFhO29IQVliLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBzYWZlIHN0eWxlIHBpcGUgaXMgdXNlZCB3aGVuIGN1c3RvbSBzdHlsZXMgYXJlIGRlZmluZWQgZm9yIGEgZ2FkZ2V0IGFuZCBtdXN0IGJlIGFwcGxpZWQgdG8gYW4gQW5ndWxhclxyXG4gKiBjb21wb25lbnQuIFRoaXMgcGlwZSB3aWxsIGVuc3VyZSB0aGUgc3R5bGUgY2FuIGJlIGFwcGllZCBzYWZlbHkgYnkgdXRpbGl6aW5nIHRoZSBEb21TYW5pdGl6ZXIuXHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8aDIgW3N0eWxlXT1cInN0eWxlIHwgc2FmZVN0eWxlXCI+U2FtcGxlIFByZWY6IHt7IHByZWZzLmdldFN0cmluZygnbXlTdHJpbmdQcmVmJykgfX08L2gyPlxyXG4gKi9cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogJ3NhZmVTdHlsZScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYWZlU3R5bGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplZDogRG9tU2FuaXRpemVyKSB7IH1cclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHVua25vd24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplZC5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodmFsdWUpO1xyXG4gICAgfVxyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbU2FmZVN0eWxlUGlwZV0sXHJcbiAgICBleHBvcnRzOiBbU2FmZVN0eWxlUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1NhZmVTdHlsZVBpcGVNb2R1bGUgeyB9XHJcbiJdfQ==
710
+ //# sourceMappingURL=C:/Users/mike_/Documents/GitHub/reveldigital-client-library/dist/reveldigital/player-client/esm2020/lib/module.js.map
611
711
 
612
712
  class PlayerClientModule {
613
713
  }
@@ -671,15 +771,21 @@ function initializeApp(appInitService) {
671
771
  PlayerClientService.init({});
672
772
  yield appInitService.init();
673
773
  });
674
- }
774
+ }
775
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWNsaWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXZlbGRpZ2l0YWwvcGxheWVyLWNsaWVudC9zcmMvbGliL3BsYXllci1jbGllbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBZ0MxRCxNQUFNLE9BQU8sa0JBQWtCOztnSEFBbEIsa0JBQWtCO2lIQUFsQixrQkFBa0IsWUF6QjNCLGdCQUFnQixtQkFFaEIscUJBQXFCLGFBR3JCLHFCQUFxQjtpSEFvQlosa0JBQWtCLGFBbEJsQixDQUFDO1lBQ1YsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLGFBQWE7WUFDekIsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDO1lBQzNDLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRDtZQUNFLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2YsSUFBSTtvQkFDRixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUN0QztnQkFBQyxNQUFNO29CQUNOLE9BQU8sSUFBSSxDQUFDO2lCQUNiO1lBQ0gsQ0FBQztTQUNGO1FBQ0QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsQ0FBQyxZQXhCNUM7WUFDUCxnQkFBZ0I7WUFDaEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEIscUJBQXFCO1NBQ3RCLEVBRUMscUJBQXFCOzRGQW9CWixrQkFBa0I7a0JBM0I5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUN4QixxQkFBcUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO29CQUNELFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixVQUFVLEVBQUUsYUFBYTs0QkFDekIsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDOzRCQUMzQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsU0FBUzs0QkFDbEIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQ0FDZixJQUFJO29DQUNGLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7aUNBQ3RDO2dDQUFDLE1BQU07b0NBQ04sT0FBTyxJQUFJLENBQUM7aUNBQ2I7NEJBQ0gsQ0FBQzt5QkFDRjt3QkFDRCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDO2lCQUN0RDs7QUFHRCxTQUFTLGFBQWEsQ0FBQyxjQUE4QjtJQUNuRCxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBMT0NBTEVfSUQsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF5ZXJDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi9wbGF5ZXItY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwSW5pdFNlcnZpY2UgfSBmcm9tICcuL2FwcC1pbml0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBUFBfQkFTRV9IUkVGIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nU2FmZVN0eWxlUGlwZU1vZHVsZSB9IGZyb20gJy4vc2FmZS1zdHlsZS5waXBlJztcblxuZGVjbGFyZSB2YXIgZ2FkZ2V0czogYW55O1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZS5mb3JSb290KFtdKSxcbiAgICBOZ1NhZmVTdHlsZVBpcGVNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE5nU2FmZVN0eWxlUGlwZU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVBcHAsXG4gICAgZGVwczogW0FwcEluaXRTZXJ2aWNlLCBQbGF5ZXJDbGllbnRTZXJ2aWNlXSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTE9DQUxFX0lELFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBuZXcgZ2FkZ2V0cy5QcmVmcygpLmdldExhbmcoKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gJ2VuJztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHsgcHJvdmlkZTogQVBQX0JBU0VfSFJFRiwgdXNlVmFsdWU6ICcvZ2FkZ2V0cy9pZnInIH1dXG59KVxuZXhwb3J0IGNsYXNzIFBsYXllckNsaWVudE1vZHVsZSB7IH1cblxuZnVuY3Rpb24gaW5pdGlhbGl6ZUFwcChhcHBJbml0U2VydmljZTogQXBwSW5pdFNlcnZpY2UpIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBQbGF5ZXJDbGllbnRTZXJ2aWNlLmluaXQoe30pO1xuICAgIGF3YWl0IGFwcEluaXRTZXJ2aWNlLmluaXQoKTtcbiAgfVxufVxuIl19
776
+ //# sourceMappingURL=C:/Users/mike_/Documents/GitHub/reveldigital-client-library/dist/reveldigital/player-client/esm2020/lib/module.js.map
675
777
 
676
778
  /*
677
779
  * Public API Surface of player-client
678
- */
780
+ */
781
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JldmVsZGlnaXRhbC9wbGF5ZXItY2xpZW50L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHBsYXllci1jbGllbnRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wbGF5ZXItY2xpZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGxheWVyLWNsaWVudC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2FmZS1zdHlsZS5waXBlJzsiXX0=
782
+ //# sourceMappingURL=C:/Users/mike_/Documents/GitHub/reveldigital-client-library/dist/reveldigital/player-client/esm2020/module.js.map
679
783
 
680
784
  /**
681
785
  * Generated bundle index. Do not edit.
682
- */
786
+ */
787
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZWxkaWdpdGFsLXBsYXllci1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXZlbGRpZ2l0YWwvcGxheWVyLWNsaWVudC9zcmMvcmV2ZWxkaWdpdGFsLXBsYXllci1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
788
+ //# sourceMappingURL=C:/Users/mike_/Documents/GitHub/reveldigital-client-library/dist/reveldigital/player-client/esm2020/module.js.map
683
789
 
684
790
  export { NgSafeStylePipeModule, PlayerClientModule, PlayerClientService, SafeStylePipe };
685
791
  //# sourceMappingURL=reveldigital-player-client.mjs.map