@decaf-ts/for-angular 0.0.22 → 0.0.23

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,5 +1,5 @@
1
1
  import { Input, Component, Inject, ViewChild, ElementRef, Output, EventEmitter, } from '@angular/core';
2
- import { generateRandomValue, getInjectablesRegistry, getOnWindow, isDevelopmentMode, stringToBoolean, } from '../helpers/utils';
2
+ import { generateRandomValue, getInjectablesRegistry, stringToBoolean, } from '../helpers/utils';
3
3
  import { getLocaleContext } from '../i18n/Loader';
4
4
  import { Model } from '@decaf-ts/decorator-validation';
5
5
  import { InternalError, OperationKeys, } from '@decaf-ts/db-decorators';
@@ -7,7 +7,6 @@ import { BaseComponentProps } from './constants';
7
7
  import { NgxRenderingEngine } from './NgxRenderingEngine';
8
8
  import { getLogger } from '../for-angular-common.module';
9
9
  import { Repository } from '@decaf-ts/core';
10
- import { RamAdapter } from '@decaf-ts/core/ram';
11
10
  import * as i0 from "@angular/core";
12
11
  /**
13
12
  * @description Base component class that provides common functionality for all Decaf components.
@@ -259,12 +258,7 @@ export class NgxBaseComponent {
259
258
  const constructor = Model.get(modelName);
260
259
  if (!constructor)
261
260
  throw new InternalError('Cannot find model. was it registered with @model?');
262
- let dbAdapterFlavour = getOnWindow('dbAdapterFlavour');
263
- if (!dbAdapterFlavour && isDevelopmentMode()) {
264
- const adapter = new RamAdapter({ user: 'user' });
265
- dbAdapterFlavour = adapter.flavour;
266
- }
267
- this._repository = Repository.forModel(constructor, dbAdapterFlavour);
261
+ this._repository = Repository.forModel(constructor);
268
262
  this.model = new constructor();
269
263
  if (this.model && !this.pk)
270
264
  this.pk =
@@ -538,4 +532,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
538
532
  }], listenEvent: [{
539
533
  type: Output
540
534
  }] } });
541
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmd4QmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL05neEJhc2VDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxVQUFVLEVBR1YsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGVBQWUsR0FDaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUVMLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkRHO0FBTUgsTUFBTSxPQUFnQixnQkFBZ0I7SUF1U3BDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQ0c7SUFDSCx5REFBeUQ7SUFDekQsWUFBeUQsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQWpRekU7Ozs7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QUFFLEtBQUssRUFBRTtpQkFDN0I7OzBCQTJVd0IsTUFBTTsyQkFBQyxlQUFlO3lDQTlUN0MsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFpQzFELFVBQVU7c0JBRFQsS0FBSztnQkFZTixLQUFLO3NCQURKLEtBQUs7Z0JBZ0NOLEtBQUs7c0JBREosS0FBSztnQkFnQk4sSUFBSTtzQkFESCxLQUFLO2dCQWFOLEVBQUU7c0JBREQsS0FBSztnQkFZTixLQUFLO3NCQURKLEtBQUs7Z0JBWU4sVUFBVTtzQkFEVCxLQUFLO2dCQVlOLEdBQUc7c0JBREYsS0FBSztnQkFZTixNQUFNO3NCQURMLEtBQUs7Z0JBZU4sTUFBTTtzQkFETCxLQUFLO2dCQWVOLFlBQVk7c0JBRFgsS0FBSztnQkFlTixTQUFTO3NCQURSLEtBQUs7Z0JBZ0JOLElBQUk7c0JBREgsS0FBSztnQkE0Qk4sV0FBVztzQkFEVixLQUFLO2dCQXlCTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbnB1dCxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlWYWx1ZSwgUmVuZGVyZXJDdXN0b21FdmVudCwgU3RyaW5nT3JCb29sZWFuIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZW5lcmF0ZVJhbmRvbVZhbHVlLFxuICBnZXRJbmplY3RhYmxlc1JlZ2lzdHJ5LFxuICBnZXRPbldpbmRvdyxcbiAgaXNEZXZlbG9wbWVudE1vZGUsXG4gIHN0cmluZ1RvQm9vbGVhbixcbn0gZnJvbSAnLi4vaGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBnZXRMb2NhbGVDb250ZXh0IH0gZnJvbSAnLi4vaTE4bi9Mb2FkZXInO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHtcbiAgQ3J1ZE9wZXJhdGlvbnMsXG4gIEludGVybmFsRXJyb3IsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gJ0BkZWNhZi10cy9kYi1kZWNvcmF0b3JzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnRQcm9wcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE5neFJlbmRlcmluZ0VuZ2luZSB9IGZyb20gJy4vTmd4UmVuZGVyaW5nRW5naW5lJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJ0BkZWNhZi10cy9sb2dnaW5nJztcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gJy4uL2Zvci1hbmd1bGFyLWNvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgRGVjYWZSZXBvc2l0b3J5IH0gZnJvbSAnLi4vY29tcG9uZW50cy9saXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSAnQGRlY2FmLXRzL2NvcmUnO1xuaW1wb3J0IHsgUmFtQWRhcHRlciB9IGZyb20gJ0BkZWNhZi10cy9jb3JlL3JhbSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgY29tcG9uZW50IGNsYXNzIHRoYXQgcHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIGFsbCBEZWNhZiBjb21wb25lbnRzLlxuICogQHN1bW1hcnkgVGhlIE5neEJhc2VDb21wb25lbnQgc2VydmVzIGFzIHRoZSBmb3VuZGF0aW9uIGZvciBhbGwgRGVjYWYgVUkgY29tcG9uZW50cywgcHJvdmlkaW5nXG4gKiBzaGFyZWQgZnVuY3Rpb25hbGl0eSBmb3IgbG9jYWxpemF0aW9uLCBlbGVtZW50IHJlZmVyZW5jZXMsIGFuZCBzdHlsaW5nLiBUaGlzIGFic3RyYWN0IGNsYXNzXG4gKiBpbXBsZW1lbnRzIGNvbW1vbiBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgYXJlIHVzZWQgYWNyb3NzIHRoZSBjb21wb25lbnQgbGlicmFyeSwgZW5zdXJpbmdcbiAqIGNvbnNpc3RlbnQgYmVoYXZpb3IgYW5kIHJlZHVjaW5nIGNvZGUgZHVwbGljYXRpb24uIENvbXBvbmVudHMgdGhhdCBleHRlbmQgdGhpcyBjbGFzcyBpbmhlcml0XG4gKiBpdHMgY2FwYWJpbGl0aWVzIGZvciBoYW5kbGluZyB0cmFuc2xhdGlvbnMsIGFjY2Vzc2luZyBET00gZWxlbWVudHMsIGFuZCBhcHBseWluZyBjdXN0b20gc3R5bGluZy5cbiAqXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoYXQgdGhpcyBjb21wb25lbnQgd29ya3Mgd2l0aFxuICogQHBhcmFtIHtzdHJpbmd9IGluc3RhbmNlIC0gVGhlIGNvbXBvbmVudCBpbnN0YW5jZSB0b2tlbiB1c2VkIGZvciBpZGVudGlmaWNhdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSAtIFRoZSBsb2NhbGUgdG8gYmUgdXNlZCBmb3IgdHJhbnNsYXRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ09yQm9vbGVhbn0gdHJhbnNsYXRhYmxlIC0gV2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB0cmFuc2xhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIC0gQWRkaXRpb25hbCBDU1MgY2xhc3NlcyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50XG4gKiBAcGFyYW0ge1wiaW9zXCIgfCBcIm1kXCIgfCB1bmRlZmluZWR9IG1vZGUgLSBDb21wb25lbnQgcGxhdGZvcm0gc3R5bGVcbiAqXG4gKiBAY29tcG9uZW50IE5neEJhc2VDb21wb25lbnRcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtbXktY29tcG9uZW50JyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL215LWNvbXBvbmVudC5jb21wb25lbnQuaHRtbCcsXG4gKiAgIHN0eWxlVXJsczogWycuL215LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyddXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2luc3RhbmNlVG9rZW4nKSBpbnN0YW5jZTogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoaW5zdGFuY2UpO1xuICogICB9XG4gKlxuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAqICAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25cbiAqICAgfVxuICogfVxuICogYGBgXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcCBhcyBBcHBsaWNhdGlvblxuICogICBwYXJ0aWNpcGFudCBDb21wIGFzIENvbXBvbmVudFxuICogICBwYXJ0aWNpcGFudCBCYXNlIGFzIE5neEJhc2VDb21wb25lbnRcbiAqICAgcGFydGljaXBhbnQgRW5naW5lIGFzIE5neFJlbmRlcmluZ0VuZ2luZVxuICpcbiAqICAgQXBwLT4+Q29tcDogQ3JlYXRlIGNvbXBvbmVudFxuICogICBDb21wLT4+QmFzZTogc3VwZXIoaW5zdGFuY2UpXG4gKiAgIEJhc2UtPj5CYXNlOiBTZXQgY29tcG9uZW50TmFtZSAmIGNvbXBvbmVudExvY2FsZVxuICpcbiAqICAgQXBwLT4+Q29tcDogU2V0IEBJbnB1dCBwcm9wZXJ0aWVzXG4gKiAgIENvbXAtPj5CYXNlOiBuZ09uQ2hhbmdlcyhjaGFuZ2VzKVxuICpcbiAqICAgYWx0IG1vZGVsIGNoYW5nZWRcbiAqICAgICBCYXNlLT4+QmFzZTogZ2V0TW9kZWwobW9kZWwpXG4gKiAgICAgQmFzZS0+PkVuZ2luZTogZ2V0RGVjb3JhdG9ycyhtb2RlbCwge30pXG4gKiAgICAgRW5naW5lLS0+PkJhc2U6IFJldHVybiBkZWNvcmF0b3IgbWV0YWRhdGFcbiAqICAgICBCYXNlLT4+QmFzZTogQ29uZmlndXJlIG1hcHBlciBhbmQgaXRlbVxuICogICAgIEJhc2UtPj5CYXNlOiBnZXRMb2NhbGUodHJhbnNsYXRhYmxlKVxuICogICBlbHNlIGxvY2FsZS90cmFuc2xhdGFibGUgY2hhbmdlZFxuICogICAgIEJhc2UtPj5CYXNlOiBnZXRMb2NhbGUodHJhbnNsYXRhYmxlKVxuICogICBlbmRcbiAqXG4gKiAgIEFwcC0+PkNvbXA6IG5nT25Jbml0KClcbiAqICAgQ29tcC0+PkJhc2U6IGluaXRpYWxpemUoKVxuICogICBCYXNlLT4+QmFzZTogU2V0IGluaXRpYWxpemVkIGZsYWdcbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nLFxuICBob3N0OiB7ICdbYXR0ci5pZF0nOiAndWlkJyB9LFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3hCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgdG8gdGhlIGNvbXBvbmVudCdzIGVsZW1lbnQuXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG5hdGl2ZSBET00gZWxlbWVudCBvZiB0aGUgY29tcG9uZW50IHRocm91Z2ggQW5ndWxhcidzXG4gICAqIFZpZXdDaGlsZCBkZWNvcmF0b3IuIFRoaXMgcmVmZXJlbmNlIGNhbiBiZSB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlIERPTSBlbGVtZW50IGRpcmVjdGx5LFxuICAgKiBhcHBseSBjdXN0b20gc3R5bGVzLCBvciBhY2Nlc3MgbmF0aXZlIGVsZW1lbnQgcHJvcGVydGllcyBhbmQgbWV0aG9kcy4gVGhlIGVsZW1lbnQgaXNcbiAgICogaWRlbnRpZmllZCBieSB0aGUgJ2NvbXBvbmVudCcgdGVtcGxhdGUgcmVmZXJlbmNlIHZhcmlhYmxlLlxuICAgKlxuICAgKiBAdHlwZSB7RWxlbWVudFJlZn1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NvbXBvbmVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGNvbXBvbmVudCE6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBTdG9yZXMgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCwgd2hpY2ggaXMgdHlwaWNhbGx5IGRlcml2ZWQgZnJvbSB0aGUgY2xhc3MgbmFtZS5cbiAgICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGludGVybmFsbHkgZm9yIHZhcmlvdXMgcHVycG9zZXMgc3VjaCBhcyBsb2dnaW5nLCBkZXJpdmluZyB0aGUgZGVmYXVsdFxuICAgKiBsb2NhbGUsIGFuZCBwb3RlbnRpYWxseSBmb3IgY29tcG9uZW50IGlkZW50aWZpY2F0aW9uIGluIGRlYnVnZ2luZyBvciBlcnJvciByZXBvcnRpbmcuXG4gICAqXG4gICAqIFRoZSBgY29tcG9uZW50TmFtZWAgaXMgc2V0IGR1cmluZyB0aGUgY29tcG9uZW50J3MgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBhbmQgc2hvdWxkIG5vdFxuICAgKiBiZSBtb2RpZmllZCBleHRlcm5hbGx5LiBJdCdzIG1hcmtlZCBhcyBwcm90ZWN0ZWQgdG8gYWxsb3cgYWNjZXNzIGluIGRlcml2ZWQgY2xhc3NlcyB3aGlsZVxuICAgKiBwcmV2ZW50aW5nIGRpcmVjdCBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQgaGllcmFyY2h5LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIEluc2lkZSBhIGRlcml2ZWQgY29tcG9uZW50IGNsYXNzXG4gICAqIGNvbnNvbGUubG9nKHRoaXMuY29tcG9uZW50TmFtZSk7IC8vIE91dHB1dHM6IFwiTXlDdXN0b21Db21wb25lbnRcIlxuICAgKi9cbiAgY29tcG9uZW50TmFtZSE6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVuZGVyZXIuXG4gICAqIEBzdW1tYXJ5IEEgdW5pcXVlIGlkZW50aWZpZXIgdXNlZCB0byByZWZlcmVuY2UgdGhlIGNvbXBvbmVudCdzIHJlbmRlcmVyIGluc3RhbmNlLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIGZvciB0YXJnZXRpbmcgc3BlY2lmaWMgcmVuZGVyZXIgaW5zdGFuY2VzIHdoZW4gbXVsdGlwbGUgY29tcG9uZW50c1xuICAgKiBhcmUgcHJlc2VudCBvbiB0aGUgc2FtZSBwYWdlLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcmVuZGVyZXJJZCE6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9zaXRvcnkgbW9kZWwgZm9yIGRhdGEgb3BlcmF0aW9ucy5cbiAgICogQHN1bW1hcnkgVGhlIGRhdGEgbW9kZWwgcmVwb3NpdG9yeSB0aGF0IHRoaXMgY29tcG9uZW50IHdpbGwgdXNlIGZvciBDUlVEIG9wZXJhdGlvbnMuXG4gICAqIFRoaXMgcHJvdmlkZXMgYSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhIGxheWVyIGZvciByZXRyaWV2aW5nIGFuZCBtYW5pcHVsYXRpbmcgZGF0YS5cbiAgICpcbiAgICogQHR5cGUge01vZGVsfCB1bmRlZmluZWR9XG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBtb2RlbCE6IE1vZGVsIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHJlcG9zaXRvcnkgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGRhdGEgbW9kZWwuXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgY29ubmVjdGlvbiB0byB0aGUgZGF0YSBsYXllciBmb3IgcmV0cmlldmluZyBhbmQgbWFuaXB1bGF0aW5nIGRhdGEuXG4gICAqIFRoaXMgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGBEZWNhZlJlcG9zaXRvcnlgIGNsYXNzIGZyb20gdGhlIGBAZGVjYWYtdHMvY29yZWAgcGFja2FnZSxcbiAgICogd2hpY2ggaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGByZXBvc2l0b3J5YCBnZXR0ZXIgbWV0aG9kLlxuICAgKlxuICAgKiBUaGUgcmVwb3NpdG9yeSBpcyB1c2VkIHRvIHBlcmZvcm0gQ1JVRCAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSkgb3BlcmF0aW9ucyBvbiB0aGVcbiAgICogZGF0YSBtb2RlbCwgc3VjaCBhcyBmZXRjaGluZyBkYXRhLCBjcmVhdGluZyBuZXcgaXRlbXMsIHVwZGF0aW5nIGV4aXN0aW5nIGl0ZW1zLCBhbmQgZGVsZXRpbmdcbiAgICogaXRlbXMuIEl0IGFsc28gcHJvdmlkZXMgbWV0aG9kcyBmb3IgcXVlcnlpbmcgYW5kIGZpbHRlcmluZyBkYXRhIGJhc2VkIG9uIHNwZWNpZmljIGNyaXRlcmlhLlxuICAgKlxuICAgKiBAdHlwZSB7RGVjYWZSZXBvc2l0b3J5PE1vZGVsPn1cbiAgICogQHByaXZhdGVcbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIHByb3RlY3RlZCBfcmVwb3NpdG9yeT86IERlY2FmUmVwb3NpdG9yeTxNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEeW5hbWljIHByb3BlcnRpZXMgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIGtleS12YWx1ZSBwYWlycyBvZiBkeW5hbWljIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byB0aGUgY29tcG9uZW50XG4gICAqIGF0IHJ1bnRpbWUuIFRoaXMgZmxleGlibGUgY29uZmlndXJhdGlvbiBvYmplY3QgYWxsb3dzIGZvciBkeW5hbWljIHByb3BlcnR5IGFzc2lnbm1lbnQgd2l0aG91dFxuICAgKiByZXF1aXJpbmcgZXhwbGljaXQgaW5wdXQgYmluZGluZ3MgZm9yIGV2ZXJ5IHBvc3NpYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBQcm9wZXJ0aWVzIGZyb21cbiAgICogdGhpcyBvYmplY3QgYXJlIHBhcnNlZCBhbmQgYXBwbGllZCB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlIHRocm91Z2ggdGhlIHBhcnNlUHJvcHMgbWV0aG9kLFxuICAgKiBlbmFibGluZyBjdXN0b21pemFibGUgY29tcG9uZW50IGJlaGF2aW9yIGJhc2VkIG9uIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn1cbiAgICogQGRlZmF1bHQge31cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgbGlzdCBpdGVtIHJlbmRlcmluZ1xuICAgKiBAc3VtbWFyeSBEZWZpbmVzIGhvdyBsaXN0IGl0ZW1zIHNob3VsZCBiZSByZW5kZXJlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgKiBUaGlzIHByb3BlcnR5IGhvbGRzIGEgY29uZmlndXJhdGlvbiBvYmplY3QgdGhhdCBzcGVjaWZpZXMgdGhlIHRhZyBuYW1lXG4gICAqIGFuZCBvdGhlciBwcm9wZXJ0aWVzIG5lZWRlZCB0byByZW5kZXIgbGlzdCBpdGVtcyBjb3JyZWN0bHkuIFRoZSB0YWcgcHJvcGVydHlcbiAgICogaWRlbnRpZmllcyB3aGljaCBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgdG8gcmVuZGVyIGVhY2ggaXRlbSBpbiBhIGxpc3QuXG4gICAqIEFkZGl0aW9uYWwgcHJvcGVydGllcyBjYW4gYmUgaW5jbHVkZWQgdG8gY3VzdG9taXplIHRoZSByZW5kZXJpbmcgYmVoYXZpb3IuXG4gICAqXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn1cbiAgICogQGRlZmF1bHQge3RhZzogXCJcIn1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGl0ZW06IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyB0YWc6ICcnIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmltYXJ5IGtleSBmaWVsZCBuYW1lIGZvciB0aGUgbW9kZWwuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB3aGljaCBmaWVsZCBpbiB0aGUgbW9kZWwgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIHByaW1hcnkga2V5LlxuICAgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBpZGVudGlmeWluZyB1bmlxdWUgcmVjb3JkcyBpbiBvcGVyYXRpb25zIGxpa2UgdXBkYXRlIGFuZCBkZWxldGUuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0ICdpZCdcbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBrITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQmFzZSByb3V0ZSBmb3IgbmF2aWdhdGlvbiByZWxhdGVkIHRvIHRoaXMgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNlIHJvdXRlIHBhdGggdXNlZCBmb3IgbmF2aWdhdGlvbiBhY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb21wb25lbnQuXG4gICAqIFRoaXMgaXMgb2Z0ZW4gdXNlZCBhcyBhIHByZWZpeCBmb3IgY29uc3RydWN0aW5nIG5hdmlnYXRpb24gVVJMcy5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvdXRlITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIENSVUQgb3BlcmF0aW9ucyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgd2hpY2ggQ1JVRCBvcGVyYXRpb25zIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSBhcmUgYXZhaWxhYmxlXG4gICAqIGZvciB0aGlzIGNvbXBvbmVudC4gVGhpcyBhZmZlY3RzIHdoaWNoIG9wZXJhdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBvbiB0aGUgZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgW09wZXJhdGlvbktleXMuUkVBRF1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG9wZXJhdGlvbnM6IENydWRPcGVyYXRpb25zW10gPSBbT3BlcmF0aW9uS2V5cy5SRUFEXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY3VycmVudCByZWNvcmQuXG4gICAqIEBzdW1tYXJ5IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjdXJyZW50IHJlY29yZCBiZWluZyBkaXNwbGF5ZWQgb3IgbWFuaXB1bGF0ZWQuXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgcHJpbWFyeSBrZXkgZm9yIG9wZXJhdGlvbnMgb24gc3BlY2lmaWMgcmVjb3Jkcy5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZyB8IG51bWJlcn1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHVpZCE6IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpZWxkIG1hcHBpbmcgY29uZmlndXJhdGlvbi5cbiAgICogQHN1bW1hcnkgRGVmaW5lcyBob3cgZmllbGRzIGZyb20gdGhlIGRhdGEgbW9kZWwgc2hvdWxkIGJlIG1hcHBlZCB0byBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIGNvbXBvbmVudC5cbiAgICogVGhpcyBhbGxvd3MgZm9yIGZsZXhpYmxlIGRhdGEgYmluZGluZyBiZXR3ZWVuIHRoZSBtb2RlbCBhbmQgdGhlIGNvbXBvbmVudCdzIGRpc3BsYXkgbG9naWMuXG4gICAqXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgbWFwcGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbG9jYWxlIHRvIGJlIHVzZWQgZm9yIHRyYW5zbGF0aW9ucy5cbiAgICogQHN1bW1hcnkgU3BlY2lmaWVzIHRoZSBsb2NhbGUgaWRlbnRpZmllciB0byB1c2Ugd2hlbiB0cmFuc2xhdGluZyBjb21wb25lbnQgdGV4dC5cbiAgICogVGhpcyBjYW4gYmUgc2V0IGV4cGxpY2l0bHkgdmlhIGlucHV0IHByb3BlcnR5IHRvIG92ZXJyaWRlIHRoZSBhdXRvbWF0aWNhbGx5IGRlcml2ZWRcbiAgICogbG9jYWxlIGZyb20gdGhlIGNvbXBvbmVudCBuYW1lLiBUaGUgbG9jYWxlIGlzIHR5cGljYWxseSBhIGxhbmd1YWdlIGNvZGUgKGUuZy4sICdlbicsICdmcicpXG4gICAqIG9yIGEgbGFuZ3VhZ2UtcmVnaW9uIGNvZGUgKGUuZy4sICdlbi1VUycsICdmci1DQScpIHRoYXQgZGV0ZXJtaW5lcyB3aGljaCB0cmFuc2xhdGlvblxuICAgKiBzZXQgdG8gdXNlIGZvciB0aGUgY29tcG9uZW50J3MgdGV4dCBjb250ZW50LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgbG9jYWxlITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB0cmFuc2xhdGVkLlxuICAgKiBAc3VtbWFyeSBDb250cm9scyB3aGV0aGVyIHRoZSBjb21wb25lbnQncyB0ZXh0IGNvbnRlbnQgc2hvdWxkIGJlIHByb2Nlc3NlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqIFdoZW4gdHJ1ZSwgdGhlIGNvbXBvbmVudCB3aWxsIGF0dGVtcHQgdG8gdHJhbnNsYXRlIHRleHQgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2NhbGUuXG4gICAqIFdoZW4gZmFsc2UsIHRleHQgaXMgZGlzcGxheWVkIGFzLWlzIHdpdGhvdXQgdHJhbnNsYXRpb24uIFRoaXMgcHJvcGVydHkgYWNjZXB0cyBlaXRoZXJcbiAgICogYSBib29sZWFuIHZhbHVlIG9yIGEgc3RyaW5nIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIGJvb2xlYW4gKGUuZy4sICd0cnVlJywgJ2ZhbHNlJywgJzEnLCAnMCcpLlxuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nT3JCb29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgdHJhbnNsYXRhYmxlOiBTdHJpbmdPckJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWRkaXRpb25hbCBDU1MgY2xhc3MgbmFtZXMgdG8gYXBwbHkgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgQWxsb3dzIGN1c3RvbSBDU1MgY2xhc3NlcyB0byBiZSBhZGRlZCB0byB0aGUgY29tcG9uZW50J3Mgcm9vdCBlbGVtZW50LlxuICAgKiBUaGVzZSBjbGFzc2VzIGFyZSBhcHBlbmRlZCB0byBhbnkgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgY2xhc3NlcyBiYXNlZCBvbiBvdGhlclxuICAgKiBjb21wb25lbnQgcHJvcGVydGllcy4gTXVsdGlwbGUgY2xhc3NlcyBjYW4gYmUgcHJvdmlkZWQgYXMgYSBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5nLlxuICAgKiBUaGlzIHByb3ZpZGVzIGEgd2F5IHRvIGN1c3RvbWl6ZSB0aGUgY29tcG9uZW50J3MgYXBwZWFyYW5jZSBiZXlvbmQgdGhlIGJ1aWx0LWluIHN0eWxpbmcgb3B0aW9ucy5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgY2xhc3NOYW1lOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBvbmVudCBwbGF0Zm9ybSBzdHlsZS5cbiAgICogQHN1bW1hcnkgQ29udHJvbHMgdGhlIHZpc3VhbCBhcHBlYXJhbmNlIG9mIHRoZSBjb21wb25lbnQgYmFzZWQgb24gcGxhdGZvcm0gZGVzaWduIGd1aWRlbGluZXMuXG4gICAqIFRoZSAnaW9zJyBtb2RlIGZvbGxvd3MgaU9TIGRlc2lnbiBwYXR0ZXJucywgd2hpbGUgJ21kJyAoTWF0ZXJpYWwgRGVzaWduKSBmb2xsb3dzIEFuZHJvaWQvR29vZ2xlXG4gICAqIGRlc2lnbiBwYXR0ZXJucy4gVGhpcyBwcm9wZXJ0eSBhZmZlY3RzIHZhcmlvdXMgdmlzdWFsIGFzcGVjdHMgc3VjaCBhcyBhbmltYXRpb25zLCBmb3JtIGVsZW1lbnRzLFxuICAgKiBhbmQgaWNvbnMuIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSBhbGxvd3MgY29tcG9uZW50cyB0byBtYWludGFpbiBwbGF0Zm9ybS1zcGVjaWZpYyBzdHlsaW5nXG4gICAqIGZvciBhIG1vcmUgbmF0aXZlIGxvb2sgYW5kIGZlZWwuXG4gICAqXG4gICAqIEB0eXBlIHsoXCJpb3NcIiB8IFwibWRcIiB8IHVuZGVmaW5lZCl9XG4gICAqIEBkZWZhdWx0IFwibWRcIlxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgbW9kZTogJ2lvcycgfCAnbWQnIHwgdW5kZWZpbmVkID0gJ21kJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NhbGUgZGVyaXZlZCBmcm9tIHRoZSBjb21wb25lbnQncyBjbGFzcyBuYW1lLlxuICAgKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGF1dG9tYXRpY2FsbHkgZGVyaXZlZCBsb2NhbGUgYmFzZWQgb24gdGhlIGNvbXBvbmVudCdzIGNsYXNzIG5hbWUuXG4gICAqIFRoaXMgaXMgZGV0ZXJtaW5lZCBkdXJpbmcgY29tcG9uZW50IGluaXRpYWxpemF0aW9uIGFuZCBzZXJ2ZXMgYXMgYSBmYWxsYmFjayB3aGVuIG5vXG4gICAqIGV4cGxpY2l0IGxvY2FsZSBpcyBwcm92aWRlZCB2aWEgdGhlIGxvY2FsZSBpbnB1dCBwcm9wZXJ0eS4gVGhlIGRlcml2YXRpb24gaXMgaGFuZGxlZFxuICAgKiBieSB0aGUgZ2V0TG9jYWxlQ29udGV4dCB1dGlsaXR5IGZ1bmN0aW9uLCB3aGljaCBleHRyYWN0cyBhIGxvY2FsZSBpZGVudGlmaWVyXG4gICAqIGZyb20gdGhlIGNvbXBvbmVudCdzIGNsYXNzIG5hbWUuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBjb21wb25lbnRMb2NhbGUhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGV0aGVyIGNoaWxkIGNvbXBvbmVudHMgc2hvdWxkIGJlIHJlbmRlcmVkXG4gICAqIEBzdW1tYXJ5IERldGVybWluZXMgaWYgY2hpbGQgY29tcG9uZW50cyBzaG91bGQgYmUgcmVuZGVyZWQgYnkgdGhlIGNvbXBvbmVudC5cbiAgICogVGhpcyBjYW4gYmUgc2V0IHRvIGEgYm9vbGVhbiB2YWx1ZSBvciBhIHN0cmluZyB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBib29sZWFuLlxuICAgKiBXaGVuIHRydWUsIGNoaWxkIGNvbXBvbmVudHMgZGVmaW5lZCBpbiB0aGUgbW9kZWwgd2lsbCBiZSByZW5kZXJlZC4gV2hlbiBmYWxzZSxcbiAgICogY2hpbGQgY29tcG9uZW50cyB3aWxsIGJlIHNraXBwZWQuIFRoaXMgcHJvdmlkZXMgY29udHJvbCBvdmVyIHRoZSByZW5kZXJpbmcgZGVwdGguXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmcgfCBTdHJpbmdPckJvb2xlYW59XG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHJlbmRlckNoaWxkOiBzdHJpbmcgfCBTdHJpbmdPckJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gaW5pdGlhbGl6ZWRcbiAgICogQHN1bW1hcnkgVHJhY2tzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBoYXMgY29tcGxldGVkIGl0cyBpbml0aWFsaXphdGlvbiBwcm9jZXNzLlxuICAgKiBUaGlzIGZsYWcgaXMgdXNlZCB0byBwcmV2ZW50IGR1cGxpY2F0ZSBpbml0aWFsaXphdGlvbiBhbmQgdG8gZGV0ZXJtaW5lIGlmXG4gICAqIGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IHJlcXVpcmUgaW5pdGlhbGl6YXRpb24gY2FuIGJlIHBlcmZvcm1lZC5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnQgZW1pdHRlciBmb3IgY3VzdG9tIHJlbmRlcmVyIGV2ZW50cy5cbiAgICogQHN1bW1hcnkgRW1pdHMgY3VzdG9tIGV2ZW50cyB0aGF0IG9jY3VyIHdpdGhpbiBjaGlsZCBjb21wb25lbnRzIG9yIHRoZSBsYXlvdXQgaXRzZWxmLlxuICAgKiBUaGlzIGFsbG93cyBwYXJlbnQgY29tcG9uZW50cyB0byBsaXN0ZW4gZm9yIGFuZCByZXNwb25kIHRvIHVzZXIgaW50ZXJhY3Rpb25zIG9yXG4gICAqIHN0YXRlIGNoYW5nZXMgd2l0aGluIHRoZSBncmlkIGxheW91dC4gRXZlbnRzIGFyZSBwYXNzZWQgdXAgdGhlIGNvbXBvbmVudCBoaWVyYXJjaHlcbiAgICogdG8gZW5hYmxlIGNvb3JkaW5hdGVkIGJlaGF2aW9yIGFjcm9zcyB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8UmVuZGVyZXJDdXN0b21FdmVudD59XG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgbGlzdGVuRXZlbnQ6IEV2ZW50RW1pdHRlcjxSZW5kZXJlckN1c3RvbUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxSZW5kZXJlckN1c3RvbUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNlIHRvIHRoZSByZW5kZXJpbmcgZW5naW5lIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTmd4UmVuZGVyaW5nRW5naW5lIHNpbmdsZXRvbiBpbnN0YW5jZSxcbiAgICogd2hpY2ggaGFuZGxlcyB0aGUgcmVuZGVyaW5nIG9mIGNvbXBvbmVudHMgYmFzZWQgb24gbW9kZWwgZGVmaW5pdGlvbnMuXG4gICAqIFRoaXMgZW5naW5lIGlzIHVzZWQgdG8gZXh0cmFjdCBkZWNvcmF0b3IgbWV0YWRhdGEgYW5kIHJlbmRlciBjaGlsZCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAdHlwZSB7Tmd4UmVuZGVyaW5nRW5naW5lfVxuICAgKi9cbiAgcmVuZGVyaW5nRW5naW5lOiBOZ3hSZW5kZXJpbmdFbmdpbmUgPVxuICAgIE5neFJlbmRlcmluZ0VuZ2luZS5nZXQoKSBhcyB1bmtub3duIGFzIE5neFJlbmRlcmluZ0VuZ2luZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExvZ2dlciBpbnN0YW5jZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgbG9nZ2luZyBjYXBhYmlsaXRpZXMgZm9yIHRoZSBjb21wb25lbnQsIGFsbG93aW5nIGZvciBjb25zaXN0ZW50XG4gICAqIGFuZCBzdHJ1Y3R1cmVkIGxvZ2dpbmcgb2YgaW5mb3JtYXRpb24sIHdhcm5pbmdzLCBhbmQgZXJyb3JzLiBUaGlzIGxvZ2dlciBpcyBpbml0aWFsaXplZFxuICAgKiBpbiB0aGUgbmdPbkluaXQgbWV0aG9kIHVzaW5nIHRoZSBnZXRMb2dnZXIgZnVuY3Rpb24gZnJvbSB0aGUgRm9yQW5ndWxhckNvbW1vbk1vZHVsZS5cbiAgICpcbiAgICogVGhlIGxvZ2dlciBpcyB1c2VkIHRocm91Z2hvdXQgdGhlIGNvbXBvbmVudCB0byByZWNvcmQgaW1wb3J0YW50IGV2ZW50cywgZGVidWcgaW5mb3JtYXRpb24sXG4gICAqIGFuZCBwb3RlbnRpYWwgaXNzdWVzLiBJdCBoZWxwcyBpbiBtb25pdG9yaW5nIHRoZSBjb21wb25lbnQncyBiZWhhdmlvciwgdHJhY2tpbmcgdGhlIGZsb3dcbiAgICogb2Ygb3BlcmF0aW9ucywgYW5kIGZhY2lsaXRhdGluZyBlYXNpZXIgZGVidWdnaW5nIGFuZCBtYWludGVuYW5jZS5cbiAgICpcbiAgICogQHR5cGUge0xvZ2dlcn1cbiAgICogQHByaXZhdGVcbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIGxvZ2dlciE6IExvZ2dlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTmd4QmFzZUNvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGJhc2UgY29tcG9uZW50IHdpdGggdGhlIHByb3ZpZGVkIGluc3RhbmNlIHRva2VuLlxuICAgKiBUaGlzIGNvbnN0cnVjdG9yIHNldHMgdXAgdGhlIGZ1bmRhbWVudGFsIHByb3BlcnRpZXMgcmVxdWlyZWQgYnkgYWxsIERlY2FmIGNvbXBvbmVudHMsXG4gICAqIGluY2x1ZGluZyB0aGUgY29tcG9uZW50IG5hbWUsIGxvY2FsZSBzZXR0aW5ncywgYW5kIGxvZ2dpbmcgY2FwYWJpbGl0aWVzLiBUaGUgaW5zdGFuY2VcbiAgICogdG9rZW4gaXMgdXNlZCBmb3IgY29tcG9uZW50IGlkZW50aWZpY2F0aW9uIGFuZCBsb2NhbGUgZGVyaXZhdGlvbi5cbiAgICpcbiAgICogVGhlIGNvbnN0cnVjdG9yIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgaW5pdGlhbGl6YXRpb24gc3RlcHM6XG4gICAqIDEuIFNldHMgdGhlIGNvbXBvbmVudE5hbWUgZnJvbSB0aGUgcHJvdmlkZWQgaW5zdGFuY2UgdG9rZW5cbiAgICogMi4gRGVyaXZlcyB0aGUgY29tcG9uZW50TG9jYWxlIGZyb20gdGhlIGNsYXNzIG5hbWUgdXNpbmcgdXRpbGl0eSBmdW5jdGlvbnNcbiAgICogMy4gSW5pdGlhbGl6ZXMgdGhlIGxvZ2dlciBpbnN0YW5jZSBmb3IgdGhlIGNvbXBvbmVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5zdGFuY2UgLSBUaGUgY29tcG9uZW50IGluc3RhbmNlIHRva2VuIHVzZWQgZm9yIGlkZW50aWZpY2F0aW9uXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgQW5ndWxhclxuICAgKiAgIHBhcnRpY2lwYW50IEMgYXMgQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgQiBhcyBOZ3hCYXNlQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVdGlsc1xuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTG9nZ2VyXG4gICAqXG4gICAqICAgQS0+PkM6IG5ldyBDb21wb25lbnQoaW5zdGFuY2UpXG4gICAqICAgQy0+PkI6IHN1cGVyKGluc3RhbmNlKVxuICAgKiAgIEItPj5COiBTZXQgY29tcG9uZW50TmFtZSA9IGluc3RhbmNlXG4gICAqICAgQi0+PlU6IGdldExvY2FsZUNvbnRleHQoaW5zdGFuY2UpXG4gICAqICAgVS0tPj5COiBSZXR1cm4gZGVyaXZlZCBsb2NhbGVcbiAgICogICBCLT4+QjogU2V0IGNvbXBvbmVudExvY2FsZVxuICAgKiAgIEItPj5MOiBnZXRMb2dnZXIodGhpcylcbiAgICogICBMLS0+PkI6IFJldHVybiBsb2dnZXIgaW5zdGFuY2VcbiAgICogICBCLT4+QjogU2V0IGxvZ2dlclxuICAgKlxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9wcmVmZXItaW5qZWN0XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihASW5qZWN0KCdpbnN0YW5jZVRva2VuJykgcHJvdGVjdGVkIGluc3RhbmNlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbXBvbmVudE5hbWUgPSBpbnN0YW5jZTtcbiAgICB0aGlzLmNvbXBvbmVudExvY2FsZSA9IGdldExvY2FsZUNvbnRleHQoaW5zdGFuY2UpO1xuICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKHRoaXMpO1xuICAgIHRoaXMuZ2V0TG9jYWxlKHRoaXMudHJhbnNsYXRhYmxlKTtcbiAgICB0aGlzLnVpZCA9IGdlbmVyYXRlUmFuZG9tVmFsdWUoMTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXR0ZXIgZm9yIHRoZSByZXBvc2l0b3J5IGluc3RhbmNlLlxuICAgKiBAc3VtbWFyeSBQcm92aWRlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGEgbGF5ZXIgZm9yIHJldHJpZXZpbmcgYW5kIG1hbmlwdWxhdGluZyBkYXRhLlxuICAgKiBUaGlzIG1ldGhvZCBpbml0aWFsaXplcyB0aGUgYF9yZXBvc2l0b3J5YCBwcm9wZXJ0eSBpZiBpdCBpcyBub3QgYWxyZWFkeSBzZXQsIGVuc3VyaW5nXG4gICAqIHRoYXQgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIHJlcG9zaXRvcnkgaXMgdXNlZCB0aHJvdWdob3V0IHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIFRoZSByZXBvc2l0b3J5IGlzIHVzZWQgdG8gcGVyZm9ybSBDUlVEIG9wZXJhdGlvbnMgb24gdGhlIGRhdGEgbW9kZWwsIHN1Y2ggYXMgZmV0Y2hpbmcgZGF0YSxcbiAgICogY3JlYXRpbmcgbmV3IGl0ZW1zLCB1cGRhdGluZyBleGlzdGluZyBpdGVtcywgYW5kIGRlbGV0aW5nIGl0ZW1zLiBJdCBhbHNvIHByb3ZpZGVzIG1ldGhvZHNcbiAgICogZm9yIHF1ZXJ5aW5nIGFuZCBmaWx0ZXJpbmcgZGF0YSBiYXNlZCBvbiBzcGVjaWZpYyBjcml0ZXJpYS5cbiAgICpcbiAgICogQHJldHVybnMge0RlY2FmUmVwb3NpdG9yeTxNb2RlbD59IFRoZSBpbml0aWFsaXplZCByZXBvc2l0b3J5IGluc3RhbmNlLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCByZXBvc2l0b3J5KCk6IERlY2FmUmVwb3NpdG9yeTxNb2RlbD4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuX3JlcG9zaXRvcnkpIHtcbiAgICAgICAgY29uc3QgbW9kZWxOYW1lID0gKHRoaXMubW9kZWwgYXMgTW9kZWwpLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gTW9kZWwuZ2V0KG1vZGVsTmFtZSk7XG4gICAgICAgIGlmICghY29uc3RydWN0b3IpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAnQ2Fubm90IGZpbmQgbW9kZWwuIHdhcyBpdCByZWdpc3RlcmVkIHdpdGggQG1vZGVsPydcbiAgICAgICAgICApO1xuICAgICAgICBsZXQgZGJBZGFwdGVyRmxhdm91ciA9IGdldE9uV2luZG93KCdkYkFkYXB0ZXJGbGF2b3VyJyk7XG4gICAgICAgIGlmICghZGJBZGFwdGVyRmxhdm91ciAmJiBpc0RldmVsb3BtZW50TW9kZSgpKSB7XG4gICAgICAgICAgY29uc3QgYWRhcHRlciA9IG5ldyBSYW1BZGFwdGVyKHsgdXNlcjogJ3VzZXInIH0pO1xuICAgICAgICAgIGRiQWRhcHRlckZsYXZvdXIgPSBhZGFwdGVyLmZsYXZvdXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVwb3NpdG9yeSA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoXG4gICAgICAgICAgY29uc3RydWN0b3IsXG4gICAgICAgICAgZGJBZGFwdGVyRmxhdm91ciBhcyBzdHJpbmdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG5ldyBjb25zdHJ1Y3RvcigpIGFzIE1vZGVsO1xuICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiAhdGhpcy5waylcbiAgICAgICAgICB0aGlzLnBrID1cbiAgICAgICAgICAgICh0aGlzLl9yZXBvc2l0b3J5IGFzIHVua25vd24gYXMgRGVjYWZSZXBvc2l0b3J5PE1vZGVsPikucGsgfHwgJ2lkJztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKGVycm9yIGFzIEVycm9yKT8ubWVzc2FnZSB8fCAoZXJyb3IgYXMgc3RyaW5nKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZXBvc2l0b3J5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVzIGNoYW5nZXMgdG8gY29tcG9uZW50IGlucHV0c1xuICAgKiBAc3VtbWFyeSBUaGlzIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgaXMgY2FsbGVkIHdoZW4gaW5wdXQgcHJvcGVydGllcyBjaGFuZ2UuXG4gICAqIEl0IHJlc3BvbmRzIHRvIGNoYW5nZXMgaW4gdGhlIG1vZGVsLCBsb2NhbGUsIG9yIHRyYW5zbGF0YWJsZSBwcm9wZXJ0aWVzIGJ5XG4gICAqIHVwZGF0aW5nIHRoZSBjb21wb25lbnQncyBpbnRlcm5hbCBzdGF0ZSBhY2NvcmRpbmdseS4gV2hlbiB0aGUgbW9kZWwgY2hhbmdlcyxcbiAgICogaXQgY2FsbHMgZ2V0TW9kZWwgdG8gcHJvY2VzcyB0aGUgbmV3IG1vZGVsIGFuZCBnZXRMb2NhbGUgdG8gdXBkYXRlIHRoZSBsb2NhbGUuXG4gICAqIFdoZW4gbG9jYWxlIG9yIHRyYW5zbGF0YWJsZSBwcm9wZXJ0aWVzIGNoYW5nZSwgaXQgY2FsbHMgZ2V0TG9jYWxlIHRvIHVwZGF0ZVxuICAgKiB0aGUgdHJhbnNsYXRpb24gc2V0dGluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7U2ltcGxlQ2hhbmdlc30gY2hhbmdlcyAtIE9iamVjdCBjb250YWluaW5nIGNoYW5nZWQgcHJvcGVydGllc1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW0Jhc2VDb21wb25lbnRQcm9wcy5NT0RFTF0pIHtcbiAgICAgIGNvbnN0IHsgY3VycmVudFZhbHVlIH0gPSBjaGFuZ2VzW0Jhc2VDb21wb25lbnRQcm9wcy5NT0RFTF07XG4gICAgICBpZiAoY3VycmVudFZhbHVlKSB0aGlzLmdldE1vZGVsKGN1cnJlbnRWYWx1ZSk7XG4gICAgICB0aGlzLmdldExvY2FsZSh0aGlzLnRyYW5zbGF0YWJsZSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbQmFzZUNvbXBvbmVudFByb3BzLklOSVRJQUxJWkVEXSB8fFxuICAgICAgY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuTE9DQUxFXSB8fFxuICAgICAgY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuVFJBTlNMQVRBQkxFXVxuICAgIClcbiAgICAgIHRoaXMuZ2V0TG9jYWxlKHRoaXMudHJhbnNsYXRhYmxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgYXBwcm9wcmlhdGUgbG9jYWxlIHN0cmluZyBiYXNlZCBvbiB0aGUgdHJhbnNsYXRhYmxlIGZsYWcgYW5kIGF2YWlsYWJsZSBsb2NhbGVzLlxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIHdoaWNoIGxvY2FsZSBzdHJpbmcgdG8gdXNlIGZvciB0cmFuc2xhdGlvbiBiYXNlZCBvbiB0aGUgdHJhbnNsYXRhYmxlIGZsYWdcbiAgICogYW5kIGF2YWlsYWJsZSBsb2NhbGUgc2V0dGluZ3MuIFRoaXMgbWV0aG9kIGZpcnN0IGNvbnZlcnRzIHRoZSB0cmFuc2xhdGFibGUgcGFyYW1ldGVyIHRvIGEgYm9vbGVhblxuICAgKiB1c2luZyB0aGUgc3RyaW5nVG9Cb29sZWFuIHV0aWxpdHkgZnVuY3Rpb24uIElmIHRyYW5zbGF0YWJsZSBpcyBmYWxzZSwgaXQgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcsXG4gICAqIGluZGljYXRpbmcgbm8gdHJhbnNsYXRpb24gc2hvdWxkIGJlIHBlcmZvcm1lZC4gSWYgdHJhbnNsYXRhYmxlIGlzIHRydWUsIGl0IGNoZWNrcyBmb3IgYW4gZXhwbGljaXRseVxuICAgKiBwcm92aWRlZCBsb2NhbGUgdmlhIHRoZSBsb2NhbGUgcHJvcGVydHkuIElmIG5vIGV4cGxpY2l0IGxvY2FsZSBpcyBhdmFpbGFibGUsIGl0IGZhbGxzIGJhY2sgdG8gdGhlXG4gICAqIGNvbXBvbmVudExvY2FsZSBkZXJpdmVkIGZyb20gdGhlIGNvbXBvbmVudCdzIGNsYXNzIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nT3JCb29sZWFufSB0cmFuc2xhdGFibGUgLSBXaGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHRyYW5zbGF0ZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbG9jYWxlIHN0cmluZyB0byB1c2UgZm9yIHRyYW5zbGF0aW9uLCBvciBlbXB0eSBzdHJpbmcgaWYgbm90IHRyYW5zbGF0YWJsZVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDIGFzIENvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IE4gYXMgTmd4QmFzZUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFMgYXMgU3RyaW5nVXRpbHNcbiAgICpcbiAgICogICBDLT4+TjogZ2V0TG9jYWxlKHRyYW5zbGF0YWJsZSlcbiAgICogICBOLT4+Uzogc3RyaW5nVG9Cb29sZWFuKHRyYW5zbGF0YWJsZSlcbiAgICogICBTLS0+Pk46IFJldHVybiBib29sZWFuIHZhbHVlXG4gICAqICAgTi0+Pk46IFN0b3JlIGluIHRoaXMudHJhbnNsYXRhYmxlXG4gICAqICAgYWx0IHRyYW5zbGF0YWJsZSBpcyBmYWxzZVxuICAgKiAgICAgTi0tPj5DOiBSZXR1cm4gZW1wdHkgc3RyaW5nXG4gICAqICAgZWxzZSB0cmFuc2xhdGFibGUgaXMgdHJ1ZVxuICAgKiAgICAgYWx0IHRoaXMubG9jYWxlIGlzIGRlZmluZWRcbiAgICogICAgICAgTi0tPj5DOiBSZXR1cm4gdGhpcy5sb2NhbGVcbiAgICogICAgIGVsc2UgdGhpcy5sb2NhbGUgaXMgbm90IGRlZmluZWRcbiAgICogICAgICAgTi0tPj5DOiBSZXR1cm4gdGhpcy5jb21wb25lbnRMb2NhbGVcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKi9cbiAgZ2V0TG9jYWxlKHRyYW5zbGF0YWJsZTogU3RyaW5nT3JCb29sZWFuKTogc3RyaW5nIHtcbiAgICB0aGlzLnRyYW5zbGF0YWJsZSA9IHN0cmluZ1RvQm9vbGVhbih0cmFuc2xhdGFibGUpO1xuICAgIGlmICghdGhpcy50cmFuc2xhdGFibGUpIHJldHVybiAnJztcbiAgICBpZiAoIXRoaXMubG9jYWxlKSB0aGlzLmxvY2FsZSA9IHRoaXMuY29tcG9uZW50TG9jYWxlO1xuICAgIHJldHVybiB0aGlzLmxvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgcm91dGUgZm9yIHRoZSBjb21wb25lbnRcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSByb3V0ZSBwYXRoIGZvciB0aGUgY29tcG9uZW50LCBnZW5lcmF0aW5nIG9uZSBiYXNlZCBvbiB0aGUgbW9kZWxcbiAgICogaWYgbm8gcm91dGUgaXMgZXhwbGljaXRseSBzZXQuIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiBhIHJvdXRlIGlzIGFscmVhZHkgZGVmaW5lZCwgYW5kIGlmIG5vdCxcbiAgICogaXQgY3JlYXRlcyBhIGRlZmF1bHQgcm91dGUgYmFzZWQgb24gdGhlIG1vZGVsJ3MgY29uc3RydWN0b3IgbmFtZS4gVGhlIGdlbmVyYXRlZCByb3V0ZSBmb2xsb3dzXG4gICAqIHRoZSBwYXR0ZXJuICcvbW9kZWwve01vZGVsTmFtZX0nLiBUaGlzIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGljIHJvdXRpbmcgaW4gQ1JVRCBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSByb3V0ZSBwYXRoIGZvciB0aGUgY29tcG9uZW50LCBvciBlbXB0eSBzdHJpbmcgaWYgbm8gcm91dGUgaXMgYXZhaWxhYmxlXG4gICAqL1xuICBnZXRSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yb3V0ZSAmJiB0aGlzLm1vZGVsIGluc3RhbmNlb2YgTW9kZWwpXG4gICAgICB0aGlzLnJvdXRlID0gYC9tb2RlbC8ke3RoaXMubW9kZWw/LmNvbnN0cnVjdG9yLm5hbWV9YDtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZSB8fCAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzb2x2ZXMgYW5kIHNldHMgdGhlIGNvbXBvbmVudCdzIG1vZGVsXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyB0aGUgcHJvdmlkZWQgbW9kZWwgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgTW9kZWwgaW5zdGFuY2VcbiAgICogb3IgYSBzdHJpbmcgaWRlbnRpZmllci4gSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IGF0dGVtcHRzIHRvIHJlc29sdmUgdGhlIGFjdHVhbCBtb2RlbFxuICAgKiBmcm9tIHRoZSBpbmplY3RhYmxlcyByZWdpc3RyeS4gQWZ0ZXIgcmVzb2x2aW5nIHRoZSBtb2RlbCwgaXQgY2FsbHMgc2V0TW9kZWxEZWZpbml0aW9uc1xuICAgKiB0byBjb25maWd1cmUgdGhlIGNvbXBvbmVudCBiYXNlZCBvbiB0aGUgbW9kZWwncyBtZXRhZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBNb2RlbH0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugb3IgaWRlbnRpZmllciBzdHJpbmdcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIGdldE1vZGVsKG1vZGVsOiBzdHJpbmcgfCBNb2RlbCk6IHZvaWQge1xuICAgIGlmICghKG1vZGVsIGluc3RhbmNlb2YgTW9kZWwpKVxuICAgICAgdGhpcy5tb2RlbCA9IGdldEluamVjdGFibGVzUmVnaXN0cnkoKS5nZXQobW9kZWwpIGFzIE1vZGVsO1xuICAgIHRoaXMuc2V0TW9kZWxEZWZpbml0aW9ucyh0aGlzLm1vZGVsIGFzIE1vZGVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyBjb21wb25lbnQgcHJvcGVydGllcyBiYXNlZCBvbiBtb2RlbCBtZXRhZGF0YVxuICAgKiBAc3VtbWFyeSBFeHRyYWN0cyBhbmQgYXBwbGllcyBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1vZGVsJ3MgZGVjb3JhdG9ycyB0byBzZXQgdXBcbiAgICogdGhlIGNvbXBvbmVudC4gVGhpcyBtZXRob2QgdXNlcyB0aGUgcmVuZGVyaW5nIGVuZ2luZSB0byByZXRyaWV2ZSBkZWNvcmF0b3IgbWV0YWRhdGFcbiAgICogZnJvbSB0aGUgbW9kZWwsIHRoZW4gY29uZmlndXJlcyB0aGUgY29tcG9uZW50J3MgbWFwcGVyIGFuZCBpdGVtIHByb3BlcnRpZXMgYWNjb3JkaW5nbHkuXG4gICAqIEl0IGVuc3VyZXMgdGhlIHJvdXRlIGlzIHByb3Blcmx5IHNldCBhbmQgbWVyZ2VzIHZhcmlvdXMgcHJvcGVydGllcyBmcm9tIHRoZSBtb2RlbCdzXG4gICAqIG1ldGFkYXRhIGludG8gdGhlIGNvbXBvbmVudCdzIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsIC0gVGhlIG1vZGVsIHRvIGV4dHJhY3QgY29uZmlndXJhdGlvbiBmcm9tXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBzZXRNb2RlbERlZmluaXRpb25zKG1vZGVsOiBNb2RlbCk6IHZvaWQge1xuICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIE1vZGVsKSB7XG4gICAgICB0aGlzLmdldFJvdXRlKCk7XG4gICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMucmVuZGVyaW5nRW5naW5lLmdldERlY29yYXRvcnModGhpcy5tb2RlbCBhcyBNb2RlbCwge30pO1xuICAgICAgY29uc3QgeyBwcm9wcywgaXRlbSwgY2hpbGRyZW4gfSA9IGZpZWxkO1xuICAgICAgdGhpcy5wcm9wcyA9IE9iamVjdC5hc3NpZ24ocHJvcHMgfHwge30sIHsgY2hpbGRyZW46IGNoaWxkcmVuIHx8IFtdIH0pO1xuICAgICAgaWYgKGl0ZW0/LnByb3BzPy5bJ21hcHBlciddKSB0aGlzLm1hcHBlciA9IGl0ZW0/LnByb3BzIVsnbWFwcGVyJ10gfHwge307XG4gICAgICB0aGlzLml0ZW0gPSB7XG4gICAgICAgIHRhZzogaXRlbT8udGFnIHx8ICcnLFxuICAgICAgICAuLi5pdGVtPy5wcm9wcyxcbiAgICAgICAgLi4uKHRoaXMubWFwcGVyID8geyBtYXBwZXI6IHRoaXMubWFwcGVyIH0gOiB7fSksXG4gICAgICAgIC4uLnsgcm91dGU6IGl0ZW0/LnByb3BzPy5bJ3JvdXRlJ10gfHwgdGhpcy5yb3V0ZSB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnRcbiAgICogQHN1bW1hcnkgUGVyZm9ybXMgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBtZXRob2QgY2hlY2tzIGlmXG4gICAqIHRoZSBjb21wb25lbnQgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCB0byBwcmV2ZW50IGR1cGxpY2F0ZSBpbml0aWFsaXphdGlvbi5cbiAgICogV2hlbiBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBpdCBzZXRzIHRoZSBpbml0aWFsaXplZCBmbGFnIHRvIHRydWUgYW5kIGxvZ3NcbiAgICogYW4gaW5pdGlhbGl6YXRpb24gbWVzc2FnZSB3aXRoIHRoZSBjb21wb25lbnQgbmFtZS4gVGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IGNhbGxlZFxuICAgKiBkdXJpbmcgdGhlIGNvbXBvbmVudCdzIGxpZmVjeWNsZSBzZXR1cC5cbiAgICovXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXMgY3VzdG9tIGV2ZW50cyBmcm9tIGNoaWxkIGNvbXBvbmVudHMuXG4gICAqIEBzdW1tYXJ5IFJlY2VpdmVzIGV2ZW50cyBmcm9tIGNoaWxkIHJlbmRlcmVyIGNvbXBvbmVudHMgYW5kIGZvcndhcmRzIHRoZW0gdG8gcGFyZW50XG4gICAqIGNvbXBvbmVudHMgdGhyb3VnaCB0aGUgbGlzdGVuRXZlbnQgb3V0cHV0LiBUaGlzIGNyZWF0ZXMgYW4gZXZlbnQgcHJvcGFnYXRpb24gY2hhaW5cbiAgICogdGhhdCBhbGxvd3MgZXZlbnRzIHRvIGJ1YmJsZSB1cCB0aHJvdWdoIHRoZSBjb21wb25lbnQgaGllcmFyY2h5LCBlbmFibGluZyBjb29yZGluYXRlZFxuICAgKiByZXNwb25zZXMgdG8gdXNlciBpbnRlcmFjdGlvbnMgYWNyb3NzIHRoZSBsYXlvdXQgc3RydWN0dXJlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlbmRlcmVyQ3VzdG9tRXZlbnR9IGV2ZW50IC0gVGhlIGN1c3RvbSBldmVudCBmcm9tIGEgY2hpbGQgY29tcG9uZW50XG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEMgYXMgQ2hpbGQgQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBOZ3hCYXNlQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQYXJlbnQgQ29tcG9uZW50XG4gICAqXG4gICAqICAgQy0+Pkw6IEVtaXQgUmVuZGVyZXJDdXN0b21FdmVudFxuICAgKiAgIEwtPj5MOiBoYW5kbGVFdmVudChldmVudClcbiAgICogICBMLT4+UDogbGlzdGVuRXZlbnQuZW1pdChldmVudClcbiAgICogICBOb3RlIG92ZXIgUDogSGFuZGxlIGV2ZW50IGluIHBhcmVudFxuICAgKlxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgaGFuZGxlRXZlbnQoZXZlbnQ6IFJlbmRlcmVyQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUcmFja3MgaXRlbXMgaW4gbmdGb3IgbG9vcHMgZm9yIG9wdGltYWwgY2hhbmdlIGRldGVjdGlvbi5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYSB0cmFja2luZyBmdW5jdGlvbiBmb3IgQW5ndWxhcidzICpuZ0ZvciBkaXJlY3RpdmUgdG8gb3B0aW1pemUgcmVuZGVyaW5nXG4gICAqIHBlcmZvcm1hbmNlLiBUaGlzIG1ldGhvZCBnZW5lcmF0ZXMgdW5pcXVlIGlkZW50aWZpZXJzIGZvciBsaXN0IGl0ZW1zIGJhc2VkIG9uIHRoZWlyIGluZGV4XG4gICAqIGFuZCBjb250ZW50LCBhbGxvd2luZyBBbmd1bGFyIHRvIGVmZmljaWVudGx5IHRyYWNrIGNoYW5nZXMgYW5kIG1pbmltaXplIERPTSBtYW5pcHVsYXRpb25zXG4gICAqIGR1cmluZyBsaXN0IHVwZGF0ZXMuIFRoZSB0cmFja2luZyBmdW5jdGlvbiBpcyBlc3NlbnRpYWwgZm9yIG1haW50YWluaW5nIGNvbXBvbmVudCBzdGF0ZVxuICAgKiBhbmQgcHJldmVudGluZyB1bm5lY2Vzc2FyeSByZS1yZW5kZXJpbmcgb2YgdW5jaGFuZ2VkIGl0ZW1zLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gdGhlIGxpc3RcbiAgICogQHBhcmFtIHtLZXlWYWx1ZSB8IHN0cmluZyB8IG51bWJlcn0gaXRlbSAtIFRoZSBpdGVtIGRhdGEgdG8gdHJhY2tcbiAgICogQHJldHVybnMge3N0cmluZyB8IG51bWJlcn0gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGl0ZW1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIHRyYWNrSXRlbUZuKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgaXRlbTogS2V5VmFsdWUgfCBzdHJpbmcgfCBudW1iZXJcbiAgKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gYCR7aW5kZXh9LSR7aXRlbX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYW5kIGFwcGxpZXMgcHJvcGVydGllcyBmcm9tIHRoZSBwcm9wcyBvYmplY3QgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgcHJvcGVydGllcyBvZiB0aGUgcHJvdmlkZWQgaW5zdGFuY2Ugb2JqZWN0XG4gICAqIGFuZCBhcHBsaWVzIGFueSBtYXRjaGluZyBwcm9wZXJ0aWVzIGZyb20gdGhlIGNvbXBvbmVudCdzIHByb3BzIGNvbmZpZ3VyYXRpb24gdG8gdGhlXG4gICAqIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBhbGxvd3MgZm9yIGR5bmFtaWMgcHJvcGVydHkgYXNzaWdubWVudCBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAqIHN0b3JlZCBpbiB0aGUgcHJvcHMgb2JqZWN0LCBlbmFibGluZyBmbGV4aWJsZSBjb21wb25lbnQgY3VzdG9taXphdGlvbiB3aXRob3V0IHJlcXVpcmluZ1xuICAgKiBleHBsaWNpdCBwcm9wZXJ0eSBiaW5kaW5nIGZvciBldmVyeSBwb3NzaWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbi5cbiAgICpcbiAgICogVGhlIG1ldGhvZCBwZXJmb3JtcyBhIHNhZmUgcHJvcGVydHkgYXNzaWdubWVudCBieSBjaGVja2luZyBpZiBlYWNoIGtleSBmcm9tIHRoZSBpbnN0YW5jZVxuICAgKiBleGlzdHMgaW4gdGhlIHByb3BzIG9iamVjdCBiZWZvcmUgYXBwbHlpbmcgaXQuIFRoaXMgcHJldmVudHMgYWNjaWRlbnRhbCBwcm9wZXJ0eVxuICAgKiBvdmVyd3JpdGluZyBhbmQgZW5zdXJlcyBvbmx5IGludGVuZGVkIHByb3BlcnRpZXMgYXJlIG1vZGlmaWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVZhbHVlfSBpbnN0YW5jZSAtIFRoZSBjb21wb25lbnQgaW5zdGFuY2Ugb2JqZWN0IHRvIHByb2Nlc3NcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQyBhcyBDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBCIGFzIE5neEJhc2VDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFByb3BzIE9iamVjdFxuICAgKlxuICAgKiAgIEMtPj5COiBwYXJzZVByb3BzKGluc3RhbmNlKVxuICAgKiAgIEItPj5COiBHZXQgT2JqZWN0LmtleXMoaW5zdGFuY2UpXG4gICAqICAgbG9vcCBGb3IgZWFjaCBrZXkgaW4gaW5zdGFuY2VcbiAgICogICAgIEItPj5QOiBDaGVjayBpZiBrZXkgZXhpc3RzIGluIHRoaXMucHJvcHNcbiAgICogICAgIGFsdCBLZXkgZXhpc3RzIGluIHByb3BzXG4gICAqICAgICAgIEItPj5COiBTZXQgdGhpc1trZXldID0gdGhpcy5wcm9wc1trZXldXG4gICAqICAgICBlbHNlIEtleSBub3QgaW4gcHJvcHNcbiAgICogICAgICAgTm90ZSBvdmVyIEI6IFNraXAgdGhpcyBrZXlcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VQcm9wcyhpbnN0YW5jZTogS2V5VmFsdWUpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhpbnN0YW5jZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5wcm9wcykuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgKHRoaXMgYXMgS2V5VmFsdWUpW2tleV0gPSB0aGlzLnByb3BzW2tleV07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
535
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmd4QmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL05neEJhc2VDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxVQUFVLEVBR1YsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixlQUFlLEdBQ2hCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFFTCxhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkRHO0FBTUgsTUFBTSxPQUFnQixnQkFBZ0I7SUF1U3BDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQ0c7SUFDSCx5REFBeUQ7SUFDekQsWUFBeUQsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQWpRekU7Ozs7Ozs7Ozs7O1dBV0c7UUFFSCxVQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUVwQzs7Ozs7Ozs7Ozs7V0FXRztRQUVILFNB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REYsS0FBSztnQkFZTixNQUFNO3NCQURMLEtBQUs7Z0JBZU4sTUFBTTtzQkFETCxLQUFLO2dCQWVOLFlBQVk7c0JBRFgsS0FBSztnQkFlTixTQUFTO3NCQURSLEtBQUs7Z0JBZ0JOLElBQUk7c0JBREgsS0FBSztnQkE0Qk4sV0FBVztzQkFEVixLQUFLO2dCQXlCTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbnB1dCxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlWYWx1ZSwgUmVuZGVyZXJDdXN0b21FdmVudCwgU3RyaW5nT3JCb29sZWFuIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZW5lcmF0ZVJhbmRvbVZhbHVlLFxuICBnZXRJbmplY3RhYmxlc1JlZ2lzdHJ5LFxuICBzdHJpbmdUb0Jvb2xlYW4sXG59IGZyb20gJy4uL2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxlQ29udGV4dCB9IGZyb20gJy4uL2kxOG4vTG9hZGVyJztcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcbmltcG9ydCB7XG4gIENydWRPcGVyYXRpb25zLFxuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tICdAZGVjYWYtdHMvZGItZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50UHJvcHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBOZ3hSZW5kZXJpbmdFbmdpbmUgfSBmcm9tICcuL05neFJlbmRlcmluZ0VuZ2luZSc7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdAZGVjYWYtdHMvbG9nZ2luZyc7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tICcuLi9mb3ItYW5ndWxhci1jb21tb24ubW9kdWxlJztcbmltcG9ydCB7IERlY2FmUmVwb3NpdG9yeSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJ0BkZWNhZi10cy9jb3JlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjb21wb25lbnQgY2xhc3MgdGhhdCBwcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgYWxsIERlY2FmIGNvbXBvbmVudHMuXG4gKiBAc3VtbWFyeSBUaGUgTmd4QmFzZUNvbXBvbmVudCBzZXJ2ZXMgYXMgdGhlIGZvdW5kYXRpb24gZm9yIGFsbCBEZWNhZiBVSSBjb21wb25lbnRzLCBwcm92aWRpbmdcbiAqIHNoYXJlZCBmdW5jdGlvbmFsaXR5IGZvciBsb2NhbGl6YXRpb24sIGVsZW1lbnQgcmVmZXJlbmNlcywgYW5kIHN0eWxpbmcuIFRoaXMgYWJzdHJhY3QgY2xhc3NcbiAqIGltcGxlbWVudHMgY29tbW9uIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBhcmUgdXNlZCBhY3Jvc3MgdGhlIGNvbXBvbmVudCBsaWJyYXJ5LCBlbnN1cmluZ1xuICogY29uc2lzdGVudCBiZWhhdmlvciBhbmQgcmVkdWNpbmcgY29kZSBkdXBsaWNhdGlvbi4gQ29tcG9uZW50cyB0aGF0IGV4dGVuZCB0aGlzIGNsYXNzIGluaGVyaXRcbiAqIGl0cyBjYXBhYmlsaXRpZXMgZm9yIGhhbmRsaW5nIHRyYW5zbGF0aW9ucywgYWNjZXNzaW5nIERPTSBlbGVtZW50cywgYW5kIGFwcGx5aW5nIGN1c3RvbSBzdHlsaW5nLlxuICpcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhhdCB0aGlzIGNvbXBvbmVudCB3b3JrcyB3aXRoXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5zdGFuY2UgLSBUaGUgY29tcG9uZW50IGluc3RhbmNlIHRva2VuIHVzZWQgZm9yIGlkZW50aWZpY2F0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxlIC0gVGhlIGxvY2FsZSB0byBiZSB1c2VkIGZvciB0cmFuc2xhdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nT3JCb29sZWFufSB0cmFuc2xhdGFibGUgLSBXaGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHRyYW5zbGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgLSBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBjb21wb25lbnRcbiAqIEBwYXJhbSB7XCJpb3NcIiB8IFwibWRcIiB8IHVuZGVmaW5lZH0gbW9kZSAtIENvbXBvbmVudCBwbGF0Zm9ybSBzdHlsZVxuICpcbiAqIEBjb21wb25lbnQgTmd4QmFzZUNvbXBvbmVudFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcC1teS1jb21wb25lbnQnLFxuICogICB0ZW1wbGF0ZVVybDogJy4vbXktY29tcG9uZW50LmNvbXBvbmVudC5odG1sJyxcbiAqICAgc3R5bGVVcmxzOiBbJy4vbXktY29tcG9uZW50LmNvbXBvbmVudC5zY3NzJ11cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQgZXh0ZW5kcyBOZ3hCYXNlQ29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IoQEluamVjdCgnaW5zdGFuY2VUb2tlbicpIGluc3RhbmNlOiBzdHJpbmcpIHtcbiAqICAgICBzdXBlcihpbnN0YW5jZSk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nT25Jbml0KCkge1xuICogICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICogICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBpbml0aWFsaXphdGlvblxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQXBwIGFzIEFwcGxpY2F0aW9uXG4gKiAgIHBhcnRpY2lwYW50IENvbXAgYXMgQ29tcG9uZW50XG4gKiAgIHBhcnRpY2lwYW50IEJhc2UgYXMgTmd4QmFzZUNvbXBvbmVudFxuICogICBwYXJ0aWNpcGFudCBFbmdpbmUgYXMgTmd4UmVuZGVyaW5nRW5naW5lXG4gKlxuICogICBBcHAtPj5Db21wOiBDcmVhdGUgY29tcG9uZW50XG4gKiAgIENvbXAtPj5CYXNlOiBzdXBlcihpbnN0YW5jZSlcbiAqICAgQmFzZS0+PkJhc2U6IFNldCBjb21wb25lbnROYW1lICYgY29tcG9uZW50TG9jYWxlXG4gKlxuICogICBBcHAtPj5Db21wOiBTZXQgQElucHV0IHByb3BlcnRpZXNcbiAqICAgQ29tcC0+PkJhc2U6IG5nT25DaGFuZ2VzKGNoYW5nZXMpXG4gKlxuICogICBhbHQgbW9kZWwgY2hhbmdlZFxuICogICAgIEJhc2UtPj5CYXNlOiBnZXRNb2RlbChtb2RlbClcbiAqICAgICBCYXNlLT4+RW5naW5lOiBnZXREZWNvcmF0b3JzKG1vZGVsLCB7fSlcbiAqICAgICBFbmdpbmUtLT4+QmFzZTogUmV0dXJuIGRlY29yYXRvciBtZXRhZGF0YVxuICogICAgIEJhc2UtPj5CYXNlOiBDb25maWd1cmUgbWFwcGVyIGFuZCBpdGVtXG4gKiAgICAgQmFzZS0+PkJhc2U6IGdldExvY2FsZSh0cmFuc2xhdGFibGUpXG4gKiAgIGVsc2UgbG9jYWxlL3RyYW5zbGF0YWJsZSBjaGFuZ2VkXG4gKiAgICAgQmFzZS0+PkJhc2U6IGdldExvY2FsZSh0cmFuc2xhdGFibGUpXG4gKiAgIGVuZFxuICpcbiAqICAgQXBwLT4+Q29tcDogbmdPbkluaXQoKVxuICogICBDb21wLT4+QmFzZTogaW5pdGlhbGl6ZSgpXG4gKiAgIEJhc2UtPj5CYXNlOiBTZXQgaW5pdGlhbGl6ZWQgZmxhZ1xuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2PicsXG4gIGhvc3Q6IHsgJ1thdHRyLmlkXSc6ICd1aWQnIH0sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5neEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50J3MgZWxlbWVudC5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgZGlyZWN0IGFjY2VzcyB0byB0aGUgbmF0aXZlIERPTSBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQgdGhyb3VnaCBBbmd1bGFyJ3NcbiAgICogVmlld0NoaWxkIGRlY29yYXRvci4gVGhpcyByZWZlcmVuY2UgY2FuIGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUgRE9NIGVsZW1lbnQgZGlyZWN0bHksXG4gICAqIGFwcGx5IGN1c3RvbSBzdHlsZXMsIG9yIGFjY2VzcyBuYXRpdmUgZWxlbWVudCBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLiBUaGUgZWxlbWVudCBpc1xuICAgKiBpZGVudGlmaWVkIGJ5IHRoZSAnY29tcG9uZW50JyB0ZW1wbGF0ZSByZWZlcmVuY2UgdmFyaWFibGUuXG4gICAqXG4gICAqIEB0eXBlIHtFbGVtZW50UmVmfVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY29tcG9uZW50JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgY29tcG9uZW50ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgbmFtZSBvZiB0aGUgY29tcG9uZW50LCB3aGljaCBpcyB0eXBpY2FsbHkgZGVyaXZlZCBmcm9tIHRoZSBjbGFzcyBuYW1lLlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgdmFyaW91cyBwdXJwb3NlcyBzdWNoIGFzIGxvZ2dpbmcsIGRlcml2aW5nIHRoZSBkZWZhdWx0XG4gICAqIGxvY2FsZSwgYW5kIHBvdGVudGlhbGx5IGZvciBjb21wb25lbnQgaWRlbnRpZmljYXRpb24gaW4gZGVidWdnaW5nIG9yIGVycm9yIHJlcG9ydGluZy5cbiAgICpcbiAgICogVGhlIGBjb21wb25lbnROYW1lYCBpcyBzZXQgZHVyaW5nIHRoZSBjb21wb25lbnQncyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGFuZCBzaG91bGQgbm90XG4gICAqIGJlIG1vZGlmaWVkIGV4dGVybmFsbHkuIEl0J3MgbWFya2VkIGFzIHByb3RlY3RlZCB0byBhbGxvdyBhY2Nlc3MgaW4gZGVyaXZlZCBjbGFzc2VzIHdoaWxlXG4gICAqIHByZXZlbnRpbmcgZGlyZWN0IGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudCBoaWVyYXJjaHkuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSW5zaWRlIGEgZGVyaXZlZCBjb21wb25lbnQgY2xhc3NcbiAgICogY29uc29sZS5sb2codGhpcy5jb21wb25lbnROYW1lKTsgLy8gT3V0cHV0czogXCJNeUN1c3RvbUNvbXBvbmVudFwiXG4gICAqL1xuICBjb21wb25lbnROYW1lITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZW5kZXJlci5cbiAgICogQHN1bW1hcnkgQSB1bmlxdWUgaWRlbnRpZmllciB1c2VkIHRvIHJlZmVyZW5jZSB0aGUgY29tcG9uZW50J3MgcmVuZGVyZXIgaW5zdGFuY2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgZm9yIHRhcmdldGluZyBzcGVjaWZpYyByZW5kZXJlciBpbnN0YW5jZXMgd2hlbiBtdWx0aXBsZSBjb21wb25lbnRzXG4gICAqIGFyZSBwcmVzZW50IG9uIHRoZSBzYW1lIHBhZ2UuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICByZW5kZXJlcklkITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVwb3NpdG9yeSBtb2RlbCBmb3IgZGF0YSBvcGVyYXRpb25zLlxuICAgKiBAc3VtbWFyeSBUaGUgZGF0YSBtb2RlbCByZXBvc2l0b3J5IHRoYXQgdGhpcyBjb21wb25lbnQgd2lsbCB1c2UgZm9yIENSVUQgb3BlcmF0aW9ucy5cbiAgICogVGhpcyBwcm92aWRlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGEgbGF5ZXIgZm9yIHJldHJpZXZpbmcgYW5kIG1hbmlwdWxhdGluZyBkYXRhLlxuICAgKlxuICAgKiBAdHlwZSB7TW9kZWx8IHVuZGVmaW5lZH1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG1vZGVsITogTW9kZWwgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgcmVwb3NpdG9yeSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGF0YSBtb2RlbC5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhIGxheWVyIGZvciByZXRyaWV2aW5nIGFuZCBtYW5pcHVsYXRpbmcgZGF0YS5cbiAgICogVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgYERlY2FmUmVwb3NpdG9yeWAgY2xhc3MgZnJvbSB0aGUgYEBkZWNhZi10cy9jb3JlYCBwYWNrYWdlLFxuICAgKiB3aGljaCBpcyBpbml0aWFsaXplZCBpbiB0aGUgYHJlcG9zaXRvcnlgIGdldHRlciBtZXRob2QuXG4gICAqXG4gICAqIFRoZSByZXBvc2l0b3J5IGlzIHVzZWQgdG8gcGVyZm9ybSBDUlVEIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSBvcGVyYXRpb25zIG9uIHRoZVxuICAgKiBkYXRhIG1vZGVsLCBzdWNoIGFzIGZldGNoaW5nIGRhdGEsIGNyZWF0aW5nIG5ldyBpdGVtcywgdXBkYXRpbmcgZXhpc3RpbmcgaXRlbXMsIGFuZCBkZWxldGluZ1xuICAgKiBpdGVtcy4gSXQgYWxzbyBwcm92aWRlcyBtZXRob2RzIGZvciBxdWVyeWluZyBhbmQgZmlsdGVyaW5nIGRhdGEgYmFzZWQgb24gc3BlY2lmaWMgY3JpdGVyaWEuXG4gICAqXG4gICAqIEB0eXBlIHtEZWNhZlJlcG9zaXRvcnk8TW9kZWw+fVxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIF9yZXBvc2l0b3J5PzogRGVjYWZSZXBvc2l0b3J5PE1vZGVsPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIER5bmFtaWMgcHJvcGVydGllcyBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHN1bW1hcnkgQ29udGFpbnMga2V5LXZhbHVlIHBhaXJzIG9mIGR5bmFtaWMgcHJvcGVydGllcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnRcbiAgICogYXQgcnVudGltZS4gVGhpcyBmbGV4aWJsZSBjb25maWd1cmF0aW9uIG9iamVjdCBhbGxvd3MgZm9yIGR5bmFtaWMgcHJvcGVydHkgYXNzaWdubWVudCB3aXRob3V0XG4gICAqIHJlcXVpcmluZyBleHBsaWNpdCBpbnB1dCBiaW5kaW5ncyBmb3IgZXZlcnkgcG9zc2libGUgY29uZmlndXJhdGlvbiBvcHRpb24uIFByb3BlcnRpZXMgZnJvbVxuICAgKiB0aGlzIG9iamVjdCBhcmUgcGFyc2VkIGFuZCBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UgdGhyb3VnaCB0aGUgcGFyc2VQcm9wcyBtZXRob2QsXG4gICAqIGVuYWJsaW5nIGN1c3RvbWl6YWJsZSBjb21wb25lbnQgYmVoYXZpb3IgYmFzZWQgb24gZXh0ZXJuYWwgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fVxuICAgKiBAZGVmYXVsdCB7fVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBsaXN0IGl0ZW0gcmVuZGVyaW5nXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgaG93IGxpc3QgaXRlbXMgc2hvdWxkIGJlIHJlbmRlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAqIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBjb25maWd1cmF0aW9uIG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgdGFnIG5hbWVcbiAgICogYW5kIG90aGVyIHByb3BlcnRpZXMgbmVlZGVkIHRvIHJlbmRlciBsaXN0IGl0ZW1zIGNvcnJlY3RseS4gVGhlIHRhZyBwcm9wZXJ0eVxuICAgKiBpZGVudGlmaWVzIHdoaWNoIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCB0byByZW5kZXIgZWFjaCBpdGVtIGluIGEgbGlzdC5cbiAgICogQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGNhbiBiZSBpbmNsdWRlZCB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBiZWhhdmlvci5cbiAgICpcbiAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fVxuICAgKiBAZGVmYXVsdCB7dGFnOiBcIlwifVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgaXRlbTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IHRhZzogJycgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByaW1hcnkga2V5IGZpZWxkIG5hbWUgZm9yIHRoZSBtb2RlbC5cbiAgICogQHN1bW1hcnkgU3BlY2lmaWVzIHdoaWNoIGZpZWxkIGluIHRoZSBtb2RlbCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgcHJpbWFyeSBrZXkuXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGlkZW50aWZ5aW5nIHVuaXF1ZSByZWNvcmRzIGluIG9wZXJhdGlvbnMgbGlrZSB1cGRhdGUgYW5kIGRlbGV0ZS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJ2lkJ1xuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcGshOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBCYXNlIHJvdXRlIGZvciBuYXZpZ2F0aW9uIHJlbGF0ZWQgdG8gdGhpcyBjb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGJhc2Ugcm91dGUgcGF0aCB1c2VkIGZvciBuYXZpZ2F0aW9uIGFjdGlvbnMgcmVsYXRlZCB0byB0aGlzIGNvbXBvbmVudC5cbiAgICogVGhpcyBpcyBvZnRlbiB1c2VkIGFzIGEgcHJlZml4IGZvciBjb25zdHJ1Y3RpbmcgbmF2aWdhdGlvbiBVUkxzLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcm91dGUhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBdmFpbGFibGUgQ1JVRCBvcGVyYXRpb25zIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgRGVmaW5lcyB3aGljaCBDUlVEIG9wZXJhdGlvbnMgKENyZWF0ZSwgUmVhZCwgVXBkYXRlLCBEZWxldGUpIGFyZSBhdmFpbGFibGVcbiAgICogZm9yIHRoaXMgY29tcG9uZW50LiBUaGlzIGFmZmVjdHMgd2hpY2ggb3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIG9uIHRoZSBkYXRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbT3BlcmF0aW9uS2V5cy5SRUFEXVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3BlcmF0aW9uczogQ3J1ZE9wZXJhdGlvbnNbXSA9IFtPcGVyYXRpb25LZXlzLlJFQURdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjdXJyZW50IHJlY29yZC5cbiAgICogQHN1bW1hcnkgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGN1cnJlbnQgcmVjb3JkIGJlaW5nIGRpc3BsYXllZCBvciBtYW5pcHVsYXRlZC5cbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBwcmltYXJ5IGtleSBmb3Igb3BlcmF0aW9ucyBvbiBzcGVjaWZpYyByZWNvcmRzLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgdWlkITogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmllbGQgbWFwcGluZyBjb25maWd1cmF0aW9uLlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIGhvdyBmaWVsZHMgZnJvbSB0aGUgZGF0YSBtb2RlbCBzaG91bGQgYmUgbWFwcGVkIHRvIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgY29tcG9uZW50LlxuICAgKiBUaGlzIGFsbG93cyBmb3IgZmxleGlibGUgZGF0YSBiaW5kaW5nIGJldHdlZW4gdGhlIG1vZGVsIGFuZCB0aGUgY29tcG9uZW50J3MgZGlzcGxheSBsb2dpYy5cbiAgICpcbiAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59XG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBtYXBwZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NhbGUgdG8gYmUgdXNlZCBmb3IgdHJhbnNsYXRpb25zLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgdGhlIGxvY2FsZSBpZGVudGlmaWVyIHRvIHVzZSB3aGVuIHRyYW5zbGF0aW5nIGNvbXBvbmVudCB0ZXh0LlxuICAgKiBUaGlzIGNhbiBiZSBzZXQgZXhwbGljaXRseSB2aWEgaW5wdXQgcHJvcGVydHkgdG8gb3ZlcnJpZGUgdGhlIGF1dG9tYXRpY2FsbHkgZGVyaXZlZFxuICAgKiBsb2NhbGUgZnJvbSB0aGUgY29tcG9uZW50IG5hbWUuIFRoZSBsb2NhbGUgaXMgdHlwaWNhbGx5IGEgbGFuZ3VhZ2UgY29kZSAoZS5nLiwgJ2VuJywgJ2ZyJylcbiAgICogb3IgYSBsYW5ndWFnZS1yZWdpb24gY29kZSAoZS5nLiwgJ2VuLVVTJywgJ2ZyLUNBJykgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIHRyYW5zbGF0aW9uXG4gICAqIHNldCB0byB1c2UgZm9yIHRoZSBjb21wb25lbnQncyB0ZXh0IGNvbnRlbnQuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBsb2NhbGUhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHRyYW5zbGF0ZWQuXG4gICAqIEBzdW1tYXJ5IENvbnRyb2xzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCdzIHRleHQgY29udGVudCBzaG91bGQgYmUgcHJvY2Vzc2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICogV2hlbiB0cnVlLCB0aGUgY29tcG9uZW50IHdpbGwgYXR0ZW1wdCB0byB0cmFuc2xhdGUgdGV4dCB1c2luZyB0aGUgc3BlY2lmaWVkIGxvY2FsZS5cbiAgICogV2hlbiBmYWxzZSwgdGV4dCBpcyBkaXNwbGF5ZWQgYXMtaXMgd2l0aG91dCB0cmFuc2xhdGlvbi4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIGVpdGhlclxuICAgKiBhIGJvb2xlYW4gdmFsdWUgb3IgYSBzdHJpbmcgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgYm9vbGVhbiAoZS5nLiwgJ3RydWUnLCAnZmFsc2UnLCAnMScsICcwJykuXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmdPckJvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICB0cmFuc2xhdGFibGU6IFN0cmluZ09yQm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBZGRpdGlvbmFsIENTUyBjbGFzcyBuYW1lcyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBBbGxvd3MgY3VzdG9tIENTUyBjbGFzc2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBjb21wb25lbnQncyByb290IGVsZW1lbnQuXG4gICAqIFRoZXNlIGNsYXNzZXMgYXJlIGFwcGVuZGVkIHRvIGFueSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBjbGFzc2VzIGJhc2VkIG9uIG90aGVyXG4gICAqIGNvbXBvbmVudCBwcm9wZXJ0aWVzLiBNdWx0aXBsZSBjbGFzc2VzIGNhbiBiZSBwcm92aWRlZCBhcyBhIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmcuXG4gICAqIFRoaXMgcHJvdmlkZXMgYSB3YXkgdG8gY3VzdG9taXplIHRoZSBjb21wb25lbnQncyBhcHBlYXJhbmNlIGJleW9uZCB0aGUgYnVpbHQtaW4gc3R5bGluZyBvcHRpb25zLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBjbGFzc05hbWU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IHBsYXRmb3JtIHN0eWxlLlxuICAgKiBAc3VtbWFyeSBDb250cm9scyB0aGUgdmlzdWFsIGFwcGVhcmFuY2Ugb2YgdGhlIGNvbXBvbmVudCBiYXNlZCBvbiBwbGF0Zm9ybSBkZXNpZ24gZ3VpZGVsaW5lcy5cbiAgICogVGhlICdpb3MnIG1vZGUgZm9sbG93cyBpT1MgZGVzaWduIHBhdHRlcm5zLCB3aGlsZSAnbWQnIChNYXRlcmlhbCBEZXNpZ24pIGZvbGxvd3MgQW5kcm9pZC9Hb29nbGVcbiAgICogZGVzaWduIHBhdHRlcm5zLiBUaGlzIHByb3BlcnR5IGFmZmVjdHMgdmFyaW91cyB2aXN1YWwgYXNwZWN0cyBzdWNoIGFzIGFuaW1hdGlvbnMsIGZvcm0gZWxlbWVudHMsXG4gICAqIGFuZCBpY29ucy4gU2V0dGluZyB0aGlzIHByb3BlcnR5IGFsbG93cyBjb21wb25lbnRzIHRvIG1haW50YWluIHBsYXRmb3JtLXNwZWNpZmljIHN0eWxpbmdcbiAgICogZm9yIGEgbW9yZSBuYXRpdmUgbG9vayBhbmQgZmVlbC5cbiAgICpcbiAgICogQHR5cGUgeyhcImlvc1wiIHwgXCJtZFwiIHwgdW5kZWZpbmVkKX1cbiAgICogQGRlZmF1bHQgXCJtZFwiXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBtb2RlOiAnaW9zJyB8ICdtZCcgfCB1bmRlZmluZWQgPSAnbWQnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxvY2FsZSBkZXJpdmVkIGZyb20gdGhlIGNvbXBvbmVudCdzIGNsYXNzIG5hbWUuXG4gICAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgYXV0b21hdGljYWxseSBkZXJpdmVkIGxvY2FsZSBiYXNlZCBvbiB0aGUgY29tcG9uZW50J3MgY2xhc3MgbmFtZS5cbiAgICogVGhpcyBpcyBkZXRlcm1pbmVkIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24gYW5kIHNlcnZlcyBhcyBhIGZhbGxiYWNrIHdoZW4gbm9cbiAgICogZXhwbGljaXQgbG9jYWxlIGlzIHByb3ZpZGVkIHZpYSB0aGUgbG9jYWxlIGlucHV0IHByb3BlcnR5LiBUaGUgZGVyaXZhdGlvbiBpcyBoYW5kbGVkXG4gICAqIGJ5IHRoZSBnZXRMb2NhbGVDb250ZXh0IHV0aWxpdHkgZnVuY3Rpb24sIHdoaWNoIGV4dHJhY3RzIGEgbG9jYWxlIGlkZW50aWZpZXJcbiAgICogZnJvbSB0aGUgY29tcG9uZW50J3MgY2xhc3MgbmFtZS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIGNvbXBvbmVudExvY2FsZSE6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoZXRoZXIgY2hpbGQgY29tcG9uZW50cyBzaG91bGQgYmUgcmVuZGVyZWRcbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyBpZiBjaGlsZCBjb21wb25lbnRzIHNob3VsZCBiZSByZW5kZXJlZCBieSB0aGUgY29tcG9uZW50LlxuICAgKiBUaGlzIGNhbiBiZSBzZXQgdG8gYSBib29sZWFuIHZhbHVlIG9yIGEgc3RyaW5nIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIGJvb2xlYW4uXG4gICAqIFdoZW4gdHJ1ZSwgY2hpbGQgY29tcG9uZW50cyBkZWZpbmVkIGluIHRoZSBtb2RlbCB3aWxsIGJlIHJlbmRlcmVkLiBXaGVuIGZhbHNlLFxuICAgKiBjaGlsZCBjb21wb25lbnRzIHdpbGwgYmUgc2tpcHBlZC4gVGhpcyBwcm92aWRlcyBjb250cm9sIG92ZXIgdGhlIHJlbmRlcmluZyBkZXB0aC5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZyB8IFN0cmluZ09yQm9vbGVhbn1cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcmVuZGVyQ2hpbGQ6IHN0cmluZyB8IFN0cmluZ09yQm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGbGFnIGluZGljYXRpbmcgaWYgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBpbml0aWFsaXplZFxuICAgKiBAc3VtbWFyeSBUcmFja3Mgd2hldGhlciB0aGUgY29tcG9uZW50IGhhcyBjb21wbGV0ZWQgaXRzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuXG4gICAqIFRoaXMgZmxhZyBpcyB1c2VkIHRvIHByZXZlbnQgZHVwbGljYXRlIGluaXRpYWxpemF0aW9uIGFuZCB0byBkZXRlcm1pbmUgaWZcbiAgICogY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBpbml0aWFsaXphdGlvbiBjYW4gYmUgcGVyZm9ybWVkLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudCBlbWl0dGVyIGZvciBjdXN0b20gcmVuZGVyZXIgZXZlbnRzLlxuICAgKiBAc3VtbWFyeSBFbWl0cyBjdXN0b20gZXZlbnRzIHRoYXQgb2NjdXIgd2l0aGluIGNoaWxkIGNvbXBvbmVudHMgb3IgdGhlIGxheW91dCBpdHNlbGYuXG4gICAqIFRoaXMgYWxsb3dzIHBhcmVudCBjb21wb25lbnRzIHRvIGxpc3RlbiBmb3IgYW5kIHJlc3BvbmQgdG8gdXNlciBpbnRlcmFjdGlvbnMgb3JcbiAgICogc3RhdGUgY2hhbmdlcyB3aXRoaW4gdGhlIGdyaWQgbGF5b3V0LiBFdmVudHMgYXJlIHBhc3NlZCB1cCB0aGUgY29tcG9uZW50IGhpZXJhcmNoeVxuICAgKiB0byBlbmFibGUgY29vcmRpbmF0ZWQgYmVoYXZpb3IgYWNyb3NzIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxSZW5kZXJlckN1c3RvbUV2ZW50Pn1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBsaXN0ZW5FdmVudDogRXZlbnRFbWl0dGVyPFJlbmRlcmVyQ3VzdG9tRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFJlbmRlcmVyQ3VzdG9tRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgdG8gdGhlIHJlbmRlcmluZyBlbmdpbmUgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBOZ3hSZW5kZXJpbmdFbmdpbmUgc2luZ2xldG9uIGluc3RhbmNlLFxuICAgKiB3aGljaCBoYW5kbGVzIHRoZSByZW5kZXJpbmcgb2YgY29tcG9uZW50cyBiYXNlZCBvbiBtb2RlbCBkZWZpbml0aW9ucy5cbiAgICogVGhpcyBlbmdpbmUgaXMgdXNlZCB0byBleHRyYWN0IGRlY29yYXRvciBtZXRhZGF0YSBhbmQgcmVuZGVyIGNoaWxkIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEB0eXBlIHtOZ3hSZW5kZXJpbmdFbmdpbmV9XG4gICAqL1xuICByZW5kZXJpbmdFbmdpbmU6IE5neFJlbmRlcmluZ0VuZ2luZSA9XG4gICAgTmd4UmVuZGVyaW5nRW5naW5lLmdldCgpIGFzIHVua25vd24gYXMgTmd4UmVuZGVyaW5nRW5naW5lO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTG9nZ2VyIGluc3RhbmNlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBQcm92aWRlcyBsb2dnaW5nIGNhcGFiaWxpdGllcyBmb3IgdGhlIGNvbXBvbmVudCwgYWxsb3dpbmcgZm9yIGNvbnNpc3RlbnRcbiAgICogYW5kIHN0cnVjdHVyZWQgbG9nZ2luZyBvZiBpbmZvcm1hdGlvbiwgd2FybmluZ3MsIGFuZCBlcnJvcnMuIFRoaXMgbG9nZ2VyIGlzIGluaXRpYWxpemVkXG4gICAqIGluIHRoZSBuZ09uSW5pdCBtZXRob2QgdXNpbmcgdGhlIGdldExvZ2dlciBmdW5jdGlvbiBmcm9tIHRoZSBGb3JBbmd1bGFyQ29tbW9uTW9kdWxlLlxuICAgKlxuICAgKiBUaGUgbG9nZ2VyIGlzIHVzZWQgdGhyb3VnaG91dCB0aGUgY29tcG9uZW50IHRvIHJlY29yZCBpbXBvcnRhbnQgZXZlbnRzLCBkZWJ1ZyBpbmZvcm1hdGlvbixcbiAgICogYW5kIHBvdGVudGlhbCBpc3N1ZXMuIEl0IGhlbHBzIGluIG1vbml0b3JpbmcgdGhlIGNvbXBvbmVudCdzIGJlaGF2aW9yLCB0cmFja2luZyB0aGUgZmxvd1xuICAgKiBvZiBvcGVyYXRpb25zLCBhbmQgZmFjaWxpdGF0aW5nIGVhc2llciBkZWJ1Z2dpbmcgYW5kIG1haW50ZW5hbmNlLlxuICAgKlxuICAgKiBAdHlwZSB7TG9nZ2VyfVxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgbG9nZ2VyITogTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBOZ3hCYXNlQ29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYmFzZSBjb21wb25lbnQgd2l0aCB0aGUgcHJvdmlkZWQgaW5zdGFuY2UgdG9rZW4uXG4gICAqIFRoaXMgY29uc3RydWN0b3Igc2V0cyB1cCB0aGUgZnVuZGFtZW50YWwgcHJvcGVydGllcyByZXF1aXJlZCBieSBhbGwgRGVjYWYgY29tcG9uZW50cyxcbiAgICogaW5jbHVkaW5nIHRoZSBjb21wb25lbnQgbmFtZSwgbG9jYWxlIHNldHRpbmdzLCBhbmQgbG9nZ2luZyBjYXBhYmlsaXRpZXMuIFRoZSBpbnN0YW5jZVxuICAgKiB0b2tlbiBpcyB1c2VkIGZvciBjb21wb25lbnQgaWRlbnRpZmljYXRpb24gYW5kIGxvY2FsZSBkZXJpdmF0aW9uLlxuICAgKlxuICAgKiBUaGUgY29uc3RydWN0b3IgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBpbml0aWFsaXphdGlvbiBzdGVwczpcbiAgICogMS4gU2V0cyB0aGUgY29tcG9uZW50TmFtZSBmcm9tIHRoZSBwcm92aWRlZCBpbnN0YW5jZSB0b2tlblxuICAgKiAyLiBEZXJpdmVzIHRoZSBjb21wb25lbnRMb2NhbGUgZnJvbSB0aGUgY2xhc3MgbmFtZSB1c2luZyB1dGlsaXR5IGZ1bmN0aW9uc1xuICAgKiAzLiBJbml0aWFsaXplcyB0aGUgbG9nZ2VyIGluc3RhbmNlIGZvciB0aGUgY29tcG9uZW50XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YW5jZSAtIFRoZSBjb21wb25lbnQgaW5zdGFuY2UgdG9rZW4gdXNlZCBmb3IgaWRlbnRpZmljYXRpb25cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBBbmd1bGFyXG4gICAqICAgcGFydGljaXBhbnQgQyBhcyBDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBCIGFzIE5neEJhc2VDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFV0aWxzXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMb2dnZXJcbiAgICpcbiAgICogICBBLT4+QzogbmV3IENvbXBvbmVudChpbnN0YW5jZSlcbiAgICogICBDLT4+Qjogc3VwZXIoaW5zdGFuY2UpXG4gICAqICAgQi0+PkI6IFNldCBjb21wb25lbnROYW1lID0gaW5zdGFuY2VcbiAgICogICBCLT4+VTogZ2V0TG9jYWxlQ29udGV4dChpbnN0YW5jZSlcbiAgICogICBVLS0+PkI6IFJldHVybiBkZXJpdmVkIGxvY2FsZVxuICAgKiAgIEItPj5COiBTZXQgY29tcG9uZW50TG9jYWxlXG4gICAqICAgQi0+Pkw6IGdldExvZ2dlcih0aGlzKVxuICAgKiAgIEwtLT4+QjogUmV0dXJuIGxvZ2dlciBpbnN0YW5jZVxuICAgKiAgIEItPj5COiBTZXQgbG9nZ2VyXG4gICAqXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3ByZWZlci1pbmplY3RcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2luc3RhbmNlVG9rZW4nKSBwcm90ZWN0ZWQgaW5zdGFuY2U6IHN0cmluZykge1xuICAgIHRoaXMuY29tcG9uZW50TmFtZSA9IGluc3RhbmNlO1xuICAgIHRoaXMuY29tcG9uZW50TG9jYWxlID0gZ2V0TG9jYWxlQ29udGV4dChpbnN0YW5jZSk7XG4gICAgdGhpcy5sb2dnZXIgPSBnZXRMb2dnZXIodGhpcyk7XG4gICAgdGhpcy5nZXRMb2NhbGUodGhpcy50cmFuc2xhdGFibGUpO1xuICAgIHRoaXMudWlkID0gZ2VuZXJhdGVSYW5kb21WYWx1ZSgxMik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHRlciBmb3IgdGhlIHJlcG9zaXRvcnkgaW5zdGFuY2UuXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgY29ubmVjdGlvbiB0byB0aGUgZGF0YSBsYXllciBmb3IgcmV0cmlldmluZyBhbmQgbWFuaXB1bGF0aW5nIGRhdGEuXG4gICAqIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIHRoZSBgX3JlcG9zaXRvcnlgIHByb3BlcnR5IGlmIGl0IGlzIG5vdCBhbHJlYWR5IHNldCwgZW5zdXJpbmdcbiAgICogdGhhdCBhIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUgcmVwb3NpdG9yeSBpcyB1c2VkIHRocm91Z2hvdXQgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogVGhlIHJlcG9zaXRvcnkgaXMgdXNlZCB0byBwZXJmb3JtIENSVUQgb3BlcmF0aW9ucyBvbiB0aGUgZGF0YSBtb2RlbCwgc3VjaCBhcyBmZXRjaGluZyBkYXRhLFxuICAgKiBjcmVhdGluZyBuZXcgaXRlbXMsIHVwZGF0aW5nIGV4aXN0aW5nIGl0ZW1zLCBhbmQgZGVsZXRpbmcgaXRlbXMuIEl0IGFsc28gcHJvdmlkZXMgbWV0aG9kc1xuICAgKiBmb3IgcXVlcnlpbmcgYW5kIGZpbHRlcmluZyBkYXRhIGJhc2VkIG9uIHNwZWNpZmljIGNyaXRlcmlhLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RGVjYWZSZXBvc2l0b3J5PE1vZGVsPn0gVGhlIGluaXRpYWxpemVkIHJlcG9zaXRvcnkgaW5zdGFuY2UuXG4gICAqIEBwcml2YXRlXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHJlcG9zaXRvcnkoKTogRGVjYWZSZXBvc2l0b3J5PE1vZGVsPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5fcmVwb3NpdG9yeSkge1xuICAgICAgICBjb25zdCBtb2RlbE5hbWUgPSAodGhpcy5tb2RlbCBhcyBNb2RlbCkuY29uc3RydWN0b3IubmFtZTtcbiAgICAgICAgY29uc3QgY29uc3RydWN0b3IgPSBNb2RlbC5nZXQobW9kZWxOYW1lKTtcbiAgICAgICAgaWYgKCFjb25zdHJ1Y3RvcilcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICdDYW5ub3QgZmluZCBtb2RlbC4gd2FzIGl0IHJlZ2lzdGVyZWQgd2l0aCBAbW9kZWw/J1xuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuX3JlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZvck1vZGVsKGNvbnN0cnVjdG9yKTtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG5ldyBjb25zdHJ1Y3RvcigpIGFzIE1vZGVsO1xuICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiAhdGhpcy5waylcbiAgICAgICAgICB0aGlzLnBrID1cbiAgICAgICAgICAgICh0aGlzLl9yZXBvc2l0b3J5IGFzIHVua25vd24gYXMgRGVjYWZSZXBvc2l0b3J5PE1vZGVsPikucGsgfHwgJ2lkJztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKGVycm9yIGFzIEVycm9yKT8ubWVzc2FnZSB8fCAoZXJyb3IgYXMgc3RyaW5nKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZXBvc2l0b3J5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVzIGNoYW5nZXMgdG8gY29tcG9uZW50IGlucHV0c1xuICAgKiBAc3VtbWFyeSBUaGlzIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgaXMgY2FsbGVkIHdoZW4gaW5wdXQgcHJvcGVydGllcyBjaGFuZ2UuXG4gICAqIEl0IHJlc3BvbmRzIHRvIGNoYW5nZXMgaW4gdGhlIG1vZGVsLCBsb2NhbGUsIG9yIHRyYW5zbGF0YWJsZSBwcm9wZXJ0aWVzIGJ5XG4gICAqIHVwZGF0aW5nIHRoZSBjb21wb25lbnQncyBpbnRlcm5hbCBzdGF0ZSBhY2NvcmRpbmdseS4gV2hlbiB0aGUgbW9kZWwgY2hhbmdlcyxcbiAgICogaXQgY2FsbHMgZ2V0TW9kZWwgdG8gcHJvY2VzcyB0aGUgbmV3IG1vZGVsIGFuZCBnZXRMb2NhbGUgdG8gdXBkYXRlIHRoZSBsb2NhbGUuXG4gICAqIFdoZW4gbG9jYWxlIG9yIHRyYW5zbGF0YWJsZSBwcm9wZXJ0aWVzIGNoYW5nZSwgaXQgY2FsbHMgZ2V0TG9jYWxlIHRvIHVwZGF0ZVxuICAgKiB0aGUgdHJhbnNsYXRpb24gc2V0dGluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7U2ltcGxlQ2hhbmdlc30gY2hhbmdlcyAtIE9iamVjdCBjb250YWluaW5nIGNoYW5nZWQgcHJvcGVydGllc1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW0Jhc2VDb21wb25lbnRQcm9wcy5NT0RFTF0pIHtcbiAgICAgIGNvbnN0IHsgY3VycmVudFZhbHVlIH0gPSBjaGFuZ2VzW0Jhc2VDb21wb25lbnRQcm9wcy5NT0RFTF07XG4gICAgICBpZiAoY3VycmVudFZhbHVlKSB0aGlzLmdldE1vZGVsKGN1cnJlbnRWYWx1ZSk7XG4gICAgICB0aGlzLmdldExvY2FsZSh0aGlzLnRyYW5zbGF0YWJsZSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbQmFzZUNvbXBvbmVudFByb3BzLklOSVRJQUxJWkVEXSB8fFxuICAgICAgY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuTE9DQUxFXSB8fFxuICAgICAgY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuVFJBTlNMQVRBQkxFXVxuICAgIClcbiAgICAgIHRoaXMuZ2V0TG9jYWxlKHRoaXMudHJhbnNsYXRhYmxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgYXBwcm9wcmlhdGUgbG9jYWxlIHN0cmluZyBiYXNlZCBvbiB0aGUgdHJhbnNsYXRhYmxlIGZsYWcgYW5kIGF2YWlsYWJsZSBsb2NhbGVzLlxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIHdoaWNoIGxvY2FsZSBzdHJpbmcgdG8gdXNlIGZvciB0cmFuc2xhdGlvbiBiYXNlZCBvbiB0aGUgdHJhbnNsYXRhYmxlIGZsYWdcbiAgICogYW5kIGF2YWlsYWJsZSBsb2NhbGUgc2V0dGluZ3MuIFRoaXMgbWV0aG9kIGZpcnN0IGNvbnZlcnRzIHRoZSB0cmFuc2xhdGFibGUgcGFyYW1ldGVyIHRvIGEgYm9vbGVhblxuICAgKiB1c2luZyB0aGUgc3RyaW5nVG9Cb29sZWFuIHV0aWxpdHkgZnVuY3Rpb24uIElmIHRyYW5zbGF0YWJsZSBpcyBmYWxzZSwgaXQgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcsXG4gICAqIGluZGljYXRpbmcgbm8gdHJhbnNsYXRpb24gc2hvdWxkIGJlIHBlcmZvcm1lZC4gSWYgdHJhbnNsYXRhYmxlIGlzIHRydWUsIGl0IGNoZWNrcyBmb3IgYW4gZXhwbGljaXRseVxuICAgKiBwcm92aWRlZCBsb2NhbGUgdmlhIHRoZSBsb2NhbGUgcHJvcGVydHkuIElmIG5vIGV4cGxpY2l0IGxvY2FsZSBpcyBhdmFpbGFibGUsIGl0IGZhbGxzIGJhY2sgdG8gdGhlXG4gICAqIGNvbXBvbmVudExvY2FsZSBkZXJpdmVkIGZyb20gdGhlIGNvbXBvbmVudCdzIGNsYXNzIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nT3JCb29sZWFufSB0cmFuc2xhdGFibGUgLSBXaGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHRyYW5zbGF0ZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbG9jYWxlIHN0cmluZyB0byB1c2UgZm9yIHRyYW5zbGF0aW9uLCBvciBlbXB0eSBzdHJpbmcgaWYgbm90IHRyYW5zbGF0YWJsZVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDIGFzIENvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IE4gYXMgTmd4QmFzZUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFMgYXMgU3RyaW5nVXRpbHNcbiAgICpcbiAgICogICBDLT4+TjogZ2V0TG9jYWxlKHRyYW5zbGF0YWJsZSlcbiAgICogICBOLT4+Uzogc3RyaW5nVG9Cb29sZWFuKHRyYW5zbGF0YWJsZSlcbiAgICogICBTLS0+Pk46IFJldHVybiBib29sZWFuIHZhbHVlXG4gICAqICAgTi0+Pk46IFN0b3JlIGluIHRoaXMudHJhbnNsYXRhYmxlXG4gICAqICAgYWx0IHRyYW5zbGF0YWJsZSBpcyBmYWxzZVxuICAgKiAgICAgTi0tPj5DOiBSZXR1cm4gZW1wdHkgc3RyaW5nXG4gICAqICAgZWxzZSB0cmFuc2xhdGFibGUgaXMgdHJ1ZVxuICAgKiAgICAgYWx0IHRoaXMubG9jYWxlIGlzIGRlZmluZWRcbiAgICogICAgICAgTi0tPj5DOiBSZXR1cm4gdGhpcy5sb2NhbGVcbiAgICogICAgIGVsc2UgdGhpcy5sb2NhbGUgaXMgbm90IGRlZmluZWRcbiAgICogICAgICAgTi0tPj5DOiBSZXR1cm4gdGhpcy5jb21wb25lbnRMb2NhbGVcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKi9cbiAgZ2V0TG9jYWxlKHRyYW5zbGF0YWJsZTogU3RyaW5nT3JCb29sZWFuKTogc3RyaW5nIHtcbiAgICB0aGlzLnRyYW5zbGF0YWJsZSA9IHN0cmluZ1RvQm9vbGVhbih0cmFuc2xhdGFibGUpO1xuICAgIGlmICghdGhpcy50cmFuc2xhdGFibGUpIHJldHVybiAnJztcbiAgICBpZiAoIXRoaXMubG9jYWxlKSB0aGlzLmxvY2FsZSA9IHRoaXMuY29tcG9uZW50TG9jYWxlO1xuICAgIHJldHVybiB0aGlzLmxvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgcm91dGUgZm9yIHRoZSBjb21wb25lbnRcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSByb3V0ZSBwYXRoIGZvciB0aGUgY29tcG9uZW50LCBnZW5lcmF0aW5nIG9uZSBiYXNlZCBvbiB0aGUgbW9kZWxcbiAgICogaWYgbm8gcm91dGUgaXMgZXhwbGljaXRseSBzZXQuIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiBhIHJvdXRlIGlzIGFscmVhZHkgZGVmaW5lZCwgYW5kIGlmIG5vdCxcbiAgICogaXQgY3JlYXRlcyBhIGRlZmF1bHQgcm91dGUgYmFzZWQgb24gdGhlIG1vZGVsJ3MgY29uc3RydWN0b3IgbmFtZS4gVGhlIGdlbmVyYXRlZCByb3V0ZSBmb2xsb3dzXG4gICAqIHRoZSBwYXR0ZXJuICcvbW9kZWwve01vZGVsTmFtZX0nLiBUaGlzIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGljIHJvdXRpbmcgaW4gQ1JVRCBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSByb3V0ZSBwYXRoIGZvciB0aGUgY29tcG9uZW50LCBvciBlbXB0eSBzdHJpbmcgaWYgbm8gcm91dGUgaXMgYXZhaWxhYmxlXG4gICAqL1xuICBnZXRSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yb3V0ZSAmJiB0aGlzLm1vZGVsIGluc3RhbmNlb2YgTW9kZWwpXG4gICAgICB0aGlzLnJvdXRlID0gYC9tb2RlbC8ke3RoaXMubW9kZWw/LmNvbnN0cnVjdG9yLm5hbWV9YDtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZSB8fCAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzb2x2ZXMgYW5kIHNldHMgdGhlIGNvbXBvbmVudCdzIG1vZGVsXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyB0aGUgcHJvdmlkZWQgbW9kZWwgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgTW9kZWwgaW5zdGFuY2VcbiAgICogb3IgYSBzdHJpbmcgaWRlbnRpZmllci4gSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IGF0dGVtcHRzIHRvIHJlc29sdmUgdGhlIGFjdHVhbCBtb2RlbFxuICAgKiBmcm9tIHRoZSBpbmplY3RhYmxlcyByZWdpc3RyeS4gQWZ0ZXIgcmVzb2x2aW5nIHRoZSBtb2RlbCwgaXQgY2FsbHMgc2V0TW9kZWxEZWZpbml0aW9uc1xuICAgKiB0byBjb25maWd1cmUgdGhlIGNvbXBvbmVudCBiYXNlZCBvbiB0aGUgbW9kZWwncyBtZXRhZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBNb2RlbH0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugb3IgaWRlbnRpZmllciBzdHJpbmdcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIGdldE1vZGVsKG1vZGVsOiBzdHJpbmcgfCBNb2RlbCk6IHZvaWQge1xuICAgIGlmICghKG1vZGVsIGluc3RhbmNlb2YgTW9kZWwpKVxuICAgICAgdGhpcy5tb2RlbCA9IGdldEluamVjdGFibGVzUmVnaXN0cnkoKS5nZXQobW9kZWwpIGFzIE1vZGVsO1xuICAgIHRoaXMuc2V0TW9kZWxEZWZpbml0aW9ucyh0aGlzLm1vZGVsIGFzIE1vZGVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyBjb21wb25lbnQgcHJvcGVydGllcyBiYXNlZCBvbiBtb2RlbCBtZXRhZGF0YVxuICAgKiBAc3VtbWFyeSBFeHRyYWN0cyBhbmQgYXBwbGllcyBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1vZGVsJ3MgZGVjb3JhdG9ycyB0byBzZXQgdXBcbiAgICogdGhlIGNvbXBvbmVudC4gVGhpcyBtZXRob2QgdXNlcyB0aGUgcmVuZGVyaW5nIGVuZ2luZSB0byByZXRyaWV2ZSBkZWNvcmF0b3IgbWV0YWRhdGFcbiAgICogZnJvbSB0aGUgbW9kZWwsIHRoZW4gY29uZmlndXJlcyB0aGUgY29tcG9uZW50J3MgbWFwcGVyIGFuZCBpdGVtIHByb3BlcnRpZXMgYWNjb3JkaW5nbHkuXG4gICAqIEl0IGVuc3VyZXMgdGhlIHJvdXRlIGlzIHByb3Blcmx5IHNldCBhbmQgbWVyZ2VzIHZhcmlvdXMgcHJvcGVydGllcyBmcm9tIHRoZSBtb2RlbCdzXG4gICAqIG1ldGFkYXRhIGludG8gdGhlIGNvbXBvbmVudCdzIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsIC0gVGhlIG1vZGVsIHRvIGV4dHJhY3QgY29uZmlndXJhdGlvbiBmcm9tXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBzZXRNb2RlbERlZmluaXRpb25zKG1vZGVsOiBNb2RlbCk6IHZvaWQge1xuICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIE1vZGVsKSB7XG4gICAgICB0aGlzLmdldFJvdXRlKCk7XG4gICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMucmVuZGVyaW5nRW5naW5lLmdldERlY29yYXRvcnModGhpcy5tb2RlbCBhcyBNb2RlbCwge30pO1xuICAgICAgY29uc3QgeyBwcm9wcywgaXRlbSwgY2hpbGRyZW4gfSA9IGZpZWxkO1xuICAgICAgdGhpcy5wcm9wcyA9IE9iamVjdC5hc3NpZ24ocHJvcHMgfHwge30sIHsgY2hpbGRyZW46IGNoaWxkcmVuIHx8IFtdIH0pO1xuICAgICAgaWYgKGl0ZW0/LnByb3BzPy5bJ21hcHBlciddKSB0aGlzLm1hcHBlciA9IGl0ZW0/LnByb3BzIVsnbWFwcGVyJ10gfHwge307XG4gICAgICB0aGlzLml0ZW0gPSB7XG4gICAgICAgIHRhZzogaXRlbT8udGFnIHx8ICcnLFxuICAgICAgICAuLi5pdGVtPy5wcm9wcyxcbiAgICAgICAgLi4uKHRoaXMubWFwcGVyID8geyBtYXBwZXI6IHRoaXMubWFwcGVyIH0gOiB7fSksXG4gICAgICAgIC4uLnsgcm91dGU6IGl0ZW0/LnByb3BzPy5bJ3JvdXRlJ10gfHwgdGhpcy5yb3V0ZSB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnRcbiAgICogQHN1bW1hcnkgUGVyZm9ybXMgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNvbXBvbmVudC4gVGhpcyBtZXRob2QgY2hlY2tzIGlmXG4gICAqIHRoZSBjb21wb25lbnQgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCB0byBwcmV2ZW50IGR1cGxpY2F0ZSBpbml0aWFsaXphdGlvbi5cbiAgICogV2hlbiBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBpdCBzZXRzIHRoZSBpbml0aWFsaXplZCBmbGFnIHRvIHRydWUgYW5kIGxvZ3NcbiAgICogYW4gaW5pdGlhbGl6YXRpb24gbWVzc2FnZSB3aXRoIHRoZSBjb21wb25lbnQgbmFtZS4gVGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IGNhbGxlZFxuICAgKiBkdXJpbmcgdGhlIGNvbXBvbmVudCdzIGxpZmVjeWNsZSBzZXR1cC5cbiAgICovXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXMgY3VzdG9tIGV2ZW50cyBmcm9tIGNoaWxkIGNvbXBvbmVudHMuXG4gICAqIEBzdW1tYXJ5IFJlY2VpdmVzIGV2ZW50cyBmcm9tIGNoaWxkIHJlbmRlcmVyIGNvbXBvbmVudHMgYW5kIGZvcndhcmRzIHRoZW0gdG8gcGFyZW50XG4gICAqIGNvbXBvbmVudHMgdGhyb3VnaCB0aGUgbGlzdGVuRXZlbnQgb3V0cHV0LiBUaGlzIGNyZWF0ZXMgYW4gZXZlbnQgcHJvcGFnYXRpb24gY2hhaW5cbiAgICogdGhhdCBhbGxvd3MgZXZlbnRzIHRvIGJ1YmJsZSB1cCB0aHJvdWdoIHRoZSBjb21wb25lbnQgaGllcmFyY2h5LCBlbmFibGluZyBjb29yZGluYXRlZFxuICAgKiByZXNwb25zZXMgdG8gdXNlciBpbnRlcmFjdGlvbnMgYWNyb3NzIHRoZSBsYXlvdXQgc3RydWN0dXJlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlbmRlcmVyQ3VzdG9tRXZlbnR9IGV2ZW50IC0gVGhlIGN1c3RvbSBldmVudCBmcm9tIGEgY2hpbGQgY29tcG9uZW50XG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEMgYXMgQ2hpbGQgQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBOZ3hCYXNlQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQYXJlbnQgQ29tcG9uZW50XG4gICAqXG4gICAqICAgQy0+Pkw6IEVtaXQgUmVuZGVyZXJDdXN0b21FdmVudFxuICAgKiAgIEwtPj5MOiBoYW5kbGVFdmVudChldmVudClcbiAgICogICBMLT4+UDogbGlzdGVuRXZlbnQuZW1pdChldmVudClcbiAgICogICBOb3RlIG92ZXIgUDogSGFuZGxlIGV2ZW50IGluIHBhcmVudFxuICAgKlxuICAgKiBAbWVtYmVyT2YgTmd4QmFzZUNvbXBvbmVudFxuICAgKi9cbiAgaGFuZGxlRXZlbnQoZXZlbnQ6IFJlbmRlcmVyQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUcmFja3MgaXRlbXMgaW4gbmdGb3IgbG9vcHMgZm9yIG9wdGltYWwgY2hhbmdlIGRldGVjdGlvbi5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYSB0cmFja2luZyBmdW5jdGlvbiBmb3IgQW5ndWxhcidzICpuZ0ZvciBkaXJlY3RpdmUgdG8gb3B0aW1pemUgcmVuZGVyaW5nXG4gICAqIHBlcmZvcm1hbmNlLiBUaGlzIG1ldGhvZCBnZW5lcmF0ZXMgdW5pcXVlIGlkZW50aWZpZXJzIGZvciBsaXN0IGl0ZW1zIGJhc2VkIG9uIHRoZWlyIGluZGV4XG4gICAqIGFuZCBjb250ZW50LCBhbGxvd2luZyBBbmd1bGFyIHRvIGVmZmljaWVudGx5IHRyYWNrIGNoYW5nZXMgYW5kIG1pbmltaXplIERPTSBtYW5pcHVsYXRpb25zXG4gICAqIGR1cmluZyBsaXN0IHVwZGF0ZXMuIFRoZSB0cmFja2luZyBmdW5jdGlvbiBpcyBlc3NlbnRpYWwgZm9yIG1haW50YWluaW5nIGNvbXBvbmVudCBzdGF0ZVxuICAgKiBhbmQgcHJldmVudGluZyB1bm5lY2Vzc2FyeSByZS1yZW5kZXJpbmcgb2YgdW5jaGFuZ2VkIGl0ZW1zLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gdGhlIGxpc3RcbiAgICogQHBhcmFtIHtLZXlWYWx1ZSB8IHN0cmluZyB8IG51bWJlcn0gaXRlbSAtIFRoZSBpdGVtIGRhdGEgdG8gdHJhY2tcbiAgICogQHJldHVybnMge3N0cmluZyB8IG51bWJlcn0gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGl0ZW1cbiAgICogQG1lbWJlck9mIE5neEJhc2VDb21wb25lbnRcbiAgICovXG4gIHRyYWNrSXRlbUZuKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgaXRlbTogS2V5VmFsdWUgfCBzdHJpbmcgfCBudW1iZXJcbiAgKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gYCR7aW5kZXh9LSR7aXRlbX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYW5kIGFwcGxpZXMgcHJvcGVydGllcyBmcm9tIHRoZSBwcm9wcyBvYmplY3QgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgcHJvcGVydGllcyBvZiB0aGUgcHJvdmlkZWQgaW5zdGFuY2Ugb2JqZWN0XG4gICAqIGFuZCBhcHBsaWVzIGFueSBtYXRjaGluZyBwcm9wZXJ0aWVzIGZyb20gdGhlIGNvbXBvbmVudCdzIHByb3BzIGNvbmZpZ3VyYXRpb24gdG8gdGhlXG4gICAqIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBhbGxvd3MgZm9yIGR5bmFtaWMgcHJvcGVydHkgYXNzaWdubWVudCBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAqIHN0b3JlZCBpbiB0aGUgcHJvcHMgb2JqZWN0LCBlbmFibGluZyBmbGV4aWJsZSBjb21wb25lbnQgY3VzdG9taXphdGlvbiB3aXRob3V0IHJlcXVpcmluZ1xuICAgKiBleHBsaWNpdCBwcm9wZXJ0eSBiaW5kaW5nIGZvciBldmVyeSBwb3NzaWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbi5cbiAgICpcbiAgICogVGhlIG1ldGhvZCBwZXJmb3JtcyBhIHNhZmUgcHJvcGVydHkgYXNzaWdubWVudCBieSBjaGVja2luZyBpZiBlYWNoIGtleSBmcm9tIHRoZSBpbnN0YW5jZVxuICAgKiBleGlzdHMgaW4gdGhlIHByb3BzIG9iamVjdCBiZWZvcmUgYXBwbHlpbmcgaXQuIFRoaXMgcHJldmVudHMgYWNjaWRlbnRhbCBwcm9wZXJ0eVxuICAgKiBvdmVyd3JpdGluZyBhbmQgZW5zdXJlcyBvbmx5IGludGVuZGVkIHByb3BlcnRpZXMgYXJlIG1vZGlmaWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVZhbHVlfSBpbnN0YW5jZSAtIFRoZSBjb21wb25lbnQgaW5zdGFuY2Ugb2JqZWN0IHRvIHByb2Nlc3NcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQyBhcyBDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBCIGFzIE5neEJhc2VDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFByb3BzIE9iamVjdFxuICAgKlxuICAgKiAgIEMtPj5COiBwYXJzZVByb3BzKGluc3RhbmNlKVxuICAgKiAgIEItPj5COiBHZXQgT2JqZWN0LmtleXMoaW5zdGFuY2UpXG4gICAqICAgbG9vcCBGb3IgZWFjaCBrZXkgaW4gaW5zdGFuY2VcbiAgICogICAgIEItPj5QOiBDaGVjayBpZiBrZXkgZXhpc3RzIGluIHRoaXMucHJvcHNcbiAgICogICAgIGFsdCBLZXkgZXhpc3RzIGluIHByb3BzXG4gICAqICAgICAgIEItPj5COiBTZXQgdGhpc1trZXldID0gdGhpcy5wcm9wc1trZXldXG4gICAqICAgICBlbHNlIEtleSBub3QgaW4gcHJvcHNcbiAgICogICAgICAgTm90ZSBvdmVyIEI6IFNraXAgdGhpcyBrZXlcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBtZW1iZXJPZiBOZ3hCYXNlQ29tcG9uZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VQcm9wcyhpbnN0YW5jZTogS2V5VmFsdWUpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhpbnN0YW5jZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5wcm9wcykuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgKHRoaXMgYXMgS2V5VmFsdWUpW2tleV0gPSB0aGlzLnByb3BzW2tleV07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -162,4 +162,9 @@ export var BaseComponentProps;
162
162
  BaseComponentProps["MAPPER"] = "mapper";
163
163
  BaseComponentProps["INITIALIZED"] = "initialized";
164
164
  })(BaseComponentProps || (BaseComponentProps = {}));
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLFdBQVc7SUFDckMsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLGFBQWE7SUFDekIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixNQUFNLEVBQUUsU0FBUztJQUNqQixxQkFBcUIsRUFBRSxxQkFBcUI7SUFDNUMsMEJBQTBCLEVBQUUsZ0JBQWdCO0NBQzdDLENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztDQUNuQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsc0JBQXNCLEVBQUUsOEJBQThCO0lBQ3RELE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLEtBQUssRUFBRSxZQUFZO0lBQ25CLE1BQU0sRUFBRSxhQUFhO0lBQ3JCLGdCQUFnQixFQUFFLHNCQUFzQjtJQUN4QyxrQkFBa0IsRUFBRSx1QkFBdUI7SUFDM0MscUJBQXFCLEVBQUUsMEJBQTBCO0lBQ2pELHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCw0REFBNEQ7Q0FDN0QsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQU4sSUFBWSxZQU9YO0FBUEQsV0FBWSxZQUFZO0lBQ3RCLDZDQUFPLENBQUE7SUFDUCxpREFBUyxDQUFBO0lBQ1QsK0NBQVEsQ0FBQTtJQUNSLCtDQUFRLENBQUE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtBQUNkLENBQUMsRUFQVyxZQUFZLEtBQVosWUFBWSxRQU92QjtBQUFBLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUFJWDtBQUpELFdBQVksZUFBZTtJQUN6QixnQ0FBYSxDQUFBO0lBQ2Isc0NBQW1CLENBQUE7SUFDbkIsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUdEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzVCLHVEQUFpQyxDQUFBO0lBQ2pDLCtEQUF5QyxDQUFBO0lBQ3pDLGlFQUEyQyxDQUFBO0FBQzdDLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBV1g7QUFYRCxXQUFZLGtCQUFrQjtJQUM1QixxQ0FBZSxDQUFBO0lBQ2YsdUNBQWlCLENBQUE7SUFDakIsK0JBQVMsQ0FBQTtJQUNULHFDQUFlLENBQUE7SUFDZixxQ0FBZSxDQUFBO0lBQ2YsK0NBQXlCLENBQUE7SUFDekIsaUNBQVcsQ0FBQTtJQUNYLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0lBQ2pCLGlEQUEyQixDQUFBO0FBQzdCLENBQUMsRUFYVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBVzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVUlLZXlzIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgVkFMSURBVElPTl9QQVJFTlRfS0VZIH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQW5ndWxhciBlbmdpbmUga2V5IGNvbnN0YW50c1xuICogQHN1bW1hcnkgQ29udGFpbnMga2V5IHN0cmluZ3MgdXNlZCBieSB0aGUgQW5ndWxhciByZW5kZXJpbmcgZW5naW5lIGZvciByZWZsZWN0aW9uLFxuICogZHluYW1pYyBjb21wb25lbnQgY3JlYXRpb24sIGFuZCBvdGhlciBlbmdpbmUgb3BlcmF0aW9ucy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFuZ3VsYXJFbmdpbmVLZXlzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGTEVDVCAtIFByZWZpeCBmb3IgcmVmbGVjdGlvbiBtZXRhZGF0YSBrZXlzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRFlOQU1JQyAtIEtleSBmb3IgZHluYW1pYyBjb21wb25lbnQgaWRlbnRpZmljYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBBTk5PVEFUSU9OUyAtIEtleSBmb3IgY29tcG9uZW50IGFubm90YXRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRUNNUCAtIEtleSBmb3IgZW1iZWRkZWQgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IE5HX1JFRkxFQ1QgLSBQcmVmaXggZm9yIEFuZ3VsYXIgcmVmbGVjdGlvbiBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVOREVSRUQgLSBQcmVmaXggZm9yIHJlbmRlcmVkIGNvbXBvbmVudCBtYXJrZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUFQUEVSIC0gS2V5IGZvciBwcm9wZXJ0eSBtYXBwZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ0hJTERSRU4gLSBLZXkgZm9yIGNoaWxkIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUQUJMRSAtIEtleSBmb3IgbGlzdGFibGUgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFTkRFUiAtIEtleSBmb3IgcmVuZGVyYWJsZSBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVOREVSRURfSUQgLSBUZW1wbGF0ZSBmb3IgcmVuZGVyZWQgY29tcG9uZW50IElEc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBUkVOVCAtIEtleSBmb3IgY29tcGFyaXNvbiBkZWNvcmF0b3JzIGFuZCB2YWxpZGF0b3JzXG4gKiBAY29uc3QgQW5ndWxhckVuZ2luZUtleXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBBbmd1bGFyRW5naW5lS2V5cyA9IHtcbiAgUkVGTEVDVDogYCR7VUlLZXlzLlJFRkxFQ1R9LmFuZ3VsYXIuYCxcbiAgRFlOQU1JQzogJ2R5bmFtaWMtY29tcG9uZW50JyxcbiAgQU5OT1RBVElPTlM6ICdfX2Fubm90YXRpb25zX18nLFxuICBFQ01QOiAnZWNtcCcsXG4gIE5HX1JFRkxFQ1Q6ICduZy1yZWZsZWN0LScsXG4gIFJFTkRFUkVEOiAncmVuZGVyZWQtYXMtJyxcbiAgTUFQUEVSOiAnbWFwcGVyJyxcbiAgQ0hJTERSRU46ICdjaGlsZHJlbicsXG4gIExJU1RBQkxFOiAnbGlzdGFibGUnLFxuICBSRU5ERVI6ICdyZW5kZXInLFxuICBSRU5ERVJFRF9JRDogJ3JlbmRlcmVkLWFzLXswfScsXG4gIFBBUkVOVDogJ19wYXJlbnQnLFxuICBWQUxJREFUSU9OX1BBUkVOVF9LRVk6IFZBTElEQVRJT05fUEFSRU5UX0tFWSxcbiAgRk9STV9HUk9VUF9DT01QT05FTlRfUFJPUFM6ICdjb21wb25lbnRQcm9wcydcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdGlvbiBzdGF0ZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IENvbnRhaW5zIGNvbnN0YW50cyByZXByZXNlbnRpbmcgdGhlIHBvc3NpYmxlIHZhbGlkYXRpb24gc3RhdGVzIG9mIGEgZm9ybS5cbiAqIFRoZXNlIGFyZSB1c2VkIHRvIGNoZWNrIGFuZCBoYW5kbGUgZm9ybSB2YWxpZGF0aW9uIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICogQHR5cGVkZWYge09iamVjdH0gRm9ybUNvbnN0YW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFZBTElEIC0gQ29uc3RhbnQgcmVwcmVzZW50aW5nIGEgdmFsaWQgZm9ybSBzdGF0ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IElOVkFMSUQgLSBDb25zdGFudCByZXByZXNlbnRpbmcgYW4gaW52YWxpZCBmb3JtIHN0YXRlXG4gKiBAY29uc3QgRm9ybUNvbnN0YW50c1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGNvbnN0IEZvcm1Db25zdGFudHMgPSB7XG4gIFZBTElEOiAnVkFMSUQnLFxuICBJTlZBTElEOiAnSU5WQUxJRCcsXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFdmVudCBuYW1lIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBjb250YWluaW5nIGNvbnN0YW50cyBmb3IgZXZlbnQgbmFtZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZXNlIGFyZSB1c2VkIHRvIHN0YW5kYXJkaXplIGV2ZW50IG5hbWluZyBhbmQgaGFuZGxpbmcuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gQkFDS19CVVRUT05fTkFWSUdBVElPTiAtIEV2ZW50IGZpcmVkIHdoZW4gYmFjayBidXR0b24gbmF2aWdhdGlvbiBlbmRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGUkVTSF9FVkVOVCAtIEV2ZW50IGZpcmVkIHdoZW4gYSByZWZyZXNoIGFjdGlvbiBvY2N1cnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBDTElDS19FVkVOVCAtIEV2ZW50IGZpcmVkIHdoZW4gYSBjbGljayBhY3Rpb24gb2NjdXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU1VCTUlUX0VWRU5UIC0gRXZlbnQgZmlyZWQgd2hlbiBhIGZvcm0gc3VibWlzc2lvbiBvY2N1cnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBFdmVudENvbnN0YW50cyA9IHtcbiAgQkFDS19CVVRUT05fTkFWSUdBVElPTjogJ2JhY2tCdXR0b25OYXZpZ2F0aW9uRW5kRXZlbnQnLFxuICBSRUZSRVNIOiAnUmVmcmVzaEV2ZW50JyxcbiAgQ0xJQ0s6ICdDbGlja0V2ZW50JyxcbiAgU1VCTUlUOiAnU3VibWl0RXZlbnQnLFxuICBWQUxJREFUSU9OX0VSUk9SOiAndmFsaWRhdGlvbkVycm9yRXZlbnQnLFxuICBGSUVMRFNFVF9BRERfR1JPVVA6ICdmaWVsZHNldEFkZEdyb3VwRXZlbnQnLFxuICBGSUVMRFNFVF9VUERBVEVfR1JPVVA6ICdmaWVsZHNldFVwZGF0ZUdyb3VwRXZlbnQnLFxuICBGSUVMRFNFVF9SRU1PVkVfR1JPVVA6ICdmaWVsZHNldFJlbW92ZUdyb3VwRXZlbnQnLFxuICAvLyBGSUVMRFNFVF9HUk9VUF9WQUxJREFUSU9OOiAnZmllbGRzZXRHcm91cFZhbGlkYXRpb25FdmVudCdcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTG9nZ2VyIGxldmVsIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgbG9nZ2luZyBsZXZlbHMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBsb2dnaW5nIHN5c3RlbS5cbiAqIExvd2VyIHZhbHVlcyByZXByZXNlbnQgbW9yZSB2ZXJib3NlIGxvZ2dpbmcsIHdoaWxlIGhpZ2hlciB2YWx1ZXMgcmVwcmVzZW50IG1vcmUgY3JpdGljYWwgbG9ncy5cbiAqIEBlbnVtIHtudW1iZXJ9XG4gKiBAcmVhZG9ubHlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBBTEwgLSBMb2cgZXZlcnl0aGluZyAobW9zdCB2ZXJib3NlKVxuICogQHByb3BlcnR5IHtudW1iZXJ9IERFQlVHIC0gTG9nIGRlYnVnIGluZm9ybWF0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gSU5GTyAtIExvZyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzXG4gKiBAcHJvcGVydHkge251bWJlcn0gV0FSTiAtIExvZyB3YXJuaW5nc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IEVSUk9SIC0gTG9nIGVycm9yc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IENSSVRJQ0FMIC0gTG9nIGNyaXRpY2FsIGVycm9ycyAobGVhc3QgdmVyYm9zZSlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIExvZ2dlckxldmVscyB7XG4gIEFMTCA9IDAsXG4gIERFQlVHID0gMSxcbiAgSU5GTyA9IDIsXG4gIFdBUk4gPSAzLFxuICBFUlJPUiA9IDQsXG4gIENSSVRJQ0FMID0gNVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUm91dGUgZGlyZWN0aW9uIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgcG9zc2libGUgbmF2aWdhdGlvbiBkaXJlY3Rpb25zIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFVzZWQgZm9yIGNvbnRyb2xsaW5nIG5hdmlnYXRpb24gZmxvdyBhbmQgYW5pbWF0aW9uIGRpcmVjdGlvbnMuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gQkFDSyAtIE5hdmlnYXRlIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBGT1JXQVJEIC0gTmF2aWdhdGUgZm9yd2FyZCB0byB0aGUgbmV4dCBwYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUk9PVCAtIE5hdmlnYXRlIHRvIHRoZSByb290L2hvbWUgcGFnZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGVudW0gUm91dGVEaXJlY3Rpb25zIHtcbiAgQkFDSyA9ICdiYWNrJyxcbiAgRk9SV0FSRCA9ICdmb3J3YXJkJyxcbiAgUk9PVCA9ICdyb290Jyxcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnQgdGFnIG5hbWUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBFbnVtIGRlZmluaW5nIHRoZSB0YWcgbmFtZXMgZm9yIGN1c3RvbSBjb21wb25lbnRzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogVGhlc2UgdGFnIG5hbWVzIGFyZSB1c2VkIGZvciBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFuZCByZW5kZXJpbmcuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVF9JVEVNIC0gVGFnIG5hbWUgZm9yIGxpc3QgaXRlbSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUX0lORklOSVRFIC0gVGFnIG5hbWUgZm9yIGluZmluaXRlIHNjcm9sbGluZyBsaXN0IGNvbXBvbmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfUEFHSU5BVEVEIC0gVGFnIG5hbWUgZm9yIHBhZ2luYXRlZCBsaXN0IGNvbXBvbmVudFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGVudW0gQ29tcG9uZW50c1RhZ05hbWVzIHtcbiAgTElTVF9JVEVNID0gJ25neC1kZWNhZi1saXN0LWl0ZW0nLFxuICBMSVNUX0lORklOSVRFID0gJ25neC1kZWNhZi1saXN0LWluZmluaXRlJyxcbiAgTElTVF9QQUdJTkFURUQgPSAnbmd4LWRlY2FmLWxpc3QtcGFnaW5hdGVkJyxcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjb21wb25lbnQgcHJvcGVydHkgbmFtZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIHN0YW5kYXJkIHByb3BlcnR5IG5hbWVzIHVzZWQgYnkgYmFzZSBjb21wb25lbnRzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZXNlIHByb3BlcnR5IG5hbWVzIGFyZSB1c2VkIGZvciBjb25zaXN0ZW50IHByb3BlcnR5IGFjY2VzcyBhY3Jvc3MgY29tcG9uZW50cy5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNT0RFTCAtIFByb3BlcnR5IG5hbWUgZm9yIHRoZSBjb21wb25lbnQncyBkYXRhIG1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTE9DQUxFIC0gUHJvcGVydHkgbmFtZSBmb3IgbG9jYWxpemF0aW9uIHNldHRpbmdzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEsgLSBQcm9wZXJ0eSBuYW1lIGZvciBwcmltYXJ5IGtleVxuICogQHByb3BlcnR5IHtzdHJpbmd9IElURU1TIC0gUHJvcGVydHkgbmFtZSBmb3IgY29sbGVjdGlvbiBpdGVtc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJPVVRFIC0gUHJvcGVydHkgbmFtZSBmb3Igcm91dGluZyBpbmZvcm1hdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IE9QRVJBVElPTlMgLSBQcm9wZXJ0eSBuYW1lIGZvciBhdmFpbGFibGUgb3BlcmF0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFVJRCAtIFByb3BlcnR5IG5hbWUgZm9yIHVuaXF1ZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFJBTlNMQVRBQkxFIC0gUHJvcGVydHkgbmFtZSBmb3IgdHJhbnNsYXRpb24gZmxhZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BUFBFUiAtIFByb3BlcnR5IG5hbWUgZm9yIHByb3BlcnR5IG1hcHBlclxuICogQHByb3BlcnR5IHtzdHJpbmd9IElOSVRJQUxJWkVEIC0gUHJvcGVydHkgbmFtZSBmb3IgaW5pdGlhbGl6YXRpb24gc3RhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIEJhc2VDb21wb25lbnRQcm9wcyB7XG4gIE1PREVMID0gJ21vZGVsJyxcbiAgTE9DQUxFID0gJ2xvY2FsZScsXG4gIFBLID0gJ3BrJyxcbiAgSVRFTVMgPSAnaXRlbXMnLFxuICBST1VURSA9ICdyb3V0ZScsXG4gIE9QRVJBVElPTlMgPSAnb3BlcmF0aW9ucycsXG4gIFVJRCA9ICd1aWQnLFxuICBUUkFOU0xBVEFCTEUgPSAndHJhbnNsYXRhYmxlJyxcbiAgTUFQUEVSID0gJ21hcHBlcicsXG4gIElOSVRJQUxJWkVEID0gJ2luaXRpYWxpemVkJyxcbn1cblxuXG4iXX0=
165
+ export var ListComponentsTypes;
166
+ (function (ListComponentsTypes) {
167
+ ListComponentsTypes["INFINITE"] = "infinite";
168
+ ListComponentsTypes["PAGINATED"] = "paginated";
169
+ })(ListComponentsTypes || (ListComponentsTypes = {}));
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLFdBQVc7SUFDckMsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLGFBQWE7SUFDekIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixNQUFNLEVBQUUsU0FBUztJQUNqQixxQkFBcUIsRUFBRSxxQkFBcUI7SUFDNUMsMEJBQTBCLEVBQUUsZ0JBQWdCO0NBQzdDLENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztDQUNuQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsc0JBQXNCLEVBQUUsOEJBQThCO0lBQ3RELE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLEtBQUssRUFBRSxZQUFZO0lBQ25CLE1BQU0sRUFBRSxhQUFhO0lBQ3JCLGdCQUFnQixFQUFFLHNCQUFzQjtJQUN4QyxrQkFBa0IsRUFBRSx1QkFBdUI7SUFDM0MscUJBQXFCLEVBQUUsMEJBQTBCO0lBQ2pELHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCw0REFBNEQ7Q0FDN0QsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQU4sSUFBWSxZQU9YO0FBUEQsV0FBWSxZQUFZO0lBQ3RCLDZDQUFPLENBQUE7SUFDUCxpREFBUyxDQUFBO0lBQ1QsK0NBQVEsQ0FBQTtJQUNSLCtDQUFRLENBQUE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtBQUNkLENBQUMsRUFQVyxZQUFZLEtBQVosWUFBWSxRQU92QjtBQUFBLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUFJWDtBQUpELFdBQVksZUFBZTtJQUN6QixnQ0FBYSxDQUFBO0lBQ2Isc0NBQW1CLENBQUE7SUFDbkIsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUdEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzVCLHVEQUFpQyxDQUFBO0lBQ2pDLCtEQUF5QyxDQUFBO0lBQ3pDLGlFQUEyQyxDQUFBO0FBQzdDLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBV1g7QUFYRCxXQUFZLGtCQUFrQjtJQUM1QixxQ0FBZSxDQUFBO0lBQ2YsdUNBQWlCLENBQUE7SUFDakIsK0JBQVMsQ0FBQTtJQUNULHFDQUFlLENBQUE7SUFDZixxQ0FBZSxDQUFBO0lBQ2YsK0NBQXlCLENBQUE7SUFDekIsaUNBQVcsQ0FBQTtJQUNYLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0lBQ2pCLGlEQUEyQixDQUFBO0FBQzdCLENBQUMsRUFYVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBVzdCO0FBR0QsTUFBTSxDQUFOLElBQVksbUJBR1g7QUFIRCxXQUFZLG1CQUFtQjtJQUM3Qiw0Q0FBcUIsQ0FBQTtJQUNyQiw4Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUc5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVJS2V5cyB9IGZyb20gJ0BkZWNhZi10cy91aS1kZWNvcmF0b3JzJztcbmltcG9ydCB7IFZBTElEQVRJT05fUEFSRU5UX0tFWSB9IGZyb20gJ0BkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvbic7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFuZ3VsYXIgZW5naW5lIGtleSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IENvbnRhaW5zIGtleSBzdHJpbmdzIHVzZWQgYnkgdGhlIEFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgcmVmbGVjdGlvbixcbiAqIGR5bmFtaWMgY29tcG9uZW50IGNyZWF0aW9uLCBhbmQgb3RoZXIgZW5naW5lIG9wZXJhdGlvbnMuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBbmd1bGFyRW5naW5lS2V5c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRkxFQ1QgLSBQcmVmaXggZm9yIHJlZmxlY3Rpb24gbWV0YWRhdGEga2V5c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IERZTkFNSUMgLSBLZXkgZm9yIGR5bmFtaWMgY29tcG9uZW50IGlkZW50aWZpY2F0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQU5OT1RBVElPTlMgLSBLZXkgZm9yIGNvbXBvbmVudCBhbm5vdGF0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IEVDTVAgLSBLZXkgZm9yIGVtYmVkZGVkIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBOR19SRUZMRUNUIC0gUHJlZml4IGZvciBBbmd1bGFyIHJlZmxlY3Rpb24gYXR0cmlidXRlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFTkRFUkVEIC0gUHJlZml4IGZvciByZW5kZXJlZCBjb21wb25lbnQgbWFya2Vyc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BUFBFUiAtIEtleSBmb3IgcHJvcGVydHkgbWFwcGVyc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IENISUxEUkVOIC0gS2V5IGZvciBjaGlsZCBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVEFCTEUgLSBLZXkgZm9yIGxpc3RhYmxlIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRU5ERVIgLSBLZXkgZm9yIHJlbmRlcmFibGUgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFTkRFUkVEX0lEIC0gVGVtcGxhdGUgZm9yIHJlbmRlcmVkIGNvbXBvbmVudCBJRHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVJFTlQgLSBLZXkgZm9yIGNvbXBhcmlzb24gZGVjb3JhdG9ycyBhbmQgdmFsaWRhdG9yc1xuICogQGNvbnN0IEFuZ3VsYXJFbmdpbmVLZXlzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgY29uc3QgQW5ndWxhckVuZ2luZUtleXMgPSB7XG4gIFJFRkxFQ1Q6IGAke1VJS2V5cy5SRUZMRUNUfS5hbmd1bGFyLmAsXG4gIERZTkFNSUM6ICdkeW5hbWljLWNvbXBvbmVudCcsXG4gIEFOTk9UQVRJT05TOiAnX19hbm5vdGF0aW9uc19fJyxcbiAgRUNNUDogJ2VjbXAnLFxuICBOR19SRUZMRUNUOiAnbmctcmVmbGVjdC0nLFxuICBSRU5ERVJFRDogJ3JlbmRlcmVkLWFzLScsXG4gIE1BUFBFUjogJ21hcHBlcicsXG4gIENISUxEUkVOOiAnY2hpbGRyZW4nLFxuICBMSVNUQUJMRTogJ2xpc3RhYmxlJyxcbiAgUkVOREVSOiAncmVuZGVyJyxcbiAgUkVOREVSRURfSUQ6ICdyZW5kZXJlZC1hcy17MH0nLFxuICBQQVJFTlQ6ICdfcGFyZW50JyxcbiAgVkFMSURBVElPTl9QQVJFTlRfS0VZOiBWQUxJREFUSU9OX1BBUkVOVF9LRVksXG4gIEZPUk1fR1JPVVBfQ09NUE9ORU5UX1BST1BTOiAnY29tcG9uZW50UHJvcHMnXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHZhbGlkYXRpb24gc3RhdGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBDb250YWlucyBjb25zdGFudHMgcmVwcmVzZW50aW5nIHRoZSBwb3NzaWJsZSB2YWxpZGF0aW9uIHN0YXRlcyBvZiBhIGZvcm0uXG4gKiBUaGVzZSBhcmUgdXNlZCB0byBjaGVjayBhbmQgaGFuZGxlIGZvcm0gdmFsaWRhdGlvbiB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZvcm1Db25zdGFudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBWQUxJRCAtIENvbnN0YW50IHJlcHJlc2VudGluZyBhIHZhbGlkIGZvcm0gc3RhdGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTlZBTElEIC0gQ29uc3RhbnQgcmVwcmVzZW50aW5nIGFuIGludmFsaWQgZm9ybSBzdGF0ZVxuICogQGNvbnN0IEZvcm1Db25zdGFudHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBGb3JtQ29uc3RhbnRzID0ge1xuICBWQUxJRDogJ1ZBTElEJyxcbiAgSU5WQUxJRDogJ0lOVkFMSUQnLFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXZlbnQgbmFtZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gY29udGFpbmluZyBjb25zdGFudHMgZm9yIGV2ZW50IG5hbWVzIHVzZWQgdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGVzZSBhcmUgdXNlZCB0byBzdGFuZGFyZGl6ZSBldmVudCBuYW1pbmcgYW5kIGhhbmRsaW5nLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJBQ0tfQlVUVE9OX05BVklHQVRJT04gLSBFdmVudCBmaXJlZCB3aGVuIGJhY2sgYnV0dG9uIG5hdmlnYXRpb24gZW5kc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRlJFU0hfRVZFTlQgLSBFdmVudCBmaXJlZCB3aGVuIGEgcmVmcmVzaCBhY3Rpb24gb2NjdXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ0xJQ0tfRVZFTlQgLSBFdmVudCBmaXJlZCB3aGVuIGEgY2xpY2sgYWN0aW9uIG9jY3Vyc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFNVQk1JVF9FVkVOVCAtIEV2ZW50IGZpcmVkIHdoZW4gYSBmb3JtIHN1Ym1pc3Npb24gb2NjdXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgY29uc3QgRXZlbnRDb25zdGFudHMgPSB7XG4gIEJBQ0tfQlVUVE9OX05BVklHQVRJT046ICdiYWNrQnV0dG9uTmF2aWdhdGlvbkVuZEV2ZW50JyxcbiAgUkVGUkVTSDogJ1JlZnJlc2hFdmVudCcsXG4gIENMSUNLOiAnQ2xpY2tFdmVudCcsXG4gIFNVQk1JVDogJ1N1Ym1pdEV2ZW50JyxcbiAgVkFMSURBVElPTl9FUlJPUjogJ3ZhbGlkYXRpb25FcnJvckV2ZW50JyxcbiAgRklFTERTRVRfQUREX0dST1VQOiAnZmllbGRzZXRBZGRHcm91cEV2ZW50JyxcbiAgRklFTERTRVRfVVBEQVRFX0dST1VQOiAnZmllbGRzZXRVcGRhdGVHcm91cEV2ZW50JyxcbiAgRklFTERTRVRfUkVNT1ZFX0dST1VQOiAnZmllbGRzZXRSZW1vdmVHcm91cEV2ZW50JyxcbiAgLy8gRklFTERTRVRfR1JPVVBfVkFMSURBVElPTjogJ2ZpZWxkc2V0R3JvdXBWYWxpZGF0aW9uRXZlbnQnXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExvZ2dlciBsZXZlbCBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIGxvZ2dpbmcgbGV2ZWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgbG9nZ2luZyBzeXN0ZW0uXG4gKiBMb3dlciB2YWx1ZXMgcmVwcmVzZW50IG1vcmUgdmVyYm9zZSBsb2dnaW5nLCB3aGlsZSBoaWdoZXIgdmFsdWVzIHJlcHJlc2VudCBtb3JlIGNyaXRpY2FsIGxvZ3MuXG4gKiBAZW51bSB7bnVtYmVyfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge251bWJlcn0gQUxMIC0gTG9nIGV2ZXJ5dGhpbmcgKG1vc3QgdmVyYm9zZSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBERUJVRyAtIExvZyBkZWJ1ZyBpbmZvcm1hdGlvblxuICogQHByb3BlcnR5IHtudW1iZXJ9IElORk8gLSBMb2cgaW5mb3JtYXRpb25hbCBtZXNzYWdlc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFdBUk4gLSBMb2cgd2FybmluZ3NcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBFUlJPUiAtIExvZyBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBDUklUSUNBTCAtIExvZyBjcml0aWNhbCBlcnJvcnMgKGxlYXN0IHZlcmJvc2UpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBMb2dnZXJMZXZlbHMge1xuICBBTEwgPSAwLFxuICBERUJVRyA9IDEsXG4gIElORk8gPSAyLFxuICBXQVJOID0gMyxcbiAgRVJST1IgPSA0LFxuICBDUklUSUNBTCA9IDVcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJvdXRlIGRpcmVjdGlvbiBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIHBvc3NpYmxlIG5hdmlnYXRpb24gZGlyZWN0aW9ucyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBVc2VkIGZvciBjb250cm9sbGluZyBuYXZpZ2F0aW9uIGZsb3cgYW5kIGFuaW1hdGlvbiBkaXJlY3Rpb25zLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJBQ0sgLSBOYXZpZ2F0ZSBiYWNrIHRvIHRoZSBwcmV2aW91cyBwYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRk9SV0FSRCAtIE5hdmlnYXRlIGZvcndhcmQgdG8gdGhlIG5leHQgcGFnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJPT1QgLSBOYXZpZ2F0ZSB0byB0aGUgcm9vdC9ob21lIHBhZ2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIFJvdXRlRGlyZWN0aW9ucyB7XG4gIEJBQ0sgPSAnYmFjaycsXG4gIEZPUldBUkQgPSAnZm9yd2FyZCcsXG4gIFJPT1QgPSAncm9vdCcsXG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IHRhZyBuYW1lIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgdGFnIG5hbWVzIGZvciBjdXN0b20gY29tcG9uZW50cyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZXNlIHRhZyBuYW1lcyBhcmUgdXNlZCBmb3IgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhbmQgcmVuZGVyaW5nLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfSVRFTSAtIFRhZyBuYW1lIGZvciBsaXN0IGl0ZW0gY29tcG9uZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVF9JTkZJTklURSAtIFRhZyBuYW1lIGZvciBpbmZpbml0ZSBzY3JvbGxpbmcgbGlzdCBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUX1BBR0lOQVRFRCAtIFRhZyBuYW1lIGZvciBwYWdpbmF0ZWQgbGlzdCBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIENvbXBvbmVudHNUYWdOYW1lcyB7XG4gIExJU1RfSVRFTSA9ICduZ3gtZGVjYWYtbGlzdC1pdGVtJyxcbiAgTElTVF9JTkZJTklURSA9ICduZ3gtZGVjYWYtbGlzdC1pbmZpbml0ZScsXG4gIExJU1RfUEFHSU5BVEVEID0gJ25neC1kZWNhZi1saXN0LXBhZ2luYXRlZCcsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgY29tcG9uZW50IHByb3BlcnR5IG5hbWUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBFbnVtIGRlZmluaW5nIHRoZSBzdGFuZGFyZCBwcm9wZXJ0eSBuYW1lcyB1c2VkIGJ5IGJhc2UgY29tcG9uZW50cyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGVzZSBwcm9wZXJ0eSBuYW1lcyBhcmUgdXNlZCBmb3IgY29uc2lzdGVudCBwcm9wZXJ0eSBhY2Nlc3MgYWNyb3NzIGNvbXBvbmVudHMuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTU9ERUwgLSBQcm9wZXJ0eSBuYW1lIGZvciB0aGUgY29tcG9uZW50J3MgZGF0YSBtb2RlbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IExPQ0FMRSAtIFByb3BlcnR5IG5hbWUgZm9yIGxvY2FsaXphdGlvbiBzZXR0aW5nc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFBLIC0gUHJvcGVydHkgbmFtZSBmb3IgcHJpbWFyeSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJVEVNUyAtIFByb3BlcnR5IG5hbWUgZm9yIGNvbGxlY3Rpb24gaXRlbXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBST1VURSAtIFByb3BlcnR5IG5hbWUgZm9yIHJvdXRpbmcgaW5mb3JtYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBPUEVSQVRJT05TIC0gUHJvcGVydHkgbmFtZSBmb3IgYXZhaWxhYmxlIG9wZXJhdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBVSUQgLSBQcm9wZXJ0eSBuYW1lIGZvciB1bmlxdWUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRSQU5TTEFUQUJMRSAtIFByb3BlcnR5IG5hbWUgZm9yIHRyYW5zbGF0aW9uIGZsYWdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVBQRVIgLSBQcm9wZXJ0eSBuYW1lIGZvciBwcm9wZXJ0eSBtYXBwZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTklUSUFMSVpFRCAtIFByb3BlcnR5IG5hbWUgZm9yIGluaXRpYWxpemF0aW9uIHN0YXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBCYXNlQ29tcG9uZW50UHJvcHMge1xuICBNT0RFTCA9ICdtb2RlbCcsXG4gIExPQ0FMRSA9ICdsb2NhbGUnLFxuICBQSyA9ICdwaycsXG4gIElURU1TID0gJ2l0ZW1zJyxcbiAgUk9VVEUgPSAncm91dGUnLFxuICBPUEVSQVRJT05TID0gJ29wZXJhdGlvbnMnLFxuICBVSUQgPSAndWlkJyxcbiAgVFJBTlNMQVRBQkxFID0gJ3RyYW5zbGF0YWJsZScsXG4gIE1BUFBFUiA9ICdtYXBwZXInLFxuICBJTklUSUFMSVpFRCA9ICdpbml0aWFsaXplZCcsXG59XG5cblxuZXhwb3J0IGVudW0gTGlzdENvbXBvbmVudHNUeXBlcyB7XG4gIElORklOSVRFID0gJ2luZmluaXRlJyxcbiAgUEFHSU5BVEVEID0gJ3BhZ2luYXRlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RFbXB0eVJlc3VsdCB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIHNob3dCdXR0b246IGJvb2xlYW47XG4gIGJ1dHRvblRleHQ6IHN0cmluZztcbiAgbGluazogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvbklucHV0LCBJb25TZWxlY3QsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlQ3VzdG9tRXZlbnQsIEZvcm1TZXJ2aWNlQ29udHJvbCwgSW5wdXRPcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5cblxuZXhwb3J0IHR5cGUgSGFuZGxlckxpa2UgPSBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPj5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBrZXktdmFsdWUgcGFpciB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cyBhbmQgYW55IHR5cGUgb2YgdmFsdWVzLlxuICogVGhpcyBpcyBjb21tb25seSB1c2VkIGZvciBkeW5hbWljIGRhdGEgc3RydWN0dXJlcyB3aGVyZSB0aGUgcHJvcGVydGllcyBhcmUgbm90IGtub3duIGF0IGNvbXBpbGUgdGltZS5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBLZXlWYWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEtleVZhbHVlID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBmdW5jdGlvbiB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIG9mIGFueSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhbnkgdHlwZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIHBhcmFtZXRlcnMgb3IgdmFyaWFibGVzXG4gKiB3aGVyZSB0aGUgZXhhY3QgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIG5vdCBrbm93biBhdCBjb21waWxlIHRpbWUuXG4gKiBAdHlwZWRlZiBGdW5jdGlvbkxpa2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBGdW5jdGlvbkxpa2UgPSAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRWxlbWVudCBzaXplIG9wdGlvbnMgZm9yIFVJIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHNpemUgdmFsdWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gVUkgZWxlbWVudHMuXG4gKiBUaGVzZSBzaXplcyBjb250cm9sIHRoZSBkaW1lbnNpb25zIGFuZCBsYXlvdXQgYmVoYXZpb3Igb2YgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHsoJ3NtYWxsJ3wnbWVkaXVtJ3wnbGFyZ2UnfCd4bGFyZ2UnfCcyeGxhcmdlJ3wnYXV0byd8J2V4cGFuZCd8J2Jsb2NrJyl9IEVsZW1lbnRTaXplc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudFNpemVzID1cbiAgfCAnc21hbGwnXG4gIHwgJ21lZGl1bSdcbiAgfCAnbGFyZ2UnXG4gIHwgJ3hsYXJnZSdcbiAgfCAnMnhsYXJnZSdcbiAgfCAnYXV0bydcbiAgfCAnZXhwYW5kJ1xuICB8ICdibG9jayc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2ljIHBvc2l0aW9uIG9wdGlvbnMgZm9yIFVJIGVsZW1lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSBwb3NpdGlvbiB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBVSSBlbGVtZW50cy5cbiAqIFRoZXNlIHBvc2l0aW9ucyBjb250cm9sIHRoZSBhbGlnbm1lbnQgYW5kIHBsYWNlbWVudCBvZiBjb21wb25lbnRzLlxuICogQHR5cGVkZWYgeygnbGVmdCd8J2NlbnRlcid8J3JpZ2h0J3wndG9wJ3wnYm90dG9tJyl9IEVsZW1lbnRQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbnMgPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFeHRlbmRlZCBwb3NpdGlvbiBvcHRpb25zIGZvciBmbGV4IGxheW91dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2ljIEVsZW1lbnRQb3NpdGlvbnMgd2l0aCBhZGRpdGlvbmFsIGZsZXgtc3BlY2lmaWMgcG9zaXRpb24gdmFsdWVzLlxuICogVGhlc2UgcG9zaXRpb25zIGFyZSB1c2VkIGZvciBjb250cm9sbGluZyBhbGlnbm1lbnQgYW5kIGRpc3RyaWJ1dGlvbiBpbiBmbGV4IGNvbnRhaW5lcnMuXG4gKiBAdHlwZWRlZiB7KEVsZW1lbnRQb3NpdGlvbnN8J3N0cmV0Y2gnfCdtaWRkbGUnfCdhcm91bmQnfCdiZXR3ZWVuJyl9IEZsZXhQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZsZXhQb3NpdGlvbnMgPVxuICB8IEVsZW1lbnRQb3NpdGlvbnNcbiAgfCAnc3RyZXRjaCdcbiAgfCAnbWlkZGxlJ1xuICB8ICdhcm91bmQnXG4gIHwgJ2JldHdlZW4nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgbW9kZSBvcHRpb25zIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB3aGVuIGZvcm0gZmllbGQgdmFsdWVzIHNob3VsZCBiZSB1cGRhdGVkIGluIHRoZSBtb2RlbC5cbiAqIC0gJ2NoYW5nZSc6IFVwZGF0ZSBvbiBldmVyeSBjaGFuZ2UgZXZlbnRcbiAqIC0gJ2JsdXInOiBVcGRhdGUgd2hlbiB0aGUgZmllbGQgbG9zZXMgZm9jdXNcbiAqIC0gJ3N1Ym1pdCc6IFVwZGF0ZSBvbmx5IHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkXG4gKiBAdHlwZWRlZiB7KCdjaGFuZ2UnfCdibHVyJ3wnc3VibWl0Jyl9IEZpZWxkVXBkYXRlTW9kZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRVcGRhdGVNb2RlID0gJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JztcblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWxzIHRoYXQgY2FuIGJlIHJlbmRlcmVkXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZCBieSB0aGUgZW5naW5lLlxuICogQ29udGFpbnMgYW4gb3B0aW9uYWwgcmVuZGVyZXJJZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlbmRlcmVkIGluc3RhbmNlLlxuICogQGludGVyZmFjZSBSZW5kZXJlZE1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgbW9kZWwgaW5zdGFuY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbCB7XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvc3NpYmxlIGlucHV0IHR5cGVzIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgaW5wdXQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBmb3JtIGZpZWxkcy5cbiAqIEluY2x1ZGVzIHN0YW5kYXJkIEhUTUwgaW5wdXQgdHlwZXMgbGlrZSBjaGVja2JveCwgcmFkaW8sIGFuZCBzZWxlY3QsXG4gKiBhcyB3ZWxsIGFzIElvbmljJ3MgVGV4dEZpZWxkVHlwZXMgYW5kIHRleHRhcmVhLlxuICogQHR5cGVkZWYgeygnY2hlY2tib3gnfCdyYWRpbyd8J3NlbGVjdCd8VGV4dEZpZWxkVHlwZXN8J3RleHRhcmVhJyl9IFBvc3NpYmxlSW5wdXRUeXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUG9zc2libGVJbnB1dFR5cGVzID1cbiAgfCAnY2hlY2tib3gnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgVGV4dEZpZWxkVHlwZXNcbiAgfCAndGV4dGFyZWEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaWVsZCBkZWZpbml0aW9uIGZvciBBbmd1bGFyIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSB0eXBlIHRoYXQgY29tYmluZXMgcHJvcGVydGllcyBmcm9tIHZhcmlvdXMgSW9uaWMgY29tcG9uZW50c1xuICogdG8gZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgYSBmaWVsZCBpbiBhbiBBbmd1bGFyIGZvcm0uIEl0IG9taXRzIGNlcnRhaW4gcHJvcGVydGllc1xuICogZnJvbSBJb25JbnB1dCwgcGlja3Mgc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIElvblNlbGVjdCwgSW9uVGV4dGFyZWEsIGFuZCBJb25DaGVja2JveCxcbiAqIGFuZCBhZGRzIGN1c3RvbSBwcm9wZXJ0aWVzIGxpa2UgdHlwZSBhbmQgY2xhc3NOYW1lLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckZpZWxkRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtQb3NzaWJsZUlucHV0VHlwZXN9IHR5cGUgLSBUaGUgdHlwZSBvZiBpbnB1dCBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IGNsYXNzTmFtZSAtIENTUyBjbGFzcyBuYW1lKHMpIGZvciB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2FuY2VsVGV4dF0gLSBUZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvbiAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludGVyZmFjZV0gLSBJbnRlcmZhY2Ugc3R5bGUgZm9yIHNlbGVjdCAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NlbGVjdGVkVGV4dF0gLSBUZXh0IGZvciBzZWxlY3RlZCBvcHRpb24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtPYmplY3R9IFtpbnRlcmZhY2VPcHRpb25zXSAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcmZhY2UgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtyb3dzXSAtIE51bWJlciBvZiByb3dzIGZvciB0ZXh0YXJlYSAoZnJvbSBJb25UZXh0YXJlYSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbY29sc10gLSBOdW1iZXIgb2YgY29sdW1ucyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FsaWdubWVudF0gLSBBbGlnbm1lbnQgb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2p1c3RpZnldIC0gSnVzdGlmaWNhdGlvbiBvZiBjaGVja2JveCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NoZWNrZWRdIC0gV2hldGhlciBjaGVja2JveCBpcyBjaGVja2VkIChmcm9tIElvbkNoZWNrYm94KVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiA9IE9taXQ8XG4gIElvbklucHV0LFxuICB8ICdpb25JbnB1dCdcbiAgfCAnaW9uRm9jdXMnXG4gIHwgJ2lvbkNoYW5nZSdcbiAgfCAnaW9uQmx1cidcbiAgfCAnZ2V0SW5wdXRFbGVtZW50J1xuICB8ICdzZXRGb2N1cydcbiAgfCAnbGFiZWwnXG4gIHwgJ2VsJ1xuICB8ICd6J1xuICB8ICd0eXBlJ1xuPiAmXG4gIFBpY2s8XG4gICAgSW9uU2VsZWN0LFxuICAgICdjYW5jZWxUZXh0JyB8ICdpbnRlcmZhY2UnIHwgJ3NlbGVjdGVkVGV4dCcgfCAnaW50ZXJmYWNlT3B0aW9ucydcbiAgPiAmXG4gIFBpY2s8SW9uVGV4dGFyZWEsICdyb3dzJyB8ICdjb2xzJz4gJlxuICBQaWNrPElvbkNoZWNrYm94LCAnYWxpZ25tZW50JyB8ICdqdXN0aWZ5JyB8ICdjaGVja2VkJz4gJiB7XG4gIHR5cGU6IFBvc3NpYmxlSW5wdXRUeXBlcztcbiAgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RyaW5nIG9yIGJvb2xlYW4gcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuIHZhbHVlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgYm9vbGVhbiBvciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4uXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgYXR0cmlidXRlIHZhbHVlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0cmluZ3Mgb3IgYm9vbGVhbnMuXG4gKiBAdHlwZWRlZiB7KCd0cnVlJ3wnZmFsc2UnfGJvb2xlYW4pfSBTdHJpbmdPckJvb2xlYW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ09yQm9vbGVhbiA9ICd0cnVlJyB8ICdmYWxzZScgfCBib29sZWFuO1xuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBDUlVEIGZpZWxkIGlucHV0c1xuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHVuaW9uIHR5cGUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgU2VsZWN0T3B0aW9uIG9yIFJhZGlvT3B0aW9uLlxuICogVGhpcyBpcyB1c2VkIGZvciBkZWZpbmluZyBvcHRpb25zIGluIGZvcm0gZmllbGRzIHRoYXQgc3VwcG9ydCBib3RoIHNlbGVjdCBhbmQgcmFkaW8gaW5wdXQgdHlwZXMuXG4gKiBAdHlwZWRlZiB7KFNlbGVjdE9wdGlvbnxSYWRpb09wdGlvbil9IENydWRGaWVsZE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ3J1ZEZpZWxkT3B0aW9uID0gU2VsZWN0T3B0aW9uIHwgUmFkaW9PcHRpb247XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBzZWxlY3QgaW5wdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBJbnB1dE9wdGlvbiBpbnRlcmZhY2Ugd2l0aCBhIHNlbGVjdGVkIHByb3BlcnR5IHRvIGluZGljYXRlXG4gKiB3aGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFNlbGVjdE9wdGlvbiA9IElucHV0T3B0aW9uICYgeyBzZWxlY3RlZD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIHJhZGlvIGlucHV0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgSW5wdXRPcHRpb24gaW50ZXJmYWNlIHdpdGggYSBjaGVja2VkIHByb3BlcnR5IHRvIGluZGljYXRlXG4gKiB3aGV0aGVyIHRoZSBvcHRpb24gaXMgY2hlY2tlZCBieSBkZWZhdWx0LlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUmFkaW9PcHRpb24gPSBJbnB1dE9wdGlvbiAmIHsgY2hlY2tlZD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIGNoZWNrYm94IGlucHV0c1xuICogQHN1bW1hcnkgQWxpYXMgZm9yIFJhZGlvT3B0aW9uLCBhcyBjaGVja2JveCBvcHRpb25zIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGFzIHJhZGlvIG9wdGlvbnMuXG4gKiBAdHlwZWRlZiB7UmFkaW9PcHRpb259IENoZWNrYm94T3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDaGVja2JveE9wdGlvbiA9IFJhZGlvT3B0aW9uO1xuXG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGFyZ2V0IG9wdGlvbnMgZm9yIEhUTUwgZm9ybXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHRhcmdldCB2YWx1ZXMgZm9yIEhUTUwgZm9ybXMsIGluY2x1ZGluZyBzdGFuZGFyZCB0YXJnZXRzXG4gKiBsaWtlICdfYmxhbmsnLCAnX3NlbGYnLCAnX3BhcmVudCcsIGFuZCAnX3RvcCcsIGFzIHdlbGwgYXMgY3VzdG9tIHN0cmluZyB2YWx1ZXMuXG4gKiBAdHlwZWRlZiB7KCdfYmxhbmsnfCdfc2VsZid8J19wYXJlbnQnfCdfdG9wJ3xzdHJpbmcpfSBIVE1MRm9ybVRhcmdldFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgSFRNTEZvcm1UYXJnZXQgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCcgfCBzdHJpbmc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUxpc3RJdGVtUHJvcCB7XG4vLyAgIHJlbmRlcj86IHN0cmluZyB8IGJvb2xlYW47XG4vLyAgIHRyYW5zbGF0ZVByb3BzPzogc3RyaW5nIHwgc3RyaW5nW107XG4vLyAgIGJ1dHRvbj86IFN0cmluZ09yQm9vbGVhbjtcbi8vICAgaWNvbj86IHN0cmluZztcbi8vICAgaWNvblNsb3Q/OiAnc3RhcnQnIHwgJ2VuZCc7XG4vLyAgIHRpdGxlPzogc3RyaW5nO1xuLy8gICBkZXNjcml0cGlvbj86IHN0cmluZztcbi8vICAgaW5mbz86IHN0cmluZztcbi8vICAgc3ViaW5mbz86IHN0cmluZztcbi8vIH1cblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZm9yIGZvcm0gc2VydmljZSBjb250cm9sc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGZvcm0gY29udHJvbHMgbWFuYWdlZCBieSB0aGUgZm9ybSBzZXJ2aWNlLlxuICogSXQncyBhIG5lc3RlZCByZWNvcmQgd2hlcmUgdGhlIG91dGVyIGtleSBpcyB0aGUgZm9ybSBncm91cCBuYW1lLCB0aGUgaW5uZXIga2V5XG4gKiBpcyB0aGUgY29udHJvbCBuYW1lLCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIHRoZSBmb3JtIGdyb3VwIGFuZCBmaWVsZCBwcm9wZXJ0aWVzLlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHsgY29udHJvbDogRm9ybUdyb3VwOyBwcm9wczogQW5ndWxhckZpZWxkRGVmaW5pdGlvbiB9Pj59IEZvcm1TZXJ2aWNlQ29udHJvbHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1TZXJ2aWNlQ29udHJvbHMgPSBSZWNvcmQ8XG4gIHN0cmluZyxcbiAgUmVjb3JkPHN0cmluZywgRm9ybVNlcnZpY2VDb250cm9sPlxuPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVuZGVyZXIgY3VzdG9tIGV2ZW50IHR5cGVcbiAqIEBzdW1tYXJ5IENvbWJpbmVzIEJhc2VDdXN0b21FdmVudCB3aXRoIEtleVZhbHVlIHByb3BlcnRpZXMgdG8gY3JlYXRlIGEgZmxleGlibGVcbiAqIGN1c3RvbSBldmVudCB0eXBlIGZvciByZW5kZXJlciBjb21wb25lbnRzLiBUaGlzIGFsbG93cyBldmVudHMgdG8gY2FycnkgYm90aFxuICogc3RhbmRhcmQgZXZlbnQgcHJvcGVydGllcyBhbmQgYWRkaXRpb25hbCBjdXN0b20gZGF0YS5cbiAqIEB0eXBlZGVmIFJlbmRlcmVyQ3VzdG9tRXZlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlcmVyQ3VzdG9tRXZlbnQgPSBCYXNlQ3VzdG9tRXZlbnQgJiBLZXlWYWx1ZTtcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDUlVEIGZvcm0gZXZlbnQgdHlwZVxuICogQHN1bW1hcnkgRXh0ZW5kcyBCYXNlQ3VzdG9tRXZlbnQgdG8gaW5jbHVkZSBvcHRpb25hbCBoYW5kbGVycyBmb3IgQ1JVRCBmb3JtIG9wZXJhdGlvbnMuXG4gKiBUaGlzIGV2ZW50IHR5cGUgaXMgdXNlZCBmb3IgZm9ybS1yZWxhdGVkIGFjdGlvbnMgbGlrZSBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSBvcGVyYXRpb25zLlxuICogQHR5cGVkZWYgQ3J1ZEZvcm1FdmVudFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbaGFuZGxlcnNdIC0gT3B0aW9uYWwgaGFuZGxlcnMgZm9yIGZvcm0gb3BlcmF0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ3J1ZEZvcm1FdmVudCA9IEJhc2VDdXN0b21FdmVudCAmIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgaGFuZGxlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHBhcmVudCBncm91cCB0dXBsZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHR1cGxlIGNvbnRhaW5pbmcgYSBGb3JtR3JvdXAgYW5kIGl0cyBhc3NvY2lhdGVkIHN0cmluZyBpZGVudGlmaWVyLlxuICogVGhpcyBpcyB1c2VkIGZvciBtYW5hZ2luZyBoaWVyYXJjaGljYWwgZm9ybSBzdHJ1Y3R1cmVzIGFuZCBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcy5cbiAqIEB0eXBlZGVmIHtbRm9ybUdyb3VwLCBzdHJpbmddfSBGb3JtUGFyZW50R3JvdXBcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1QYXJlbnRHcm91cCA9IFtGb3JtR3JvdXAsICBzdHJpbmddO1xuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvbklucHV0LCBJb25TZWxlY3QsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlQ3VzdG9tRXZlbnQsIEZvcm1TZXJ2aWNlQ29udHJvbCwgSW5wdXRPcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWRhcHRlciwgUmVwb3NpdG9yeSB9IGZyb20gJ0BkZWNhZi10cy9jb3JlJztcbmltcG9ydCB7IENvbnRleHQsIFJlcG9zaXRvcnlGbGFncyB9IGZyb20gJ0BkZWNhZi10cy9kYi1kZWNvcmF0b3JzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gJ0BkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvbic7XG5cblxuZXhwb3J0IHR5cGUgSGFuZGxlckxpa2UgPSBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPj5cblxuZXhwb3J0IGludGVyZmFjZSBSYXdRdWVyeTxNIGV4dGVuZHMgTW9kZWw+IHtcbiAgc2VsZWN0OiB1bmRlZmluZWQgfCAoa2V5b2YgTSlbXTtcbiAgZnJvbTogQ29uc3RydWN0b3I8TT47XG4gIHdoZXJlOiAoZWw6IE0pID0+IGJvb2xlYW47XG4gIHNvcnQ/OiAoZWw6IE0sIGVsMjogTSkgPT4gbnVtYmVyO1xuICBsaW1pdD86IG51bWJlcjtcbiAgc2tpcD86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRGVjYWZSZXBvc2l0b3J5QWRhcHRlcjxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyA9IFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4+ID0gQWRhcHRlcjxhbnksIGFueSwgUmF3UXVlcnk8YW55PiwgRiwgQz47XG5cbmV4cG9ydCB0eXBlIERlY2FmUmVwb3NpdG9yeTxNIGV4dGVuZHMgTW9kZWw+ID0gUmVwb3NpdG9yeTxcbiAgTSxcbiAgUmF3UXVlcnk8TT4sXG4gIERlY2FmUmVwb3NpdG9yeUFkYXB0ZXI8UmVwb3NpdG9yeUZsYWdzLCBDb250ZXh0PFJlcG9zaXRvcnlGbGFncz4+LFxuICBSZXBvc2l0b3J5RmxhZ3MsXG4gIENvbnRleHQ8UmVwb3NpdG9yeUZsYWdzPlxuPjtcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmljIGtleS12YWx1ZSBwYWlyIHR5cGVcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSBnZW5lcmljIG9iamVjdCB3aXRoIHN0cmluZyBrZXlzIGFuZCBhbnkgdHlwZSBvZiB2YWx1ZXMuXG4gKiBUaGlzIGlzIGNvbW1vbmx5IHVzZWQgZm9yIGR5bmFtaWMgZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZSBwcm9wZXJ0aWVzIGFyZSBub3Qga25vd24gYXQgY29tcGlsZSB0aW1lLlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIGFueT59IEtleVZhbHVlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgS2V5VmFsdWUgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmljIGZ1bmN0aW9uIHR5cGVcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYW55IG51bWJlciBvZiBhcmd1bWVudHMgb2YgYW55IHR5cGVcbiAqIGFuZCByZXR1cm5zIGFueSB0eXBlLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZGVmaW5pbmcgZnVuY3Rpb24gcGFyYW1ldGVycyBvciB2YXJpYWJsZXNcbiAqIHdoZXJlIHRoZSBleGFjdCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbm90IGtub3duIGF0IGNvbXBpbGUgdGltZS5cbiAqIEB0eXBlZGVmIEZ1bmN0aW9uTGlrZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEZ1bmN0aW9uTGlrZSA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFbGVtZW50IHNpemUgb3B0aW9ucyBmb3IgVUkgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgc2l6ZSB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBVSSBlbGVtZW50cy5cbiAqIFRoZXNlIHNpemVzIGNvbnRyb2wgdGhlIGRpbWVuc2lvbnMgYW5kIGxheW91dCBiZWhhdmlvciBvZiBjb21wb25lbnRzLlxuICogQHR5cGVkZWYgeygnc21hbGwnfCdtZWRpdW0nfCdsYXJnZSd8J3hsYXJnZSd8JzJ4bGFyZ2UnfCdhdXRvJ3wnZXhwYW5kJ3wnYmxvY2snKX0gRWxlbWVudFNpemVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBFbGVtZW50U2l6ZXMgPVxuICB8ICdzbWFsbCdcbiAgfCAnbWVkaXVtJ1xuICB8ICdsYXJnZSdcbiAgfCAneGxhcmdlJ1xuICB8ICcyeGxhcmdlJ1xuICB8ICdhdXRvJ1xuICB8ICdleHBhbmQnXG4gIHwgJ2Jsb2NrJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzaWMgcG9zaXRpb24gb3B0aW9ucyBmb3IgVUkgZWxlbWVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHBvc2l0aW9uIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIFVJIGVsZW1lbnRzLlxuICogVGhlc2UgcG9zaXRpb25zIGNvbnRyb2wgdGhlIGFsaWdubWVudCBhbmQgcGxhY2VtZW50IG9mIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7KCdsZWZ0J3wnY2VudGVyJ3wncmlnaHQnfCd0b3AnfCdib3R0b20nKX0gRWxlbWVudFBvc2l0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudFBvc2l0aW9ucyA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIHBvc2l0aW9uIG9wdGlvbnMgZm9yIGZsZXggbGF5b3V0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzaWMgRWxlbWVudFBvc2l0aW9ucyB3aXRoIGFkZGl0aW9uYWwgZmxleC1zcGVjaWZpYyBwb3NpdGlvbiB2YWx1ZXMuXG4gKiBUaGVzZSBwb3NpdGlvbnMgYXJlIHVzZWQgZm9yIGNvbnRyb2xsaW5nIGFsaWdubWVudCBhbmQgZGlzdHJpYnV0aW9uIGluIGZsZXggY29udGFpbmVycy5cbiAqIEB0eXBlZGVmIHsoRWxlbWVudFBvc2l0aW9uc3wnc3RyZXRjaCd8J21pZGRsZSd8J2Fyb3VuZCd8J2JldHdlZW4nKX0gRmxleFBvc2l0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRmxleFBvc2l0aW9ucyA9XG4gIHwgRWxlbWVudFBvc2l0aW9uc1xuICB8ICdzdHJldGNoJ1xuICB8ICdtaWRkbGUnXG4gIHwgJ2Fyb3VuZCdcbiAgfCAnYmV0d2Vlbic7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBtb2RlIG9wdGlvbnMgZm9yIGZvcm0gZmllbGRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHdoZW4gZm9ybSBmaWVsZCB2YWx1ZXMgc2hvdWxkIGJlIHVwZGF0ZWQgaW4gdGhlIG1vZGVsLlxuICogLSAnY2hhbmdlJzogVXBkYXRlIG9uIGV2ZXJ5IGNoYW5nZSBldmVudFxuICogLSAnYmx1cic6IFVwZGF0ZSB3aGVuIHRoZSBmaWVsZCBsb3NlcyBmb2N1c1xuICogLSAnc3VibWl0JzogVXBkYXRlIG9ubHkgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWRcbiAqIEB0eXBlZGVmIHsoJ2NoYW5nZSd8J2JsdXInfCdzdWJtaXQnKX0gRmllbGRVcGRhdGVNb2RlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGaWVsZFVwZGF0ZU1vZGUgPSAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnO1xuXG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBtb2RlbHMgdGhhdCBjYW4gYmUgcmVuZGVyZWRcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgbW9kZWxzIHRoYXQgY2FuIGJlIHJlbmRlcmVkIGJ5IHRoZSBlbmdpbmUuXG4gKiBDb250YWlucyBhbiBvcHRpb25hbCByZW5kZXJlcklkIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgcmVuZGVyZWQgaW5zdGFuY2UuXG4gKiBAaW50ZXJmYWNlIFJlbmRlcmVkTW9kZWxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcmVuZGVyZXJJZF0gLSBPcHRpb25hbCB1bmlxdWUgSUQgZm9yIHRoZSByZW5kZXJlZCBtb2RlbCBpbnN0YW5jZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJlZE1vZGVsIHtcbiAgcmVuZGVyZXJJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUG9zc2libGUgaW5wdXQgdHlwZXMgZm9yIGZvcm0gZmllbGRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSBpbnB1dCB0eXBlcyB0aGF0IGNhbiBiZSB1c2VkIGluIGZvcm0gZmllbGRzLlxuICogSW5jbHVkZXMgc3RhbmRhcmQgSFRNTCBpbnB1dCB0eXBlcyBsaWtlIGNoZWNrYm94LCByYWRpbywgYW5kIHNlbGVjdCxcbiAqIGFzIHdlbGwgYXMgSW9uaWMncyBUZXh0RmllbGRUeXBlcyBhbmQgdGV4dGFyZWEuXG4gKiBAdHlwZWRlZiB7KCdjaGVja2JveCd8J3JhZGlvJ3wnc2VsZWN0J3xUZXh0RmllbGRUeXBlc3wndGV4dGFyZWEnKX0gUG9zc2libGVJbnB1dFR5cGVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBQb3NzaWJsZUlucHV0VHlwZXMgPVxuICB8ICdjaGVja2JveCdcbiAgfCAncmFkaW8nXG4gIHwgJ3NlbGVjdCdcbiAgfCBUZXh0RmllbGRUeXBlc1xuICB8ICd0ZXh0YXJlYSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZpZWxkIGRlZmluaXRpb24gZm9yIEFuZ3VsYXIgY29tcG9uZW50c1xuICogQHN1bW1hcnkgQSBjb21wcmVoZW5zaXZlIHR5cGUgdGhhdCBjb21iaW5lcyBwcm9wZXJ0aWVzIGZyb20gdmFyaW91cyBJb25pYyBjb21wb25lbnRzXG4gKiB0byBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiBhIGZpZWxkIGluIGFuIEFuZ3VsYXIgZm9ybS4gSXQgb21pdHMgY2VydGFpbiBwcm9wZXJ0aWVzXG4gKiBmcm9tIElvbklucHV0LCBwaWNrcyBzcGVjaWZpYyBwcm9wZXJ0aWVzIGZyb20gSW9uU2VsZWN0LCBJb25UZXh0YXJlYSwgYW5kIElvbkNoZWNrYm94LFxuICogYW5kIGFkZHMgY3VzdG9tIHByb3BlcnRpZXMgbGlrZSB0eXBlIGFuZCBjbGFzc05hbWUuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBbmd1bGFyRmllbGREZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge1Bvc3NpYmxlSW5wdXRUeXBlc30gdHlwZSAtIFRoZSB0eXBlIG9mIGlucHV0IGZpZWxkXG4gKiBAcHJvcGVydHkge3N0cmluZ3xzdHJpbmdbXX0gY2xhc3NOYW1lIC0gQ1NTIGNsYXNzIG5hbWUocykgZm9yIHRoZSBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjYW5jZWxUZXh0XSAtIFRleHQgZm9yIHRoZSBjYW5jZWwgYnV0dG9uIChmcm9tIElvblNlbGVjdClcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaW50ZXJmYWNlXSAtIEludGVyZmFjZSBzdHlsZSBmb3Igc2VsZWN0IChmcm9tIElvblNlbGVjdClcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2VsZWN0ZWRUZXh0XSAtIFRleHQgZm9yIHNlbGVjdGVkIG9wdGlvbiAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge09iamVjdH0gW2ludGVyZmFjZU9wdGlvbnNdIC0gT3B0aW9ucyBmb3IgdGhlIGludGVyZmFjZSAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3Jvd3NdIC0gTnVtYmVyIG9mIHJvd3MgZm9yIHRleHRhcmVhIChmcm9tIElvblRleHRhcmVhKVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtjb2xzXSAtIE51bWJlciBvZiBjb2x1bW5zIGZvciB0ZXh0YXJlYSAoZnJvbSBJb25UZXh0YXJlYSlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYWxpZ25tZW50XSAtIEFsaWdubWVudCBvZiBjaGVja2JveCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbanVzdGlmeV0gLSBKdXN0aWZpY2F0aW9uIG9mIGNoZWNrYm94IChmcm9tIElvbkNoZWNrYm94KVxuICogQHByb3BlcnR5IHtib29sZWFufSBbY2hlY2tlZF0gLSBXaGV0aGVyIGNoZWNrYm94IGlzIGNoZWNrZWQgKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBBbmd1bGFyRmllbGREZWZpbml0aW9uID0gT21pdDxcbiAgSW9uSW5wdXQsXG4gIHwgJ2lvbklucHV0J1xuICB8ICdpb25Gb2N1cydcbiAgfCAnaW9uQ2hhbmdlJ1xuICB8ICdpb25CbHVyJ1xuICB8ICdnZXRJbnB1dEVsZW1lbnQnXG4gIHwgJ3NldEZvY3VzJ1xuICB8ICdsYWJlbCdcbiAgfCAnZWwnXG4gIHwgJ3onXG4gIHwgJ3R5cGUnXG4+ICZcbiAgUGljazxcbiAgICBJb25TZWxlY3QsXG4gICAgJ2NhbmNlbFRleHQnIHwgJ2ludGVyZmFjZScgfCAnc2VsZWN0ZWRUZXh0JyB8ICdpbnRlcmZhY2VPcHRpb25zJ1xuICA+ICZcbiAgUGljazxJb25UZXh0YXJlYSwgJ3Jvd3MnIHwgJ2NvbHMnPiAmXG4gIFBpY2s8SW9uQ2hlY2tib3gsICdhbGlnbm1lbnQnIHwgJ2p1c3RpZnknIHwgJ2NoZWNrZWQnPiAmIHtcbiAgdHlwZTogUG9zc2libGVJbnB1dFR5cGVzO1xuICBjbGFzc05hbWU6IHN0cmluZyB8IHN0cmluZ1tdO1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdHJpbmcgb3IgYm9vbGVhbiByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4gdmFsdWVcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSB2YWx1ZSB0aGF0IGNhbiBiZSBlaXRoZXIgYSBib29sZWFuIG9yIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgYm9vbGVhbi5cbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBoYW5kbGluZyBhdHRyaWJ1dGUgdmFsdWVzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyaW5ncyBvciBib29sZWFucy5cbiAqIEB0eXBlZGVmIHsoJ3RydWUnfCdmYWxzZSd8Ym9vbGVhbil9IFN0cmluZ09yQm9vbGVhblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nT3JCb29sZWFuID0gJ3RydWUnIHwgJ2ZhbHNlJyB8IGJvb2xlYW47XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIENSVUQgZmllbGQgaW5wdXRzXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdW5pb24gdHlwZSB0aGF0IGNhbiBiZSBlaXRoZXIgYSBTZWxlY3RPcHRpb24gb3IgUmFkaW9PcHRpb24uXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGRlZmluaW5nIG9wdGlvbnMgaW4gZm9ybSBmaWVsZHMgdGhhdCBzdXBwb3J0IGJvdGggc2VsZWN0IGFuZCByYWRpbyBpbnB1dCB0eXBlcy5cbiAqIEB0eXBlZGVmIHsoU2VsZWN0T3B0aW9ufFJhZGlvT3B0aW9uKX0gQ3J1ZEZpZWxkT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDcnVkRmllbGRPcHRpb24gPSBTZWxlY3RPcHRpb24gfCBSYWRpb09wdGlvbjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIHNlbGVjdCBpbnB1dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIElucHV0T3B0aW9uIGludGVyZmFjZSB3aXRoIGEgc2VsZWN0ZWQgcHJvcGVydHkgdG8gaW5kaWNhdGVcbiAqIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0T3B0aW9uID0gSW5wdXRPcHRpb24gJiB7IHNlbGVjdGVkPzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3IgcmFkaW8gaW5wdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBJbnB1dE9wdGlvbiBpbnRlcmZhY2Ugd2l0aCBhIGNoZWNrZWQgcHJvcGVydHkgdG8gaW5kaWNhdGVcbiAqIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBjaGVja2VkIGJ5IGRlZmF1bHQuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBSYWRpb09wdGlvbiA9IElucHV0T3B0aW9uICYgeyBjaGVja2VkPzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3IgY2hlY2tib3ggaW5wdXRzXG4gKiBAc3VtbWFyeSBBbGlhcyBmb3IgUmFkaW9PcHRpb24sIGFzIGNoZWNrYm94IG9wdGlvbnMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgcmFkaW8gb3B0aW9ucy5cbiAqIEB0eXBlZGVmIHtSYWRpb09wdGlvbn0gQ2hlY2tib3hPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIENoZWNrYm94T3B0aW9uID0gUmFkaW9PcHRpb247XG5cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUYXJnZXQgb3B0aW9ucyBmb3IgSFRNTCBmb3Jtc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgdGFyZ2V0IHZhbHVlcyBmb3IgSFRNTCBmb3JtcywgaW5jbHVkaW5nIHN0YW5kYXJkIHRhcmdldHNcbiAqIGxpa2UgJ19ibGFuaycsICdfc2VsZicsICdfcGFyZW50JywgYW5kICdfdG9wJywgYXMgd2VsbCBhcyBjdXN0b20gc3RyaW5nIHZhbHVlcy5cbiAqIEB0eXBlZGVmIHsoJ19ibGFuayd8J19zZWxmJ3wnX3BhcmVudCd8J190b3AnfHN0cmluZyl9IEhUTUxGb3JtVGFyZ2V0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBIVE1MRm9ybVRhcmdldCA9ICdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJyB8IHN0cmluZztcblxuLy8gZXhwb3J0IGludGVyZmFjZSBJTGlzdEl0ZW1Qcm9wIHtcbi8vICAgcmVuZGVyPzogc3RyaW5nIHwgYm9vbGVhbjtcbi8vICAgdHJhbnNsYXRlUHJvcHM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbi8vICAgYnV0dG9uPzogU3RyaW5nT3JCb29sZWFuO1xuLy8gICBpY29uPzogc3RyaW5nO1xuLy8gICBpY29uU2xvdD86ICdzdGFydCcgfCAnZW5kJztcbi8vICAgdGl0bGU/OiBzdHJpbmc7XG4vLyAgIGRlc2NyaXRwaW9uPzogc3RyaW5nO1xuLy8gICBpbmZvPzogc3RyaW5nO1xuLy8gICBzdWJpbmZvPzogc3RyaW5nO1xuLy8gfVxuXG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBmb3IgZm9ybSBzZXJ2aWNlIGNvbnRyb2xzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgZm9ybSBjb250cm9scyBtYW5hZ2VkIGJ5IHRoZSBmb3JtIHNlcnZpY2UuXG4gKiBJdCdzIGEgbmVzdGVkIHJlY29yZCB3aGVyZSB0aGUgb3V0ZXIga2V5IGlzIHRoZSBmb3JtIGdyb3VwIG5hbWUsIHRoZSBpbm5lciBrZXlcbiAqIGlzIHRoZSBjb250cm9sIG5hbWUsIGFuZCB0aGUgdmFsdWUgY29udGFpbnMgdGhlIGZvcm0gZ3JvdXAgYW5kIGZpZWxkIHByb3BlcnRpZXMuXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgeyBjb250cm9sOiBGb3JtR3JvdXA7IHByb3BzOiBBbmd1bGFyRmllbGREZWZpbml0aW9uIH0+Pn0gRm9ybVNlcnZpY2VDb250cm9sc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVNlcnZpY2VDb250cm9scyA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICBSZWNvcmQ8c3RyaW5nLCBGb3JtU2VydmljZUNvbnRyb2w+XG4+O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZW5kZXJlciBjdXN0b20gZXZlbnQgdHlwZVxuICogQHN1bW1hcnkgQ29tYmluZXMgQmFzZUN1c3RvbUV2ZW50IHdpdGggS2V5VmFsdWUgcHJvcGVydGllcyB0byBjcmVhdGUgYSBmbGV4aWJsZVxuICogY3VzdG9tIGV2ZW50IHR5cGUgZm9yIHJlbmRlcmVyIGNvbXBvbmVudHMuIFRoaXMgYWxsb3dzIGV2ZW50cyB0byBjYXJyeSBib3RoXG4gKiBzdGFuZGFyZCBldmVudCBwcm9wZXJ0aWVzIGFuZCBhZGRpdGlvbmFsIGN1c3RvbSBkYXRhLlxuICogQHR5cGVkZWYgUmVuZGVyZXJDdXN0b21FdmVudFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyZXJDdXN0b21FdmVudCA9IEJhc2VDdXN0b21FdmVudCAmIEtleVZhbHVlO1xuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENSVUQgZm9ybSBldmVudCB0eXBlXG4gKiBAc3VtbWFyeSBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB0byBpbmNsdWRlIG9wdGlvbmFsIGhhbmRsZXJzIGZvciBDUlVEIGZvcm0gb3BlcmF0aW9ucy5cbiAqIFRoaXMgZXZlbnQgdHlwZSBpcyB1c2VkIGZvciBmb3JtLXJlbGF0ZWQgYWN0aW9ucyBsaWtlIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIG9wZXJhdGlvbnMuXG4gKiBAdHlwZWRlZiBDcnVkRm9ybUV2ZW50XG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIGFueT59IFtoYW5kbGVyc10gLSBPcHRpb25hbCBoYW5kbGVycyBmb3IgZm9ybSBvcGVyYXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDcnVkRm9ybUV2ZW50ID0gQmFzZUN1c3RvbUV2ZW50ICYge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBoYW5kbGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gcGFyZW50IGdyb3VwIHR1cGxlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdHVwbGUgY29udGFpbmluZyBhIEZvcm1Hcm91cCBhbmQgaXRzIGFzc29jaWF0ZWQgc3RyaW5nIGlkZW50aWZpZXIuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIG1hbmFnaW5nIGhpZXJhcmNoaWNhbCBmb3JtIHN0cnVjdHVyZXMgYW5kIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXBzLlxuICogQHR5cGVkZWYge1tGb3JtR3JvdXAsIHN0cmluZ119IEZvcm1QYXJlbnRHcm91cFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVBhcmVudEdyb3VwID0gW0Zvcm1Hcm91cCwgIHN0cmluZ107XG5cbiJdfQ==
@@ -1,9 +1,11 @@
1
- import { NgModule } from '@angular/core';
1
+ import { NgModule, InjectionToken } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { TranslateModule, TranslatePipe } from '@ngx-translate/core';
5
5
  import { Logging } from '@decaf-ts/logging';
6
6
  import * as i0 from "@angular/core";
7
+ export const DB_ADAPTER_PROVIDER_TOKEN = new InjectionToken('DB_ADAPTER_PROVIDER');
8
+ export const I18N_CONFIG_TOKEN = new InjectionToken('I18N_CONFIG_TOKEN');
7
9
  const ComponentsAndModules = [
8
10
  CommonModule,
9
11
  FormsModule,
@@ -79,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
79
81
  schemas: [],
80
82
  }]
81
83
  }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWFuZ3VsYXItY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZm9yLWFuZ3VsYXItY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFVLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUdwRCxNQUFNLG9CQUFvQixHQUFHO0lBQzNCLFlBQVk7SUFDWixXQUFXO0lBQ1gsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixhQUFhO0NBQ2QsQ0FBQztBQUVGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdkMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxRQUF5QztJQUNqRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBaUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFPSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLHNCQUFzQjtTQUNqQyxDQUFDO0lBQ0osQ0FBQzsrR0FkVSxzQkFBc0I7Z0hBQXRCLHNCQUFzQixZQXZDakMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWEsYUFKYixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsYUFBYTtnSEFtQ0Ysc0JBQXNCLFlBdkNqQyxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBSGYsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTs7NEZBb0NKLHNCQUFzQjtrQkFObEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLG9CQUFvQjtvQkFDN0IsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tICdAZGVjYWYtdHMvbG9nZ2luZyc7XG5pbXBvcnQgeyBGdW5jdGlvbkxpa2UgfSBmcm9tICcuL2VuZ2luZSc7XG5cbmNvbnN0IENvbXBvbmVudHNBbmRNb2R1bGVzID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBUcmFuc2xhdGVNb2R1bGUsXG4gIFRyYW5zbGF0ZVBpcGVcbl07XG5cbmNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKFwiZm9yLWFuZ3VsYXJcIik7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKGluc3RhbmNlOiBzdHJpbmcgfCBGdW5jdGlvbkxpa2UgfCB1bmtub3duKTogTG9nZ2VyIHtcbiAgcmV0dXJuIGxvZy5mb3IoaW5zdGFuY2UgYXMgc3RyaW5nIHwgRnVuY3Rpb25MaWtlKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFpbiBBbmd1bGFyIG1vZHVsZSBmb3IgdGhlIERlY2FmIGZyYW1ld29ya1xuICogQHN1bW1hcnkgVGhlIEZvckFuZ3VsYXJDb21tb25Nb2R1bGUgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgaW50ZWdyYXRpbmcgRGVjYWYgd2l0aCBBbmd1bGFyIGFwcGxpY2F0aW9ucy5cbiAqIEl0IGltcG9ydHMgYW5kIGV4cG9ydHMgY29tbW9uIEFuZ3VsYXIgYW5kIElvbmljIGNvbXBvbmVudHMgYW5kIG1vZHVsZXMgbmVlZGVkIGZvciBEZWNhZiBhcHBsaWNhdGlvbnMsXG4gKiBpbmNsdWRpbmcgZm9ybSBoYW5kbGluZywgdHJhbnNsYXRpb24gc3VwcG9ydCwgYW5kIElvbmljIFVJIGNvbXBvbmVudHMuIFRoaXMgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZFxuICogZGlyZWN0bHkgb3IgdmlhIHRoZSBmb3JSb290KCkgbWV0aG9kIGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24gaW4gdGhlIGFwcGxpY2F0aW9uJ3Mgcm9vdCBtb2R1bGUuXG4gKlxuICogQGNsYXNzIEZvckFuZ3VsYXJDb21tb25Nb2R1bGVcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiB5b3VyIGFwcCBtb2R1bGU6XG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgRm9yQW5ndWxhckNvbW1vbk1vZHVsZS5mb3JSb290KCksXG4gKiAgICAgLy8gb3RoZXIgaW1wb3J0c1xuICogICBdLFxuICogICAvLyAuLi5cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogQ29tcG9uZW50c0FuZE1vZHVsZXMsXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IENvbXBvbmVudHNBbmRNb2R1bGVzLFxuICBzY2hlbWFzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9yQW5ndWxhckNvbW1vbk1vZHVsZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG1vZHVsZSB3aXRoIHByb3ZpZGVycyBmb3Igcm9vdCBtb2R1bGUgaW1wb3J0XG4gICAqIEBzdW1tYXJ5IFRoaXMgc3RhdGljIG1ldGhvZCBwcm92aWRlcyB0aGUgcHJvcGVyIHdheSB0byBpbXBvcnQgdGhlIEZvckFuZ3VsYXJDb21tb25Nb2R1bGUgaW4gdGhlIGFwcGxpY2F0aW9uJ3NcbiAgICogcm9vdCBtb2R1bGUuIEl0IHJldHVybnMgYSBNb2R1bGVXaXRoUHJvdmlkZXJzIG9iamVjdCB0aGF0IGluY2x1ZGVzIHRoZSBGb3JBbmd1bGFyQ29tbW9uTW9kdWxlIGl0c2VsZi5cbiAgICogVXNpbmcgZm9yUm9vdCgpIGVuc3VyZXMgdGhhdCB0aGUgbW9kdWxlIGFuZCBpdHMgcHJvdmlkZXJzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCBhbmQgb25seVxuICAgKiBpbnN0YW50aWF0ZWQgb25jZSBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge01vZHVsZVdpdGhQcm92aWRlcnM8Rm9yQW5ndWxhckNvbW1vbk1vZHVsZT59IFRoZSBtb2R1bGUgd2l0aCBpdHMgcHJvdmlkZXJzXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZvckFuZ3VsYXJDb21tb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZvckFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgfTtcbiAgfVxufVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWFuZ3VsYXItY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZm9yLWFuZ3VsYXItY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBVSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFLcEQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxjQUFjLENBQXlCLHFCQUFxQixDQUFDLENBQUM7QUFFM0csTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQThELG1CQUFtQixDQUFDLENBQUM7QUFFdEksTUFBTSxvQkFBb0IsR0FBRztJQUMzQixZQUFZO0lBQ1osV0FBVztJQUNYLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsYUFBYTtDQUNkLENBQUM7QUFHRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxTQUFTLENBQUMsUUFBeUM7SUFDakUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQWlDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBT0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQzs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxzQkFBc0I7U0FDakMsQ0FBQztJQUNKLENBQUM7K0dBZFUsc0JBQXNCO2dIQUF0QixzQkFBc0IsWUF4Q2pDLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixhQUFhLGFBSmIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7Z0hBb0NGLHNCQUFzQixZQXhDakMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUhmLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7OzRGQXFDSixzQkFBc0I7a0JBTmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLG9CQUFvQjtvQkFDN0IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxvQkFBb0I7b0JBQzdCLE9BQU8sRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gJ0BkZWNhZi10cy9sb2dnaW5nJztcbmltcG9ydCB7IEZ1bmN0aW9uTGlrZSwgSTE4blJlc291cmNlQ29uZmlnIH0gZnJvbSAnLi9lbmdpbmUnO1xuaW1wb3J0IHsgRGVjYWZSZXBvc2l0b3J5QWRhcHRlciB9IGZyb20gJy4vZW5naW5lL3R5cGVzJztcblxuXG5leHBvcnQgY29uc3QgREJfQURBUFRFUl9QUk9WSURFUl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEZWNhZlJlcG9zaXRvcnlBZGFwdGVyPignREJfQURBUFRFUl9QUk9WSURFUicpO1xuXG5leHBvcnQgY29uc3QgSTE4Tl9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48e3Jlc291cmNlczogSTE4blJlc291cmNlQ29uZmlnW107IHZlcnNpb25lZFN1ZmZpeDogYm9vbGVhbn0+KCdJMThOX0NPTkZJR19UT0tFTicpO1xuXG5jb25zdCBDb21wb25lbnRzQW5kTW9kdWxlcyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVHJhbnNsYXRlTW9kdWxlLFxuICBUcmFuc2xhdGVQaXBlXG5dO1xuXG5cbmNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKFwiZm9yLWFuZ3VsYXJcIik7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKGluc3RhbmNlOiBzdHJpbmcgfCBGdW5jdGlvbkxpa2UgfCB1bmtub3duKTogTG9nZ2VyIHtcbiAgcmV0dXJuIGxvZy5mb3IoaW5zdGFuY2UgYXMgc3RyaW5nIHwgRnVuY3Rpb25MaWtlKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFpbiBBbmd1bGFyIG1vZHVsZSBmb3IgdGhlIERlY2FmIGZyYW1ld29ya1xuICogQHN1bW1hcnkgVGhlIEZvckFuZ3VsYXJDb21tb25Nb2R1bGUgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgaW50ZWdyYXRpbmcgRGVjYWYgd2l0aCBBbmd1bGFyIGFwcGxpY2F0aW9ucy5cbiAqIEl0IGltcG9ydHMgYW5kIGV4cG9ydHMgY29tbW9uIEFuZ3VsYXIgYW5kIElvbmljIGNvbXBvbmVudHMgYW5kIG1vZHVsZXMgbmVlZGVkIGZvciBEZWNhZiBhcHBsaWNhdGlvbnMsXG4gKiBpbmNsdWRpbmcgZm9ybSBoYW5kbGluZywgdHJhbnNsYXRpb24gc3VwcG9ydCwgYW5kIElvbmljIFVJIGNvbXBvbmVudHMuIFRoaXMgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZFxuICogZGlyZWN0bHkgb3IgdmlhIHRoZSBmb3JSb290KCkgbWV0aG9kIGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24gaW4gdGhlIGFwcGxpY2F0aW9uJ3Mgcm9vdCBtb2R1bGUuXG4gKlxuICogQGNsYXNzIEZvckFuZ3VsYXJDb21tb25Nb2R1bGVcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiB5b3VyIGFwcCBtb2R1bGU6XG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgRm9yQW5ndWxhckNvbW1vbk1vZHVsZS5mb3JSb290KCksXG4gKiAgICAgLy8gb3RoZXIgaW1wb3J0c1xuICogICBdLFxuICogICAvLyAuLi5cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogQ29tcG9uZW50c0FuZE1vZHVsZXMsXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IENvbXBvbmVudHNBbmRNb2R1bGVzLFxuICBzY2hlbWFzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9yQW5ndWxhckNvbW1vbk1vZHVsZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG1vZHVsZSB3aXRoIHByb3ZpZGVycyBmb3Igcm9vdCBtb2R1bGUgaW1wb3J0XG4gICAqIEBzdW1tYXJ5IFRoaXMgc3RhdGljIG1ldGhvZCBwcm92aWRlcyB0aGUgcHJvcGVyIHdheSB0byBpbXBvcnQgdGhlIEZvckFuZ3VsYXJDb21tb25Nb2R1bGUgaW4gdGhlIGFwcGxpY2F0aW9uJ3NcbiAgICogcm9vdCBtb2R1bGUuIEl0IHJldHVybnMgYSBNb2R1bGVXaXRoUHJvdmlkZXJzIG9iamVjdCB0aGF0IGluY2x1ZGVzIHRoZSBGb3JBbmd1bGFyQ29tbW9uTW9kdWxlIGl0c2VsZi5cbiAgICogVXNpbmcgZm9yUm9vdCgpIGVuc3VyZXMgdGhhdCB0aGUgbW9kdWxlIGFuZCBpdHMgcHJvdmlkZXJzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCBhbmQgb25seVxuICAgKiBpbnN0YW50aWF0ZWQgb25jZSBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge01vZHVsZVdpdGhQcm92aWRlcnM8Rm9yQW5ndWxhckNvbW1vbk1vZHVsZT59IFRoZSBtb2R1bGUgd2l0aCBpdHMgcHJvdmlkZXJzXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZvckFuZ3VsYXJDb21tb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZvckFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,9 +1,10 @@
1
1
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
2
2
  import { forkJoin } from 'rxjs';
3
3
  import { map } from 'rxjs/operators';
4
- import { inject, InjectionToken } from '@angular/core';
4
+ import { inject } from '@angular/core';
5
5
  import { cleanSpaces, getLocaleFromClassName } from '../helpers';
6
6
  import en from './data/en.json';
7
+ import { I18N_CONFIG_TOKEN } from '../for-angular-common.module';
7
8
  export class I18nLoader {
8
9
  static loadFromHttp(http) {
9
10
  function getSuffix() {
@@ -43,7 +44,6 @@ export function getLocaleContextByKey(locale, phrase) {
43
44
  const parts = phrase.split(' ');
44
45
  return `${locale}.${cleanSpaces(parts.join('.'), true)}`;
45
46
  }
46
- export const I18N_CONFIG_TOKEN = new InjectionToken('I18N_CONFIG_TOKEN');
47
47
  export function I18nLoaderFactory(http) {
48
48
  const { resources, versionedSuffix } = inject(I18N_CONFIG_TOKEN, { optional: true }) ?? getI18nLoaderFactoryProviderConfig().useValue;
49
49
  return new MultiI18nLoader(http, resources, versionedSuffix);
@@ -54,7 +54,7 @@ export function getI18nLoaderFactoryProviderConfig(resources = [], versionedSuff
54
54
  return {
55
55
  provide: I18N_CONFIG_TOKEN,
56
56
  useValue: { resources: [
57
- { prefix: './assets/i18n/', suffix: '.json' },
57
+ // { prefix: './assets/i18n/', suffix: '.json' },
58
58
  ...resources
59
59
  ], versionedSuffix }
60
60
  };
@@ -83,4 +83,4 @@ export class MultiI18nLoader {
83
83
  }));
84
84
  }
85
85
  }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pMThuL0xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hDLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBZ0I7UUFDbEMsU0FBUyxTQUFTO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTyxpQkFBaUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQVksQ0FBQztRQUM5RixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLG1CQUFtQjtZQUNsQyxjQUFjLENBQUMsSUFBWTtnQkFDbEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1NBQ0YsQ0FBQyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQUdELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFxQyxFQUFFLE1BQWU7SUFDckYsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUs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O2dCQUNMLEdBQUcsT0FBTztnQkFDVixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUM5RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0aW9uT2JqZWN0IH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVIdHRwTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvaHR0cC1sb2FkZXInO1xuaW1wb3J0IHsgZm9ya0pvaW4sICBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0kxOG5SZXNvdXJjZUNvbmZpZ30gZnJvbSAnLi4vZW5naW5lL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnVuY3Rpb25MaWtlLCBLZXlWYWx1ZSB9IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBjbGVhblNwYWNlcywgZ2V0TG9jYWxlRnJvbUNsYXNzTmFtZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IGVuIGZyb20gJy4vZGF0YS9lbi5qc29uJztcbmV4cG9ydCBjbGFzcyBJMThuTG9hZGVyIHtcbiAgc3RhdGljIGxvYWRGcm9tSHR0cChodHRwOiBIdHRwQ2xpZW50KTogVHJhbnNsYXRlTG9hZGVyIHtcbiAgICBmdW5jdGlvbiBnZXRTdWZmaXgoKSB7XG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICByZXR1cm4gYC5qc29uP3ZlcnNpb249JHt0b2RheS5nZXRGdWxsWWVhcigpfSR7dG9kYXkuZ2V0TW9udGgoKX0ke3RvZGF5LmdldERheSgpfWAgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgVHJhbnNsYXRlSHR0cExvYWRlciB7XG4gICAgICBvdmVycmlkZSBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9uT2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHN1cGVyLmdldFRyYW5zbGF0aW9uKGxhbmcpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH0pKGh0dHAsICcuL2Fzc2V0cy9pMThuLycsIGdldFN1ZmZpeCgpKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVDb250ZXh0KGNsYXp6OiBGdW5jdGlvbkxpa2UgfCBvYmplY3QgfCBzdHJpbmcsIHN1ZmZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRMb2NhbGVGcm9tQ2xhc3NOYW1lKGNsYXp6LCBzdWZmaXgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmF0ZXMgYSBsb2NhbGl6ZWQgc3RyaW5nIGJ5IGNvbWJpbmluZyBsb2NhbGUgYW5kIHBocmFzZVxuICogQHN1bW1hcnkgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGNyZWF0ZXMgYSBwcm9wZXJseSBmb3JtYXR0ZWQgbG9jYWxlIHN0cmluZyBieSBjb21iaW5pbmdcbiAqIGEgbG9jYWxlIGlkZW50aWZpZXIgd2l0aCBhIHBocmFzZS4gSXQgaGFuZGxlcyBlZGdlIGNhc2VzIHN1Y2ggYXMgZW1wdHkgcGhyYXNlcyxcbiAqIG1pc3NpbmcgbG9jYWxlcywgYW5kIHBocmFzZXMgdGhhdCBhbHJlYWR5IGluY2x1ZGUgdGhlIGxvY2FsZSBwcmVmaXguIFRoaXMgZnVuY3Rpb25cbiAqIGlzIHVzZWZ1bCBmb3IgZW5zdXJpbmcgY29uc2lzdGVudCBmb3JtYXR0aW5nIG9mIGxvY2FsaXplZCBzdHJpbmdzIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgLSBUaGUgbG9jYWxlIGlkZW50aWZpZXIgKGUuZy4sICdlbicsICdmcicpXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcGhyYXNlIC0gVGhlIHBocmFzZSB0byBsb2NhbGl6ZVxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIGxvY2FsZSBzdHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiBwaHJhc2UgaXMgdW5kZWZpbmVkXG4gKlxuICogQGZ1bmN0aW9uIGdlbmVyYXRlTG9jYWxlRnJvbVN0cmluZ1xuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItYW5ndWxhclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxlQ29udGV4dEJ5S2V5KFxuICBsb2NhbGU6IHN0cmluZyxcbiAgcGhyYXNlOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IHN0cmluZyB7XG4gIGlmICghcGhyYXNlKVxuICAgIHJldHVybiBsb2NhbGU7XG4gIGlmICghbG9jYWxlIHx8IHBocmFzZS5pbmNsdWRlcyhgJHtsb2NhbGV9LmApKVxuICAgIHJldHVybiBwaHJhc2U7XG4gIGNvbnN0IHBhcnRzID0gcGhyYXNlLnNwbGl0KCcgJyk7XG4gIHJldHVybiBgJHtsb2NhbGV9LiR7Y2xlYW5TcGFjZXMocGFydHMuam9pbignLicpLCB0cnVlKX1gO1xufVxuXG5leHBvcnQgY29uc3QgSTE4Tl9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48e3Jlc291cmNlczogSTE4blJlc291cmNlQ29uZmlnW107IHZlcnNpb25lZFN1ZmZpeDogZmFsc2V9PignSTE4Tl9DT05GSUdfVE9LRU4nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIEkxOG5Mb2FkZXJGYWN0b3J5KGh0dHA6IEh0dHBDbGllbnQpOiBUcmFuc2xhdGVMb2FkZXIge1xuICBjb25zdCB7cmVzb3VyY2VzLCB2ZXJzaW9uZWRTdWZmaXh9ID0gaW5qZWN0KEkxOE5fQ09ORklHX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IGdldEkxOG5Mb2FkZXJGYWN0b3J5UHJvdmlkZXJDb25maWcoKS51c2VWYWx1ZTtcbiAgcmV0dXJuIG5ldyBNdWx0aUkxOG5Mb2FkZXIoaHR0cCwgcmVzb3VyY2VzLCB2ZXJzaW9uZWRTdWZmaXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkxvYWRlckZhY3RvcnlQcm92aWRlckNvbmZpZyhyZXNvdXJjZXM6IEkxOG5SZXNvdXJjZUNvbmZpZyB8IEkxOG5SZXNvdXJjZUNvbmZpZ1tdID0gW10sIHZlcnNpb25lZFN1ZmZpeDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIGlmKCFBcnJheS5pc0FycmF5KHJlc291cmNlcykpXG4gICAgcmVzb3VyY2VzID0gW3Jlc291cmNlc107XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogSTE4Tl9DT05GSUdfVE9LRU4sXG4gICAgdXNlVmFsdWU6IHsgcmVzb3VyY2VzOiBbXG4gICAgICB7IHByZWZpeDogJy4vYXNzZXRzL2kxOG4vJywgc3VmZml4OiAnLmpzb24nIH0sXG4gICAgICAuLi5yZXNvdXJjZXNcbiAgICBdLCB2ZXJzaW9uZWRTdWZmaXh9XG4gIH1cbn1cblxuY29uc3QgbGliTGFuZ3VhZ2U6IFJlY29yZDxzdHJpbmcsIFRyYW5zbGF0aW9uT2JqZWN0PiA9IHtlbn07XG5cbmV4cG9ydCBjbGFzcyBNdWx0aUkxOG5Mb2FkZXIgaW1wbGVtZW50cyBJMThuTG9hZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHJlc291cmNlczogSTE4blJlc291cmNlQ29uZmlnW10gPSBbXSwgcHJpdmF0ZSB2ZXJzaW9uZWRTdWZmaXg6IGJvb2xlYW4gPSBmYWxzZSkge31cblxuICBwcml2YXRlIGdldFN1ZmZpeChzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYoIXRoaXMudmVyc2lvbmVkU3VmZml4KVxuICAgICAgcmV0dXJuIHN1ZmZpeDtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIGAke3N1ZmZpeH0/dmVyc2lvbj0ke3RvZGF5LmdldEZ1bGxZZWFyKCl9JHt0b2RheS5nZXRNb250aCgpfSR7dG9kYXkuZ2V0RGF5KCl9YCBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9uT2JqZWN0PiB7XG4gICAgY29uc3QgbGliS2V5cyA9IGxpYkxhbmd1YWdlW2xhbmddIHx8IGxpYkxhbmd1YWdlW1wiZW5cIl0gfHwge307XG4gICAgY29uc3QgaHR0cFJlcXVlc3RzJCA9IGZvcmtKb2luKFxuICAgICAgdGhpcy5yZXNvdXJjZXMubWFwKGNvbmZpZyA9PlxuICAgICAgICB0aGlzLmh0dHAuZ2V0PFRyYW5zbGF0aW9uT2JqZWN0PihcbiAgICAgICAgICBgJHtjb25maWcucHJlZml4fSR7bGFuZ30ke3RoaXMuZ2V0U3VmZml4KGNvbmZpZy5zdWZmaXgpfWBcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIGh0dHBSZXF1ZXN0cyQucGlwZShcbiAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmxpYktleXMsXG4gICAgICAgICAgLi4ucmVzLnJlZHVjZSgoYWNjLCBjdXJyZW50KSA9PiAoeyAuLi5hY2MsIC4uLmN1cnJlbnQgfSksIHt9KVxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pMThuL0xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsTUFBTSxPQUFPLFVBQVU7SUFDckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFnQjtRQUNsQyxTQUFTLFNBQVM7WUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixPQUFPLGlCQUFpQixLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBWSxDQUFDO1FBQzlGLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFNLFNBQVEsbUJBQW1CO1lBQ2xDLGNBQWMsQ0FBQyxJQUFZO2dCQUNsQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7U0FDRixDQUFDLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBR0QsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQXFDLEVBQUUsTUFB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RSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDOUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGlvbk9iamVjdCB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlSHR0cExvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2h0dHAtbG9hZGVyJztcbmltcG9ydCB7IGZvcmtKb2luLCAgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtJMThuUmVzb3VyY2VDb25maWd9IGZyb20gJy4uL2VuZ2luZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnVuY3Rpb25MaWtlIH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IGNsZWFuU3BhY2VzLCBnZXRMb2NhbGVGcm9tQ2xhc3NOYW1lIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgZW4gZnJvbSAnLi9kYXRhL2VuLmpzb24nO1xuaW1wb3J0IHsgSTE4Tl9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi9mb3ItYW5ndWxhci1jb21tb24ubW9kdWxlJztcbmV4cG9ydCBjbGFzcyBJMThuTG9hZGVyIHtcbiAgc3RhdGljIGxvYWRGcm9tSHR0cChodHRwOiBIdHRwQ2xpZW50KTogVHJhbnNsYXRlTG9hZGVyIHtcbiAgICBmdW5jdGlvbiBnZXRTdWZmaXgoKSB7XG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICByZXR1cm4gYC5qc29uP3ZlcnNpb249JHt0b2RheS5nZXRGdWxsWWVhcigpfSR7dG9kYXkuZ2V0TW9udGgoKX0ke3RvZGF5LmdldERheSgpfWAgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgVHJhbnNsYXRlSHR0cExvYWRlciB7XG4gICAgICBvdmVycmlkZSBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9uT2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHN1cGVyLmdldFRyYW5zbGF0aW9uKGxhbmcpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH0pKGh0dHAsICcuL2Fzc2V0cy9pMThuLycsIGdldFN1ZmZpeCgpKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVDb250ZXh0KGNsYXp6OiBGdW5jdGlvbkxpa2UgfCBvYmplY3QgfCBzdHJpbmcsIHN1ZmZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRMb2NhbGVGcm9tQ2xhc3NOYW1lKGNsYXp6LCBzdWZmaXgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmF0ZXMgYSBsb2NhbGl6ZWQgc3RyaW5nIGJ5IGNvbWJpbmluZyBsb2NhbGUgYW5kIHBocmFzZVxuICogQHN1bW1hcnkgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGNyZWF0ZXMgYSBwcm9wZXJseSBmb3JtYXR0ZWQgbG9jYWxlIHN0cmluZyBieSBjb21iaW5pbmdcbiAqIGEgbG9jYWxlIGlkZW50aWZpZXIgd2l0aCBhIHBocmFzZS4gSXQgaGFuZGxlcyBlZGdlIGNhc2VzIHN1Y2ggYXMgZW1wdHkgcGhyYXNlcyxcbiAqIG1pc3NpbmcgbG9jYWxlcywgYW5kIHBocmFzZXMgdGhhdCBhbHJlYWR5IGluY2x1ZGUgdGhlIGxvY2FsZSBwcmVmaXguIFRoaXMgZnVuY3Rpb25cbiAqIGlzIHVzZWZ1bCBmb3IgZW5zdXJpbmcgY29uc2lzdGVudCBmb3JtYXR0aW5nIG9mIGxvY2FsaXplZCBzdHJpbmdzIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgLSBUaGUgbG9jYWxlIGlkZW50aWZpZXIgKGUuZy4sICdlbicsICdmcicpXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcGhyYXNlIC0gVGhlIHBocmFzZSB0byBsb2NhbGl6ZVxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIGxvY2FsZSBzdHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiBwaHJhc2UgaXMgdW5kZWZpbmVkXG4gKlxuICogQGZ1bmN0aW9uIGdlbmVyYXRlTG9jYWxlRnJvbVN0cmluZ1xuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItYW5ndWxhclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxlQ29udGV4dEJ5S2V5KFxuICBsb2NhbGU6IHN0cmluZyxcbiAgcGhyYXNlOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IHN0cmluZyB7XG4gIGlmICghcGhyYXNlKVxuICAgIHJldHVybiBsb2NhbGU7XG4gIGlmICghbG9jYWxlIHx8IHBocmFzZS5pbmNsdWRlcyhgJHtsb2NhbGV9LmApKVxuICAgIHJldHVybiBwaHJhc2U7XG4gIGNvbnN0IHBhcnRzID0gcGhyYXNlLnNwbGl0KCcgJyk7XG4gIHJldHVybiBgJHtsb2NhbGV9LiR7Y2xlYW5TcGFjZXMocGFydHMuam9pbignLicpLCB0cnVlKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSTE4bkxvYWRlckZhY3RvcnkoaHR0cDogSHR0cENsaWVudCk6IFRyYW5zbGF0ZUxvYWRlciB7XG4gIGNvbnN0IHtyZXNvdXJjZXMsIHZlcnNpb25lZFN1ZmZpeH0gPSBpbmplY3QoSTE4Tl9DT05GSUdfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gZ2V0STE4bkxvYWRlckZhY3RvcnlQcm92aWRlckNvbmZpZygpLnVzZVZhbHVlO1xuICByZXR1cm4gbmV3IE11bHRpSTE4bkxvYWRlcihodHRwLCByZXNvdXJjZXMsIHZlcnNpb25lZFN1ZmZpeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuTG9hZGVyRmFjdG9yeVByb3ZpZGVyQ29uZmlnKHJlc291cmNlczogSTE4blJlc291cmNlQ29uZmlnIHwgSTE4blJlc291cmNlQ29uZmlnW10gPSBbXSwgdmVyc2lvbmVkU3VmZml4OiBib29sZWFuID0gZmFsc2UpIHtcbiAgaWYoIUFycmF5LmlzQXJyYXkocmVzb3VyY2VzKSlcbiAgICByZXNvdXJjZXMgPSBbcmVzb3VyY2VzXTtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBJMThOX0NPTkZJR19UT0tFTixcbiAgICB1c2VWYWx1ZTogeyByZXNvdXJjZXM6IFtcbiAgICAgIC8vIHsgcHJlZml4OiAnLi9hc3NldHMvaTE4bi8nLCBzdWZmaXg6ICcuanNvbicgfSxcbiAgICAgIC4uLnJlc291cmNlc1xuICAgIF0sIHZlcnNpb25lZFN1ZmZpeH1cbiAgfVxufVxuXG5jb25zdCBsaWJMYW5ndWFnZTogUmVjb3JkPHN0cmluZywgVHJhbnNsYXRpb25PYmplY3Q+ID0ge2VufTtcblxuZXhwb3J0IGNsYXNzIE11bHRpSTE4bkxvYWRlciBpbXBsZW1lbnRzIEkxOG5Mb2FkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgcmVzb3VyY2VzOiBJMThuUmVzb3VyY2VDb25maWdbXSA9IFtdLCBwcml2YXRlIHZlcnNpb25lZFN1ZmZpeDogYm9vbGVhbiA9IGZhbHNlKSB7fVxuXG4gIHByaXZhdGUgZ2V0U3VmZml4KHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZighdGhpcy52ZXJzaW9uZWRTdWZmaXgpXG4gICAgICByZXR1cm4gc3VmZml4O1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4gYCR7c3VmZml4fT92ZXJzaW9uPSR7dG9kYXkuZ2V0RnVsbFllYXIoKX0ke3RvZGF5LmdldE1vbnRoKCl9JHt0b2RheS5nZXREYXkoKX1gIGFzIHN0cmluZztcbiAgfVxuXG4gIGdldFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb25PYmplY3Q+IHtcbiAgICBjb25zdCBsaWJLZXlzID0gbGliTGFuZ3VhZ2VbbGFuZ10gfHwgbGliTGFuZ3VhZ2VbXCJlblwiXSB8fCB7fTtcbiAgICBjb25zdCBodHRwUmVxdWVzdHMkID0gZm9ya0pvaW4oXG4gICAgICB0aGlzLnJlc291cmNlcy5tYXAoY29uZmlnID0+XG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8VHJhbnNsYXRpb25PYmplY3Q+KFxuICAgICAgICAgIGAke2NvbmZpZy5wcmVmaXh9JHtsYW5nfSR7dGhpcy5nZXRTdWZmaXgoY29uZmlnLnN1ZmZpeCl9YFxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gaHR0cFJlcXVlc3RzJC5waXBlKFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubGliS2V5cyxcbiAgICAgICAgICAuLi5yZXMucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+ICh7IC4uLmFjYywgLi4uY3VycmVudCB9KSwge30pXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==