@libs-ui/utils 0.2.305 → 0.2.306-4

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.
package/dom.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { Renderer2 } from '@angular/core';
2
- import { IBoundingClientRect } from '@libs-ui/interfaces-types';
1
+ import { Renderer2 } from "@angular/core";
2
+ import { IBoundingClientRect } from "@libs-ui/interfaces-types";
3
3
  import DeviceDetector from 'device-detector-js';
4
- import Delta from 'quill-delta';
5
- import { Subject } from 'rxjs';
4
+ import Delta from "quill-delta";
5
+ import { Subject } from "rxjs";
6
6
  export declare const getDeviceInfo: () => DeviceDetector.DeviceDetectorResult;
7
7
  export declare const getPlatFromBrowser: () => string;
8
8
  export declare const getEventNameHandleClick: string;
package/esm2022/cache.mjs CHANGED
@@ -371,8 +371,9 @@ export class UtilsCache {
371
371
  resolve({ deleteSuccess: true });
372
372
  };
373
373
  request.onerror = (event) => {
374
- console.trace('Error deleting database:', event.target.error);
375
- resolve({ messageError: get(event.target.error, 'message'), deleteSuccess: false });
374
+ const error = event.target.error;
375
+ console.trace('Error deleting database:', error);
376
+ resolve({ messageError: get(error || {}, 'message'), deleteSuccess: false });
376
377
  };
377
378
  request.onblocked = () => {
378
379
  console.trace('Delete request is blocked');
@@ -381,4 +382,4 @@ export class UtilsCache {
381
382
  });
382
383
  }
383
384
  }
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUMsdURBQXVEO0FBR3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE1BQU0sT0FBTyxVQUFVO0lBQ2QsTUFBTSxDQUFVLHlCQUF5QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkQsTUFBTSxDQUFVLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sQ0FBVSxTQUFTLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDbkMsTUFBTSxDQUFDLHdCQUF3QixHQUFHLG1DQUFtQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQztJQUNuRCxNQUFNLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDbEQsTUFBTSxDQUFDLFVBQVUsQ0FBVztJQUM1QixNQUFNLENBQUMsT0FBTyxDQUE2QjtJQUMzQyxNQUFNLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQztJQUNoQyxNQUFNLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixNQUFNLENBQUMsU0FBUyxHQUFH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LENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO2dCQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxFQUFFLFlBQVksRUFBRSwyQkFBMkIsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFTLENBQUMsQ0FBQztZQUN0RixDQUFDLENBQUE7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IFRZUEVfTEFOR1VBR0VfU1VQUE9SVCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgVXRpbHNDb21tdW5pY2F0ZU1pY3JvIH0gZnJvbSAnLi9jb21tdW5pY2F0ZS1taWNybyc7XG5pbXBvcnQgeyBkZWNyeXB0LCBlbmNyeXB0LCBtZDUgfSBmcm9tICcuL2NyeXB0byc7XG5pbXBvcnQgeyBnZXRQbGF0RnJvbUJyb3dzZXIgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBpc0VtYmVkRnJhbWUgfSBmcm9tICcuL2Z1bmN0aW9uLWNoZWNrLWVtYmVkLWZyYW1lJztcbmltcG9ydCB7IGdldCwgaXNOaWwgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgVXRpbHNMYW5ndWFnZUNvbnN0YW50cyB9IGZyb20gJy4vbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4vdXVpZCc7XG5cbmV4cG9ydCBjbGFzcyBVdGlsc0NhY2hlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQUNIRV9FWFBJUkVfVElNRV9ERUZBVUxUID0gNSAqIDYwO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBQ0hFX0VYUElSRV9OT05FID0gLTE7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaWRTZXJ2aWNlID0gdXVpZCgpO1xuICBwdWJsaWMgc3RhdGljIHR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSA9ICdMSUJTX1VJX0NMRUFSX0xPQ0FMX1NUT1JBR0VfRVZFTlQnO1xuXG4gIHByaXZhdGUgc3RhdGljIGxhbmd1YWdlS2V5Q2FjaGUgPSAnU1IzeFFLeEhnZmZpQ2V2UFFScmFsZyc7XG4gIHByaXZhdGUgc3RhdGljIGxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbCA9IEFycmF5PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGRFdmVudD86IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIHN0b3JhZ2U6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuICBwcml2YXRlIHN0YXRpYyBkYk5hbWUgPSAnbGlicy11aS1jYWNoZSc7XG4gIHByaXZhdGUgc3RhdGljIGl0ZW1JbmRleEJ5S2V5ID0gJ2tleSc7XG4gIHByaXZhdGUgc3RhdGljIGRiVmVyc2lvbiA9IDE7XG4gIHByaXZhdGUgc3RhdGljIGRiOiBJREJEYXRhYmFzZSB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdChjb25maWc6IHsgaW5kZXhlZERCTmFtZT86IHN0cmluZywgbGFuZ3VhZ2VLZXlDYWNoZT86IHN0cmluZywgdHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlPzogc3RyaW5nLCBsaXN0S2V5S2VlcFdoZW5DbGVhckFsbD86IEFycmF5PHN0cmluZz4gfSkge1xuICAgIGlmICh0aGlzLmluaXRkRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbml0ZEV2ZW50ID0gdHJ1ZTtcbiAgICBpZiAoY29uZmlnLmluZGV4ZWREQk5hbWUpIHtcbiAgICAgIHRoaXMuZGJOYW1lID0gY29uZmlnLmluZGV4ZWREQk5hbWU7XG4gICAgfVxuICAgIGlmIChjb25maWcudHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlKSB7XG4gICAgICB0aGlzLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSA9IGNvbmZpZy50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2U7XG4gICAgfVxuICAgIGlmIChjb25maWcubGlzdEtleUtlZXBXaGVuQ2xlYXJBbGwpIHtcbiAgICAgIHRoaXMubGlzdEtleUtlZXBXaGVuQ2xlYXJBTGxsID0gY29uZmlnLmxpc3RLZXlLZWVwV2hlbkNsZWFyQWxsO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxhbmd1YWdlS2V5Q2FjaGUpIHtcbiAgICAgIHRoaXMubGFuZ3VhZ2VLZXlDYWNoZSA9IGNvbmZpZy5sYW5ndWFnZUtleUNhY2hlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0TGFuZyhsYW5nOiBUWVBFX0xBTkdVQUdFX1NVUFBPUlQpIHtcbiAgICBpZiAoIVV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuaXNTdXBwb3J0ZWQobGFuZykpIHtcbiAgICAgIHRocm93IEVycm9yKGBMYW5ndWFnZSBub3Qgc3VwcG9ydCAke2xhbmd9YCk7XG4gICAgfVxuICAgIHRoaXMuU2V0KHRoaXMubGFuZ3VhZ2VLZXlDYWNoZSwgbGFuZywgdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldExhbmcoKTogVFlQRV9MQU5HVUFHRV9TVVBQT1JUIHtcbiAgICByZXR1cm4gdGhpcy5HZXQodGhpcy5sYW5ndWFnZUtleUNhY2hlLCBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLmRlZmF1bHRMYW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5EQigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4odGhpcy5kYk5hbWUsIHRoaXMuZGJWZXJzaW9uKTtcblxuICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoZXZlbnQ6IElEQlZlcnNpb25DaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkYiA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xuXG4gICAgICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyh0aGlzLmRiTmFtZSkpIHtcbiAgICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRoaXMuZGJOYW1lLCB7IGtleVBhdGg6IHRoaXMuaXRlbUluZGV4QnlLZXkgfSk7XG5cbiAgICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCh0aGlzLml0ZW1JbmRleEJ5S2V5LCB0aGlzLml0ZW1JbmRleEJ5S2V5LCB7IHVuaXF1ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGIgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLnRyYWNlKCdFcnJvciBvcGVuaW5nIEluZGV4ZWREQjonLCBldmVudCk7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIGdldE9iamVjdFN0b3JlKCkge1xuICAgIGlmICghdGhpcy5kYikge1xuICAgICAgYXdhaXQgdGhpcy5vcGVuREIoKTtcbiAgICB9XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRiPy50cmFuc2FjdGlvbihbdGhpcy5kYk5hbWVdLCAncmVhZHdyaXRlJyk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZGJOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBMb2NhbFN0b3JhZ2UoKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cubG9jYWxTdG9yYWdlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBPUyA9IGdldFBsYXRGcm9tQnJvd3NlcigpO1xuXG4gICAgICAgIGlmIChPUy5pbmNsdWRlcygnU2FmYXJpJykgJiYgcGFyc2VGbG9hdChPUy5zcGxpdCgnICcpLnBvcCgpIHx8ICcwJykgPj0gMTYpIHtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmdldExvY2FsU3RvcmFnZUZha2VPblNhZmFyaSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKGBMb2NhbFN0b3JhZ2UgYCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2VPblNhZmFyaSgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnICYmICF0aGlzLnN0b3JhZ2UgJiYgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHsgLi4ubG9jYWxTdG9yYWdlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zdG9yYWdlIHx8IGlzTmlsKHRoaXMuc3RvcmFnZVtrZXldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLnN0b3JhZ2Vba2V5XSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2UoKSB7XG4gICAgaWYgKCF0aGlzLnN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmFnZVtrZXldID0gdmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBHZXRBc3luYzxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgIGtleSA9IGlzS2V5TUQ1ID8ga2V5IDogbWQ1KGtleSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgdGhpcy5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGtleSk7XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3QucmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGVmYXVsdF92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGVjcnlwdChyZXF1ZXN0LnJlc3VsdC52YWx1ZSkpO1xuXG4gICAgICAgIGlmIChkYXRhLmV4cGlyZSA9PT0gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSkge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuanNvbik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgICAgaWYgKGRhdGEuZXhwaXJlIDwgY3VycmVudE1pbGxpc2Vjb25kKSB7XG5cbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuanNvbik7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoYEdldCBrZXkgJHtrZXl9IEVycm9yLCByZXR1cm4gZGVmYXVsdCB2YWx1ZTogJHtkZWZhdWx0X3ZhbHVlfWApO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIEdldDxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSk6IFQgeyAvLyBzdXBwb3J0IGNobyBuaOG7r25nIGZpbGUga2jDtG5nIHRo4buDIGluamVjdCBVdGlsc0NhY2hlXG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLkdldERlZmF1bHRWYWx1ZUJ5U3BlY2lmaWNLZXkoa2V5LCBkZWZhdWx0X3ZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgY2FjaGVkRGF0YSA9IHRoaXMuTG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcblxuICAgIGlmICghY2FjaGVkRGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGVjcnlwdChjYWNoZWREYXRhKSk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA9PT0gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSkge1xuICAgICAgICByZXR1cm4gZGF0YS52YWx1ZSA/PyBkZWZhdWx0X3ZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA8IGN1cnJlbnRNaWxsaXNlY29uZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhLnZhbHVlO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUudHJhY2UoYEdldCBrZXkgJHtrZXl9IEVycm9yLCByZXR1cm4gZGVmYXVsdCB2YWx1ZTogJHtkZWZhdWx0X3ZhbHVlfWAsIGVycm9yKTtcblxuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7XG5cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2V0QXN5bmM8VCA9IGFueT4oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IHRoaXMuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4geyAvLyBzdXBwb3J0IGluamVjdCBVdGlsc0NhY2hlXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IHRoaXMuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAga2V5ID0gaXNLZXlNRDUgPyBrZXkgOiBtZDUoa2V5KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNaWxsaXNlY29uZCA9IGV4cGlyZVRpbWVCeVNlY29uZCA9PT0gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSA/IHRoaXMuQ0FDSEVfRVhQSVJFX05PTkUgOiAobmV3IERhdGUoKS52YWx1ZU9mKCkgLyAxMDAwKSArIGV4cGlyZVRpbWVCeVNlY29uZDtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgICAgIHZhbHVlOiBlbmNyeXB0KEpTT04uc3RyaW5naWZ5KHsganNvbjogdmFsdWUsIGV4cGlyZTogY3VycmVudE1pbGxpc2Vjb25kIH0pKSxcbiAgICAgICAgfTtcbiAgICAgICAgZGF0YVt0aGlzLml0ZW1JbmRleEJ5S2V5XSA9IGtleTtcblxuICAgICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgICAgY29uc29sZS50cmFjZShgQ2FuIG5vdCBvcGVuIG9iamVjdCBzdG9yZWApO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHsga2V5LCBtZXNzYWdlRXJyb3I6ICdDYW4gbm90IG9wZW4gb2JqZWN0IHN0b3JlJyB9IGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlPy5wdXQoZGF0YSk7XG4gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBTZXQga2V5ICR7a2V5fSBTdWNjZXNzYCk7XG4gICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCBhcyBhbnkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUudHJhY2UoYFNldCBrZXkgJHtrZXl9IEVycm9yYCk7XG4gICAgICAgICAgcmVzb2x2ZSh7IGtleSwgbWVzc2FnZUVycm9yOiBnZXQoZXJyb3IsICdtZXNzYWdlJykgfSBhcyBhbnkpO1xuICAgICAgICB9O1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKGBTZXQga2V5ICR7a2V5fSBFcnJvcmApO1xuICAgICAgICByZXNvbHZlKHsga2V5LCBtZXNzYWdlRXJyb3I6IGdldChlcnJvciwgJ21lc3NhZ2UnKSB9IGFzIGFueSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIHN0YXRpYyBTZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IHRoaXMuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCk6IGJvb2xlYW4geyAvLyBzdXBwb3J0IGNobyBuaOG7r25nIGZpbGUga2jDtG5nIGluamVjdCBVdGlsc0NhY2hlXG4gICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gZXhwaXJlVGltZUJ5U2Vjb25kID09PSB0aGlzLkNBQ0hFX0VYUElSRV9OT05FID8gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSA6IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAvIDEwMDApICsgZXhwaXJlVGltZUJ5U2Vjb25kO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBleHBpcmU6IGN1cnJlbnRNaWxsaXNlY29uZFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5Mb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKGBTZXQga2V5ICR7a2V5fSBFcnJvcmAsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIENsZWFyQXN5bmMoa2V5OiBzdHJpbmcsIGlzTUQ1ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgdGhpcy5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKGlzTUQ1ID8ga2V5IDogbWQ1KGtleSkpO1xuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSh7IGNsZWFyU3VjY2VzczogdHJ1ZSB9IGFzIGFueSk7XG4gICAgICB9O1xuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLnRyYWNlKCdFcnJvciBkZWxldGluZyBLZXk6JywgZ2V0KChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkuZXJyb3IsICdtZXNzYWdlJykpO1xuICAgICAgICByZXNvbHZlKHsgbWVzc2FnZUVycm9yOiBnZXQoKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvciwgJ21lc3NhZ2UnKSwgY2xlYXJTdWNjZXNzOiBmYWxzZSB9IGFzIGFueSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIENsZWFyKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5Mb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBDbGVhckFsbEFzeW5jKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCB0aGlzLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmNsZWFyKCk7XG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ2NsZWFyIGFsbCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcmVzb2x2ZSh7IGNsZWFyU3VjY2VzczogdHJ1ZSB9IGFzIGFueSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoJ0Vycm9yIGRlbGV0aW5nIGtleTonLCBnZXQoKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvciwgJ21lc3NhZ2UnKSk7XG4gICAgICAgIHJlc29sdmUoeyBtZXNzYWdlRXJyb3I6IGdldCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yLCAnbWVzc2FnZScpLCBjbGVhclN1Y2Nlc3M6IGZhbHNlIH0gYXMgYW55KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgQ2xlYXJBbGwoKSB7XG4gICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSxcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBpZEV2ZW50OiB0aGlzLmlkU2VydmljZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBbLi4udGhpcy5saXN0S2V5S2VlcFdoZW5DbGVhckFMbGxdO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuTG9jYWxTdG9yYWdlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKCdrYy1jYWxsYmFjay0nKSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHN0b3JlcyA9IHRoaXMuR2V0RGF0YUJ5S2V5cyhBcnJheS5mcm9tKGtleXMpKTtcblxuICAgIHRoaXMuTG9jYWxTdG9yYWdlLmNsZWFyKCk7XG5cbiAgICB0aGlzLlNldERhdGFCeUtleShzdG9yZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgR2V0RGF0YUJ5S2V5cyhrZXlzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgY29uc3Qgc3RvcmVzID0gbmV3IE1hcCgpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgICAgc3RvcmVzLnNldChrZXksIHRoaXMuTG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RvcmVzLnNldChrZXksIHRoaXMuR2V0KGtleSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0b3JlcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIFNldERhdGFCeUtleShzdG9yZXM6IE1hcDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdG9yZXMuZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIHRoaXMuTG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gdGhpcy5sYW5ndWFnZUtleUNhY2hlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExhbmcodmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5TZXQoa2V5LCB2YWx1ZSwgdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZUtleVN0YXJ0V2l0aEFzeW5jKGtleUNhY2hlU3RhcnRXaXRoOiBzdHJpbmcsIGlzS2V5TUQ1ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgdGhpcy5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH1cblxuICAgICAgLy8gTOG6pXkgdOG6pXQgY+G6oyBjw6FjIGtleXMgdOG7qyBpbmRleFxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldEFsbCgpO1xuXG4gICAgICBrZXlDYWNoZVN0YXJ0V2l0aCA9IGlzS2V5TUQ1ID8ga2V5Q2FjaGVTdGFydFdpdGggOiBtZDUoa2V5Q2FjaGVTdGFydFdpdGgpO1xuXG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gZS50YXJnZXQucmVzdWx0IGFzIEFycmF5PGFueT47XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5mb3JFYWNoKG9iaiA9PiB7XG4gICAgICAgICAgaWYgKG9ialt0aGlzLml0ZW1JbmRleEJ5S2V5XS5zdGFydHNXaXRoKGtleUNhY2hlU3RhcnRXaXRoKSkge1xuICAgICAgICAgICAgdGhpcy5DbGVhckFzeW5jKG9ialt0aGlzLml0ZW1JbmRleEJ5S2V5XSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSh7fSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZUtleVN0YXJ0V2l0aChrZXlDYWNoZTogc3RyaW5nLCBpc01ENSA9IGZhbHNlKSB7XG4gICAga2V5Q2FjaGUgPSBpc01ENSA/IG1kNShrZXlDYWNoZSkgOiBrZXlDYWNoZTtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5Mb2NhbFN0b3JhZ2UpO1xuXG4gICAgaWYgKCFrZXlzIHx8ICFrZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGtleUNhY2hlKSkge1xuICAgICAgICB0aGlzLkNsZWFyKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZURhdGFiYXNlSW5kZXhEQihkYk5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGRiTmFtZSA9IChkYk5hbWUgfHwgdGhpcy5kYk5hbWUpIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJOYW1lIGFzIHN0cmluZyk7XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBjb25zb2xlLnRyYWNlKCdEYXRhYmFzZSBkZWxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICByZXNvbHZlKHsgZGVsZXRlU3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS50cmFjZSgnRXJyb3IgZGVsZXRpbmcgZGF0YWJhc2U6JywgKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICAgIHJlc29sdmUoeyBtZXNzYWdlRXJyb3I6IGdldCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yLCAnbWVzc2FnZScpLCBkZWxldGVTdWNjZXNzOiBmYWxzZSB9IGFzIGFueSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS50cmFjZSgnRGVsZXRlIHJlcXVlc3QgaXMgYmxvY2tlZCcpO1xuICAgICAgICByZXNvbHZlKHsgbWVzc2FnZUVycm9yOiAnRGVsZXRlIHJlcXVlc3QgaXMgYmxvY2tlZCcsIGRlbGV0ZVN1Y2Nlc3M6IGZhbHNlIH0gYXMgYW55KTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9XG59XG4iXX0=
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUMsdURBQXVEO0FBR3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE1BQU0sT0FBTyxVQUFVO0lBQ2QsTUFBTSxDQUFVLHlCQUF5QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkQsTUFBTSxDQUFVLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sQ0FBVSxTQUFTLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDbkMsTUFBTSxDQUFDLHdCQUF3QixHQUFHLG1DQUFtQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQztJQUNuRCxNQUFNLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDbEQsTUFBTSxDQUFDLFVBQVUsQ0FBVztJQUM1QixNQUFNLENBQUMsT0FBTyxDQUE2QjtJQUMzQyxNQUFNLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQztJQUNoQyxNQUFNLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixNQUFNLENBQUMsU0FBUyxHQUFH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SyxFQUFTLENBQUMsQ0FBQztZQUM3RyxDQUFDLENBQUM7WUFFRixPQUFPLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBUyxDQUFDLENBQUM7WUFDdEYsQ0FBQyxDQUFBO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5pbXBvcnQgeyBJRXZlbnQsIFRZUEVfTEFOR1VBR0VfU1VQUE9SVCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgVXRpbHNDb21tdW5pY2F0ZU1pY3JvIH0gZnJvbSAnLi9jb21tdW5pY2F0ZS1taWNybyc7XG5pbXBvcnQgeyBkZWNyeXB0LCBlbmNyeXB0LCBtZDUgfSBmcm9tICcuL2NyeXB0byc7XG5pbXBvcnQgeyBnZXRQbGF0RnJvbUJyb3dzZXIgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBpc0VtYmVkRnJhbWUgfSBmcm9tICcuL2Z1bmN0aW9uLWNoZWNrLWVtYmVkLWZyYW1lJztcbmltcG9ydCB7IGdldCwgaXNOaWwgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgVXRpbHNMYW5ndWFnZUNvbnN0YW50cyB9IGZyb20gJy4vbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4vdXVpZCc7XG5cbmV4cG9ydCBjbGFzcyBVdGlsc0NhY2hlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQUNIRV9FWFBJUkVfVElNRV9ERUZBVUxUID0gNSAqIDYwO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBQ0hFX0VYUElSRV9OT05FID0gLTE7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaWRTZXJ2aWNlID0gdXVpZCgpO1xuICBwdWJsaWMgc3RhdGljIHR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSA9ICdMSUJTX1VJX0NMRUFSX0xPQ0FMX1NUT1JBR0VfRVZFTlQnO1xuXG4gIHByaXZhdGUgc3RhdGljIGxhbmd1YWdlS2V5Q2FjaGUgPSAnU1IzeFFLeEhnZmZpQ2V2UFFScmFsZyc7XG4gIHByaXZhdGUgc3RhdGljIGxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbCA9IEFycmF5PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGRFdmVudD86IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIHN0b3JhZ2U6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuICBwcml2YXRlIHN0YXRpYyBkYk5hbWUgPSAnbGlicy11aS1jYWNoZSc7XG4gIHByaXZhdGUgc3RhdGljIGl0ZW1JbmRleEJ5S2V5ID0gJ2tleSc7XG4gIHByaXZhdGUgc3RhdGljIGRiVmVyc2lvbiA9IDE7XG4gIHByaXZhdGUgc3RhdGljIGRiOiBJREJEYXRhYmFzZSB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdChjb25maWc6IHsgaW5kZXhlZERCTmFtZT86IHN0cmluZywgbGFuZ3VhZ2VLZXlDYWNoZT86IHN0cmluZywgdHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlPzogc3RyaW5nLCBsaXN0S2V5S2VlcFdoZW5DbGVhckFsbD86IEFycmF5PHN0cmluZz4gfSkge1xuICAgIGlmICh0aGlzLmluaXRkRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbml0ZEV2ZW50ID0gdHJ1ZTtcbiAgICBpZiAoY29uZmlnLmluZGV4ZWREQk5hbWUpIHtcbiAgICAgIHRoaXMuZGJOYW1lID0gY29uZmlnLmluZGV4ZWREQk5hbWU7XG4gICAgfVxuICAgIGlmIChjb25maWcudHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlKSB7XG4gICAgICB0aGlzLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSA9IGNvbmZpZy50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2U7XG4gICAgfVxuICAgIGlmIChjb25maWcubGlzdEtleUtlZXBXaGVuQ2xlYXJBbGwpIHtcbiAgICAgIHRoaXMubGlzdEtleUtlZXBXaGVuQ2xlYXJBTGxsID0gY29uZmlnLmxpc3RLZXlLZWVwV2hlbkNsZWFyQWxsO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxhbmd1YWdlS2V5Q2FjaGUpIHtcbiAgICAgIHRoaXMubGFuZ3VhZ2VLZXlDYWNoZSA9IGNvbmZpZy5sYW5ndWFnZUtleUNhY2hlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0TGFuZyhsYW5nOiBUWVBFX0xBTkdVQUdFX1NVUFBPUlQpIHtcbiAgICBpZiAoIVV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuaXNTdXBwb3J0ZWQobGFuZykpIHtcbiAgICAgIHRocm93IEVycm9yKGBMYW5ndWFnZSBub3Qgc3VwcG9ydCAke2xhbmd9YCk7XG4gICAgfVxuICAgIHRoaXMuU2V0KHRoaXMubGFuZ3VhZ2VLZXlDYWNoZSwgbGFuZywgdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldExhbmcoKTogVFlQRV9MQU5HVUFHRV9TVVBQT1JUIHtcbiAgICByZXR1cm4gdGhpcy5HZXQodGhpcy5sYW5ndWFnZUtleUNhY2hlLCBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLmRlZmF1bHRMYW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5EQigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4odGhpcy5kYk5hbWUsIHRoaXMuZGJWZXJzaW9uKTtcblxuICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoZXZlbnQ6IElEQlZlcnNpb25DaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkYiA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xuXG4gICAgICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyh0aGlzLmRiTmFtZSkpIHtcbiAgICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRoaXMuZGJOYW1lLCB7IGtleVBhdGg6IHRoaXMuaXRlbUluZGV4QnlLZXkgfSk7XG5cbiAgICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCh0aGlzLml0ZW1JbmRleEJ5S2V5LCB0aGlzLml0ZW1JbmRleEJ5S2V5LCB7IHVuaXF1ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGIgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLnRyYWNlKCdFcnJvciBvcGVuaW5nIEluZGV4ZWREQjonLCBldmVudCk7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIGdldE9iamVjdFN0b3JlKCkge1xuICAgIGlmICghdGhpcy5kYikge1xuICAgICAgYXdhaXQgdGhpcy5vcGVuREIoKTtcbiAgICB9XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRiPy50cmFuc2FjdGlvbihbdGhpcy5kYk5hbWVdLCAncmVhZHdyaXRlJyk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZGJOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBMb2NhbFN0b3JhZ2UoKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cubG9jYWxTdG9yYWdlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBPUyA9IGdldFBsYXRGcm9tQnJvd3NlcigpO1xuXG4gICAgICAgIGlmIChPUy5pbmNsdWRlcygnU2FmYXJpJykgJiYgcGFyc2VGbG9hdChPUy5zcGxpdCgnICcpLnBvcCgpIHx8ICcwJykgPj0gMTYpIHtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmdldExvY2FsU3RvcmFnZUZha2VPblNhZmFyaSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKGBMb2NhbFN0b3JhZ2UgYCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2VPblNhZmFyaSgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnICYmICF0aGlzLnN0b3JhZ2UgJiYgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHsgLi4ubG9jYWxTdG9yYWdlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zdG9yYWdlIHx8IGlzTmlsKHRoaXMuc3RvcmFnZVtrZXldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLnN0b3JhZ2Vba2V5XSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2UoKSB7XG4gICAgaWYgKCF0aGlzLnN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmFnZVtrZXldID0gdmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBHZXRBc3luYzxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgIGtleSA9IGlzS2V5TUQ1ID8ga2V5IDogbWQ1KGtleSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgdGhpcy5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGtleSk7XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3QucmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGVmYXVsdF92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGVjcnlwdChyZXF1ZXN0LnJlc3VsdC52YWx1ZSkpO1xuXG4gICAgICAgIGlmIChkYXRhLmV4cGlyZSA9PT0gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSkge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuanNvbik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgICAgaWYgKGRhdGEuZXhwaXJlIDwgY3VycmVudE1pbGxpc2Vjb25kKSB7XG5cbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuanNvbik7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoYEdldCBrZXkgJHtrZXl9IEVycm9yLCByZXR1cm4gZGVmYXVsdCB2YWx1ZTogJHtkZWZhdWx0X3ZhbHVlfWApO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIEdldDxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSk6IFQgeyAvLyBzdXBwb3J0IGNobyBuaOG7r25nIGZpbGUga2jDtG5nIHRo4buDIGluamVjdCBVdGlsc0NhY2hlXG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLkdldERlZmF1bHRWYWx1ZUJ5U3BlY2lmaWNLZXkoa2V5LCBkZWZhdWx0X3ZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgY2FjaGVkRGF0YSA9IHRoaXMuTG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcblxuICAgIGlmICghY2FjaGVkRGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGVjcnlwdChjYWNoZWREYXRhKSk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA9PT0gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSkge1xuICAgICAgICByZXR1cm4gZGF0YS52YWx1ZSA/PyBkZWZhdWx0X3ZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA8IGN1cnJlbnRNaWxsaXNlY29uZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhLnZhbHVlO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUudHJhY2UoYEdldCBrZXkgJHtrZXl9IEVycm9yLCByZXR1cm4gZGVmYXVsdCB2YWx1ZTogJHtkZWZhdWx0X3ZhbHVlfWAsIGVycm9yKTtcblxuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7XG5cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2V0QXN5bmM8VCA9IGFueT4oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IHRoaXMuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4geyAvLyBzdXBwb3J0IGluamVjdCBVdGlsc0NhY2hlXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IHRoaXMuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAga2V5ID0gaXNLZXlNRDUgPyBrZXkgOiBtZDUoa2V5KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNaWxsaXNlY29uZCA9IGV4cGlyZVRpbWVCeVNlY29uZCA9PT0gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSA/IHRoaXMuQ0FDSEVfRVhQSVJFX05PTkUgOiAobmV3IERhdGUoKS52YWx1ZU9mKCkgLyAxMDAwKSArIGV4cGlyZVRpbWVCeVNlY29uZDtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgICAgIHZhbHVlOiBlbmNyeXB0KEpTT04uc3RyaW5naWZ5KHsganNvbjogdmFsdWUsIGV4cGlyZTogY3VycmVudE1pbGxpc2Vjb25kIH0pKSxcbiAgICAgICAgfTtcbiAgICAgICAgZGF0YVt0aGlzLml0ZW1JbmRleEJ5S2V5XSA9IGtleTtcblxuICAgICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgICAgY29uc29sZS50cmFjZShgQ2FuIG5vdCBvcGVuIG9iamVjdCBzdG9yZWApO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHsga2V5LCBtZXNzYWdlRXJyb3I6ICdDYW4gbm90IG9wZW4gb2JqZWN0IHN0b3JlJyB9IGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlPy5wdXQoZGF0YSk7XG4gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBTZXQga2V5ICR7a2V5fSBTdWNjZXNzYCk7XG4gICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCBhcyBhbnkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUudHJhY2UoYFNldCBrZXkgJHtrZXl9IEVycm9yYCk7XG4gICAgICAgICAgcmVzb2x2ZSh7IGtleSwgbWVzc2FnZUVycm9yOiBnZXQoZXJyb3IgYXMgSUV2ZW50LCAnbWVzc2FnZScpIH0gYXMgYW55KTtcbiAgICAgICAgfTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS50cmFjZShgU2V0IGtleSAke2tleX0gRXJyb3JgKTtcbiAgICAgICAgcmVzb2x2ZSh7IGtleSwgbWVzc2FnZUVycm9yOiBnZXQoZXJyb3IsICdtZXNzYWdlJykgfSBhcyBhbnkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBzdGF0aWMgU2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBleHBpcmVUaW1lQnlTZWNvbmQgPSB0aGlzLkNBQ0hFX0VYUElSRV9USU1FX0RFRkFVTFQpOiBib29sZWFuIHsgLy8gc3VwcG9ydCBjaG8gbmjhu69uZyBmaWxlIGtow7RuZyBpbmplY3QgVXRpbHNDYWNoZVxuICAgIGNvbnN0IGN1cnJlbnRNaWxsaXNlY29uZCA9IGV4cGlyZVRpbWVCeVNlY29uZCA9PT0gdGhpcy5DQUNIRV9FWFBJUkVfTk9ORSA/IHRoaXMuQ0FDSEVfRVhQSVJFX05PTkUgOiAobmV3IERhdGUoKS52YWx1ZU9mKCkgLyAxMDAwKSArIGV4cGlyZVRpbWVCeVNlY29uZDtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZXhwaXJlOiBjdXJyZW50TWlsbGlzZWNvbmRcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuTG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBlbmNyeXB0KEpTT04uc3RyaW5naWZ5KGRhdGEpKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS50cmFjZShgU2V0IGtleSAke2tleX0gRXJyb3JgLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBDbGVhckFzeW5jKGtleTogc3RyaW5nLCBpc01ENSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IHRoaXMuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAgaWYgKCFvYmplY3RTdG9yZSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpc01ENSA/IGtleSA6IG1kNShrZXkpKTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoeyBjbGVhclN1Y2Nlc3M6IHRydWUgfSBhcyBhbnkpO1xuICAgICAgfTtcbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS50cmFjZSgnRXJyb3IgZGVsZXRpbmcgS2V5OicsIGdldCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yLCAnbWVzc2FnZScpKTtcbiAgICAgICAgcmVzb2x2ZSh7IG1lc3NhZ2VFcnJvcjogZ2V0KChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkuZXJyb3IsICdtZXNzYWdlJyksIGNsZWFyU3VjY2VzczogZmFsc2UgfSBhcyBhbnkpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBDbGVhcihrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJBbGxBc3luYygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgdGhpcy5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5jbGVhcigpO1xuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjbGVhciBhbGwgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIHJlc29sdmUoeyBjbGVhclN1Y2Nlc3M6IHRydWUgfSBhcyBhbnkpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLnRyYWNlKCdFcnJvciBkZWxldGluZyBrZXk6JywgZ2V0KChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkuZXJyb3IsICdtZXNzYWdlJykpO1xuICAgICAgICByZXNvbHZlKHsgbWVzc2FnZUVycm9yOiBnZXQoKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvciwgJ21lc3NhZ2UnKSwgY2xlYXJTdWNjZXNzOiBmYWxzZSB9IGFzIGFueSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIENsZWFyQWxsKCkge1xuICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgdHlwZTogdGhpcy50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UsXG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgaWRFdmVudDogdGhpcy5pZFNlcnZpY2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGRhdGEpO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gWy4uLnRoaXMubGlzdEtleUtlZXBXaGVuQ2xlYXJBTGxsXTtcbiAgICBPYmplY3Qua2V5cyh0aGlzLkxvY2FsU3RvcmFnZSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzdG9yZXMgPSB0aGlzLkdldERhdGFCeUtleXMoQXJyYXkuZnJvbShrZXlzKSk7XG5cbiAgICB0aGlzLkxvY2FsU3RvcmFnZS5jbGVhcigpO1xuXG4gICAgdGhpcy5TZXREYXRhQnlLZXkoc3RvcmVzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIEdldERhdGFCeUtleXMoa2V5czogQXJyYXk8c3RyaW5nPikge1xuICAgIGNvbnN0IHN0b3JlcyA9IG5ldyBNYXAoKTtcblxuICAgIGtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIHN0b3Jlcy5zZXQoa2V5LCB0aGlzLkxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0b3Jlcy5zZXQoa2V5LCB0aGlzLkdldChrZXkpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzdG9yZXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBTZXREYXRhQnlLZXkoc3RvcmVzOiBNYXA8c3RyaW5nLCBhbnk+KSB7XG4gICAgc3RvcmVzLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKCdrYy1jYWxsYmFjay0nKSkge1xuICAgICAgICB0aGlzLkxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09IHRoaXMubGFuZ3VhZ2VLZXlDYWNoZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMYW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuU2V0KGtleSwgdmFsdWUsIHRoaXMuQ0FDSEVfRVhQSVJFX05PTkUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEZWxldGVLZXlTdGFydFdpdGhBc3luYyhrZXlDYWNoZVN0YXJ0V2l0aDogc3RyaW5nLCBpc0tleU1ENSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IHRoaXMuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAgaWYgKCFvYmplY3RTdG9yZSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh7fSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEzhuqV5IHThuqV0IGPhuqMgY8OhYyBrZXlzIHThu6sgaW5kZXhcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXRBbGwoKTtcblxuICAgICAga2V5Q2FjaGVTdGFydFdpdGggPSBpc0tleU1ENSA/IGtleUNhY2hlU3RhcnRXaXRoIDogbWQ1KGtleUNhY2hlU3RhcnRXaXRoKTtcblxuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGUudGFyZ2V0LnJlc3VsdCBhcyBBcnJheTxhbnk+O1xuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGEuZm9yRWFjaChvYmogPT4ge1xuICAgICAgICAgIGlmIChvYmpbdGhpcy5pdGVtSW5kZXhCeUtleV0uc3RhcnRzV2l0aChrZXlDYWNoZVN0YXJ0V2l0aCkpIHtcbiAgICAgICAgICAgIHRoaXMuQ2xlYXJBc3luYyhvYmpbdGhpcy5pdGVtSW5kZXhCeUtleV0sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh7fSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEZWxldGVLZXlTdGFydFdpdGgoa2V5Q2FjaGU6IHN0cmluZywgaXNNRDUgPSBmYWxzZSkge1xuICAgIGtleUNhY2hlID0gaXNNRDUgPyBtZDUoa2V5Q2FjaGUpIDoga2V5Q2FjaGU7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuTG9jYWxTdG9yYWdlKTtcblxuICAgIGlmICgha2V5cyB8fCAha2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChrZXlDYWNoZSkpIHtcbiAgICAgICAgdGhpcy5DbGVhcihrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEZWxldGVEYXRhYmFzZUluZGV4REIoZGJOYW1lPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBkYk5hbWUgPSAoZGJOYW1lIHx8IHRoaXMuZGJOYW1lKSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRiTmFtZSBhcyBzdHJpbmcpO1xuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS50cmFjZSgnRGF0YWJhc2UgZGVsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcmVzb2x2ZSh7IGRlbGV0ZVN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcjtcbiAgICAgICAgY29uc29sZS50cmFjZSgnRXJyb3IgZGVsZXRpbmcgZGF0YWJhc2U6JywgZXJyb3IpO1xuICAgICAgICByZXNvbHZlKHsgbWVzc2FnZUVycm9yOiBnZXQoZXJyb3IgYXMgUmVjb3JkPHN0cmluZywgYW55PiB8fCB7fSwgJ21lc3NhZ2UnKSwgZGVsZXRlU3VjY2VzczogZmFsc2UgfSBhcyBhbnkpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoJ0RlbGV0ZSByZXF1ZXN0IGlzIGJsb2NrZWQnKTtcbiAgICAgICAgcmVzb2x2ZSh7IG1lc3NhZ2VFcnJvcjogJ0RlbGV0ZSByZXF1ZXN0IGlzIGJsb2NrZWQnLCBkZWxldGVTdWNjZXNzOiBmYWxzZSB9IGFzIGFueSk7XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfVxufVxuIl19
package/esm2022/dom.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import DeviceDetector from 'device-detector-js';
2
- import Quill from 'quill';
3
- import { finalize, fromEvent, lastValueFrom, mergeMap, startWith, takeUntil, tap, timer } from 'rxjs';
4
- import { decodeEscapeHtml } from './format-text';
2
+ import Quill from "quill";
3
+ import { finalize, fromEvent, lastValueFrom, mergeMap, startWith, takeUntil, tap, timer } from "rxjs";
4
+ import { decodeEscapeHtml } from "./format-text";
5
5
  const deviceDetector = new DeviceDetector();
6
6
  const parser = new DOMParser();
7
7
  const quill = new Quill(document.createElement('div'));
@@ -260,4 +260,4 @@ export const insertContentWithRange = (content, savedRange, element) => {
260
260
  selection.removeAllRanges();
261
261
  selection.addRange(savedRange);
262
262
  };
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sY0FBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxhQUFhLEVBQ2IsUUFBUSxFQUNSLFNBQVMsRUFFVCxTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFDTixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7QUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsR0FBRyxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ25DLElBQUksb0JBQW9CLEdBQUcsVUFB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QUFDLENBQUM7SUFDaEMsZ0RBQWdEO0lBQ2hELElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IERldmljZURldGVjdG9yIGZyb20gJ2RldmljZS1kZXRlY3Rvci1qcyc7XG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xuaW1wb3J0IERlbHRhIGZyb20gJ3F1aWxsLWRlbHRhJztcbmltcG9ydCB7XG4gIGZpbmFsaXplLFxuICBmcm9tRXZlbnQsXG4gIGxhc3RWYWx1ZUZyb20sXG4gIG1lcmdlTWFwLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB0aW1lclxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlY29kZUVzY2FwZUh0bWwgfSBmcm9tICcuL2Zvcm1hdC10ZXh0JztcblxuY29uc3QgZGV2aWNlRGV0ZWN0b3IgPSBuZXcgRGV2aWNlRGV0ZWN0b3IoKTtcbmNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbmNvbnN0IHF1aWxsID0gbmV3IFF1aWxsKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblxuZXhwb3J0IGNvbnN0IGdldERldmljZUluZm8gPSAoKSA9PiB7XG4gIHJldHVybiBkZXZpY2VEZXRlY3Rvci5wYXJzZSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldFBsYXRGcm9tQnJvd3NlciA9ICgpID0+IHtcbiAgY29uc3QgaW5mbyA9IGdldERldmljZUluZm8oKTtcbiAgcmV0dXJuIGAke2luZm8uY2xpZW50Py5uYW1lfSAke2luZm8uY2xpZW50Py52ZXJzaW9ufWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnROYW1lSGFuZGxlQ2xpY2sgPSAoKCkgPT4ge1xuICBjb25zdCBkZXZpY2VJbmZvID0gZ2V0RGV2aWNlSW5mbygpO1xuICBsZXQgbmFtZUV2ZW50SGFuZGxlQ2xpY2sgPSBkZXZpY2VJbmZvLmRldmljZT8udHlwZSA9PT0gJ2Rlc2t0b3AnID8gJ2NsaWNrJyA6ICd0b3VjaHN0YXJ0JztcbiAgaWYgKCdvbnBvaW50ZXJkb3duJyBpbiB3aW5kb3cpIHtcbiAgICBuYW1lRXZlbnRIYW5kbGVDbGljayA9ICdwb2ludGVyZG93bic7XG4gIH1cblxuICByZXR1cm4gbmFtZUV2ZW50SGFuZGxlQ2xpY2s7XG59KSgpO1xuXG5leHBvcnQgY29uc3QgZ2V0RG9jdW1lbnRCeVN0cmluZyA9IChodG1sU3RyOiBzdHJpbmcpOiBEb2N1bWVudCA9PiB7XG4gIHJldHVybiBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGh0bWxTdHIsICd0ZXh0L2h0bWwnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QgPSAoXG4gIHJlY3Q6IElCb3VuZGluZ0NsaWVudFJlY3Rcbik6IElCb3VuZGluZ0NsaWVudFJlY3QgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdFsndG9wJ10sXG4gICAgbGVmdDogcmVjdFsnbGVmdCddLFxuICAgIHdpZHRoOiByZWN0Wyd3aWR0aCddLFxuICAgIGhlaWdodDogcmVjdFsnaGVpZ2h0J10sXG4gICAgYm90dG9tOiByZWN0Wydib3R0b20nXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRTdHlsZXNFbGVtZW50ID0gKFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIHN0eWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgcmVuZGVyMjogUmVuZGVyZXIyXG4pOiB2b2lkID0+IHtcbiAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT5cbiAgICByZW5kZXIyLnNldFN0eWxlKGVsLCBrZXksIHN0eWxlc1trZXldKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZpZXdwb3J0ID0gKFxuICB3aW46IFdpbmRvdyA9IHdpbmRvd1xuKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgZG9jID0gd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICBib2R5ID0gd2luLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0sXG4gICAgdyA9IHdpbi5pbm5lcldpZHRoIHx8IGRvYy5jbGllbnRXaWR0aCB8fCBib2R5LmNsaWVudFdpZHRoLFxuICAgIGggPSB3aW4uaW5uZXJIZWlnaHQgfHwgZG9jLmNsaWVudEhlaWdodCB8fCBib2R5LmNsaWVudEhlaWdodDtcblxuICByZXR1cm4geyB3aWR0aDogdywgaGVpZ2h0OiBoIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q2FyZXRQb3NpdGlvbiA9IChcbiAgZWxlbWVudDogSFRNTFRleHRBcmVhRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQsXG4gIHBvc2l0aW9uOiBudW1iZXJcbik6IHZvaWQgPT4ge1xuICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZWxlbWVudC5mb2N1cygpO1xuICBlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uLCBwb3NpdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaWV3SW5TY3JlZW4gPSAoXG4gIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBlbGVtZW50U2Nyb2xsPzogSFRNTEVsZW1lbnQsXG4gIG1heFRvcExlZnQ/OiB7IHRvcD86IG51bWJlcjsgbGVmdD86IG51bWJlciB9XG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFjb250YWluZXIgfHwgIWVsZW1lbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByZWN0Q29udGFpbmVyID0gY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0KFxuICAgIGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICApO1xuXG4gIGlmIChlbGVtZW50U2Nyb2xsKSB7XG4gICAgY29uc3QgcmVjdEVsZW1lbnRTY3JvbGwgPSBlbGVtZW50U2Nyb2xsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmVjdENvbnRhaW5lclsnbGVmdCddID0gcmVjdEVsZW1lbnRTY3JvbGwubGVmdDtcbiAgICByZWN0Q29udGFpbmVyWyd0b3AnXSA9IHJlY3RFbGVtZW50U2Nyb2xsLnRvcDtcbiAgfVxuXG4gIGNvbnN0IHJlY3RFbGVtZW50ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IHJlY3RFbGVtZW50O1xuICBjb25zdCB0b3BDb250YWluZXIgPSByZWN0Q29udGFpbmVyWyd0b3AnXTtcbiAgY29uc3QgbGVmdENvbnRhaW5lciA9IHJlY3RDb250YWluZXJbJ2xlZnQnXTtcbiAgY29uc3Qgd2lkdGhDb250YWluZXIgPSByZWN0Q29udGFpbmVyWyd3aWR0aCddO1xuICBjb25zdCBoZWlnaHRDb250YWluZXIgPSByZWN0Q29udGFpbmVyWydoZWlnaHQnXTtcbiAgY29uc3Qgc2Nyb2xsVG9wQ29udGFpbmVyID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3Qgc2Nyb2xsTGVmdENvbnRhaW5lciA9IGNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICBjb25zdCBsaW1pdFRvcCA9IHRvcENvbnRhaW5lciArIHNjcm9sbFRvcENvbnRhaW5lciArIGhlaWdodENvbnRhaW5lcjtcbiAgY29uc3QgbGltaXRMZWZ0ID0gbGVmdENvbnRhaW5lciArIHNjcm9sbExlZnRDb250YWluZXIgKyB3aWR0aENvbnRhaW5lcjtcblxuICBjb25zdCBtYXhUb3BJdGVtID0gdG9wICsgKG1heFRvcExlZnQ/LnRvcCB8fCAwKTtcbiAgY29uc3QgbWF4TGVmdEl0ZW0gPSBsZWZ0ICsgKG1heFRvcExlZnQ/LmxlZnQgfHwgMCk7XG5cbiAgaWYgKFxuICAgIHRvcENvbnRhaW5lciA8PSBtYXhUb3BJdGVtICYmXG4gICAgbWF4VG9wSXRlbSA8PSBsaW1pdFRvcCAmJlxuICAgIGxlZnRDb250YWluZXIgPD0gbWF4TGVmdEl0ZW0gJiZcbiAgICBtYXhMZWZ0SXRlbSA8PSBsaW1pdExlZnRcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciA9IChcbiAgbW91c2VQb3NpdGlvbjogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9LFxuICBlbGVtZW50PzogSFRNTEVsZW1lbnQsXG4gIHJlY3Q/OiBET01SZWN0XG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFlbGVtZW50ICYmICFyZWN0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHJlY3RFbGVtZW50ID1cbiAgICByZWN0IHx8IGVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHx8ICh7fSBhcyBET01SZWN0KTtcbiAgY29uc3QgeyBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQgfSA9IHJlY3RFbGVtZW50O1xuICBjb25zdCBsaW1pdExlZnQgPSBsZWZ0ICsgd2lkdGg7XG4gIGNvbnN0IGxpbWl0VG9wID0gdG9wICsgaGVpZ2h0O1xuICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IG1vdXNlUG9zaXRpb247XG4gIGlmIChcbiAgICBsZWZ0IDw9IGNsaWVudFggJiZcbiAgICBjbGllbnRYIDw9IGxpbWl0TGVmdCAmJlxuICAgIHRvcCA8PSBjbGllbnRZICYmXG4gICAgY2xpZW50WSA8PSBsaW1pdFRvcFxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREcmFnRXZlbnRCeUVsZW1lbnQgPSAoY29uZmlnOiB7XG4gIGVsZW1lbnRNb3VzZURvd246IEhUTUxFbGVtZW50O1xuICBmdW5jdGlvbk1vdXNlRG93bj86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgaXNTdGFydFdpdGhNb3VzZURvd25FdmVudD86IGJvb2xlYW47XG4gIGVsZW1lbnRNb3VzZU1vdmU/OiBIVE1MRWxlbWVudDtcbiAgZnVuY3Rpb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIGVsZW1lbnRNb3VzZVVwPzogSFRNTEVsZW1lbnQ7XG4gIGZ1bmN0aW9uTW91c2VVcD86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgb25EZXN0cm95OiBTdWJqZWN0PGFueT47XG59KSA9PiB7XG4gIGxldCB0aW1lcjogbnVtYmVyO1xuICBjb25zdCBhZGRDbGFzcyA9ICgpID0+IHtcbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCchc2VsZWN0LW5vbmUnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnIWN1cnNvci1ncmFiYmluZycpO1xuICAgIH0sIDI1MCk7XG4gIH07XG4gIGNvbnN0IHJlbW92ZUNsYXNzID0gKCkgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnIXNlbGVjdC1ub25lJyk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCchY3Vyc29yLWdyYWJiaW5nJyk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfTtcbiAgZnJvbUV2ZW50KGNvbmZpZy5lbGVtZW50TW91c2VEb3duLCAnbW91c2VsZWF2ZScpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjdXJzb3ItcG9pbnRlcicpKSxcbiAgICAgIHRha2VVbnRpbChjb25maWcub25EZXN0cm95KVxuICAgIClcbiAgICAuc3Vic2NyaWJlKCk7XG4gIGZyb21FdmVudChjb25maWcuZWxlbWVudE1vdXNlRG93biwgJ21vdXNlZW50ZXInKVxuICAgIC5waXBlKFxuICAgICAgdGFwKCgpID0+IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnY3Vyc29yLXBvaW50ZXInKSksXG4gICAgICB0YWtlVW50aWwoY29uZmlnLm9uRGVzdHJveSlcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGNvbnN0IG1vdXNlRG93biA9IGZyb21FdmVudDxNb3VzZUV2ZW50PihcbiAgICBjb25maWcuZWxlbWVudE1vdXNlRG93bixcbiAgICAnbW91c2Vkb3duJ1xuICApLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgYWRkQ2xhc3MoKTtcbiAgICAgIGNvbmZpZy5mdW5jdGlvbk1vdXNlRG93bj8uKGUpO1xuICAgIH0pXG4gICk7XG4gIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oXG4gICAgY29uZmlnLmVsZW1lbnRNb3VzZVVwIHx8IGRvY3VtZW50LFxuICAgICdtb3VzZXVwJ1xuICApLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmVtb3ZlQ2xhc3MoKTtcbiAgICAgIGNvbmZpZy5mdW5jdGlvbk1vdXNlVXA/LihlKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IG1vdXNlbW92ZSA9IGZyb21FdmVudDxNb3VzZUV2ZW50PihcbiAgICBjb25maWcuZWxlbWVudE1vdXNlTW92ZSB8fCBkb2N1bWVudCxcbiAgICAnbW91c2Vtb3ZlJ1xuICApLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY29uZmlnLmZ1bmN0aW9uTW91c2VNb3ZlPy4oZSk7XG4gICAgfSksXG4gICAgdGFrZVVudGlsKG1vdXNldXApXG4gICk7XG5cbiAgcmV0dXJuIG1vdXNlRG93bi5waXBlKFxuICAgIG1lcmdlTWFwKChlOiBNb3VzZUV2ZW50KSA9PlxuICAgICAgY29uZmlnLmlzU3RhcnRXaXRoTW91c2VEb3duRXZlbnRcbiAgICAgICAgPyBtb3VzZW1vdmUucGlwZShzdGFydFdpdGgoZSkpXG4gICAgICAgIDogbW91c2Vtb3ZlXG4gICAgKSxcbiAgICB0YWtlVW50aWwoY29uZmlnLm9uRGVzdHJveSksXG4gICAgZmluYWxpemUocmVtb3ZlQ2xhc3MpXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SFRNTEZyb21RdWlsbCA9IGFzeW5jIChkYXRhOiBEZWx0YSB8IHN0cmluZywgb3B0aW9ucz86IHtcbiAgZ2V0Um9vdEh0bWw/OmJvb2xlYW47XG4gIHJlcGxhY2VOZXdMaW5lVG8/OiBzdHJpbmc7XG4gIHJlcGxhY2VUYWdCUlRvPzogc3RyaW5nO1xuICByZXBsYWNlQnJUb0Rpdj86IGJvb2xlYW47XG4gIGZ1bmN0aW9uUmVwbGFjZURlbHRhPzogKG9wOkRlbHRhKT0+dm9pZDtcbiAgcmVwbGFjZVRhZ3M/OntcbiAgICB0YWc6c3RyaW5nO1xuICAgIHJlcGxhY2VUbzpzdHJpbmc7XG4gIH1bXTtcbn0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCB7IHJlcGxhY2VOZXdMaW5lVG8gPSAnPGJyPicsIHJlcGxhY2VUYWdCUlRvLHJlcGxhY2VUYWdzLHJlcGxhY2VCclRvRGl2fSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IGRlbHRhID0gKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgPyBhd2FpdCBnZXREZWx0YUZyb21IVE1MKGRhdGEpIDogZGF0YTtcbiAgaWYob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpe1xuICAgIG9wdGlvbnMuZnVuY3Rpb25SZXBsYWNlRGVsdGEoZGVsdGEpO1xuICB9XG5cbiAgZGVsdGEub3BzLmZvckVhY2goKG9wKSA9PiB7XG4gICAgaWYgKG9wLmluc2VydCkge1xuICAgICAgaWYgKHR5cGVvZiBvcC5pbnNlcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChyZXBsYWNlTmV3TGluZVRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoL1xcbi9nLCByZXBsYWNlTmV3TGluZVRvKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVwbGFjZVRhZ0JSVG8pIHtcbiAgICAgICAgICBvcC5pbnNlcnQgPSBvcC5pbnNlcnQucmVwbGFjZSgvPGJyPi9nLCByZXBsYWNlVGFnQlJUbyk7XG4gICAgICAgIH1cbiAgICAgICBcbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHt0YWcudGFnfT5gLCAnZycpLCBgPC8ke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBxdWlsbC5zZXRDb250ZW50cyhkZWx0YSk7XG4gIGxldCBodG1sVGV4dCA9IG9wdGlvbnM/LmdldFJvb3RIdG1sID8gcXVpbGwucm9vdC5pbm5lckhUTUwgOiBxdWlsbC5yb290LmZpcnN0RWxlbWVudENoaWxkPy5pbm5lckhUTUw7XG4gIGlmKHJlcGxhY2VCclRvRGl2KXtcbiAgICBodG1sVGV4dCA9IGNvbnZlcnRIdG1sVG9EaXZCbG9ja3MoaHRtbFRleHQgfHwgJycpO1xuICB9XG4gIHJldHVybiBkZWNvZGVFc2NhcGVIdG1sKGh0bWxUZXh0IHx8ICcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHRtbFRvRGl2QmxvY2tzID0gKGh0bWw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IEJSRUFLX1RPS0VOID0gJzw8PEJSRUFLPj4+JztcbiAgLy8gQsaw4bubYyAxOiB0aGF5IDxicj4gdGjDoG5oIHRva2VuIHThuqFtXG4gIGNvbnN0IG5vcm1hbGl6ZWRIdG1sID0gaHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksIEJSRUFLX1RPS0VOKTtcblxuICAvLyBCxrDhu5tjIDI6IHTDoWNoIHRoZW8gdG9rZW5cbiAgY29uc3QgcGFydHMgPSBub3JtYWxpemVkSHRtbC5zcGxpdChCUkVBS19UT0tFTik7XG5cbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICBjb25zdCBkaXZzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmF3IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJhdy50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkKSBjb250aW51ZTtcblxuICAgIC8vIHBhcnNlIG3hu5dpIHBo4bqnbiBuaOG7jyBuaMawIG3hu5l0IGRvY3VtZW50IHJpw6puZ1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcodHJpbW1lZCwgJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IGJvZHkgPSBkb2MuYm9keTtcblxuICAgIC8vIEzhuqV5IGzhuqFpIG7hu5lpIGR1bmcgYsOqbiB0cm9uZyBib2R5XG4gICAgZGl2cy5wdXNoKGA8ZGl2PiR7Ym9keS5pbm5lckhUTUx9PC9kaXY+YCk7XG4gIH1cblxuICByZXR1cm4gZGl2cy5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldERlbHRhRnJvbUhUTUwgPSBhc3luYyAoaHRtbDogc3RyaW5nKTpQcm9taXNlPERlbHRhPiA9PiB7XG4gIHF1aWxsLnJvb3QuaW5uZXJIVE1MID0gaHRtbDtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2cocXVpbGwuZ2V0Q29udGVudHMoKSk7XG4gIH0sIDEwMDApO1xuXG4gIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIoMTAwMCkpO1xuICByZXR1cm4gcXVpbGwuZ2V0Q29udGVudHMoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzUGFzdGVEYXRhID0gYXN5bmMgKGU6IENsaXBib2FyZEV2ZW50LGNvbmZpZzp7XG4gIGVsZW1lbnQ6SFRNTEVsZW1lbnQ7XG4gIGhhbmRsZXJQYXN0ZUZpbGU/OihmaWxlczpGaWxlTGlzdCk9PnZvaWQ7XG4gIGNhbGxCYWNrPzoocG9zaXRvblJldHVybjonZmlsZScgfCAncmFuZ2UnIHwgJ2NvbnRlbnQnIHwgJ25vLWNvbnRlbnQnKT0+dm9pZDtcbn0pID0+e1xuICBjb25zdCBlbGVtZW50ID0gY29uZmlnLmVsZW1lbnQ7XG4gIGNvbnN0IGZpbGVzID0gZS5jbGlwYm9hcmREYXRhPy5maWxlcztcbiAgaWYgKGZpbGVzPy5sZW5ndGgpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uZmlnLmhhbmRsZXJQYXN0ZUZpbGU/LihmaWxlcyk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ2ZpbGUnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gTMawdSBzZWxlY3Rpb24gVFLGr+G7mkMga2hpIHByZXZlbnQgZGVmYXVsdFxuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGxldCBzYXZlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgLy8gQ2jhu4kgbMawdSBu4bq/dSByYW5nZSBu4bqxbSB0cm9uZyBjb250ZW50VGV4dCBlbGVtZW50XG4gICAgY29uc3QgY29udGFpbmVyID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG4gICAgY29uc3QgaXNJbkNvbnRlbnRFbGVtZW50ID0gZWxlbWVudC5jb250YWlucyhcbiAgICAgIGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyBjb250YWluZXIucGFyZW50Tm9kZSA6IGNvbnRhaW5lclxuICAgICk7XG4gICAgaWYgKGlzSW5Db250ZW50RWxlbWVudCkge1xuICAgICAgc2F2ZWRSYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJldmVudCBkZWZhdWx0IMSR4buDIHThu7EgeOG7rSBsw70gcGFzdGVcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBT4butIGThu6VuZyBRdWlsbCDEkeG7gyBjbGVhbiBIVE1MIGNvbnRlbnRcbiAgY29uc3QgaHRtbENvbnRlbnQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvaHRtbCcpIHx8ICcnO1xuICBjb25zdCBwbGFpblRleHQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSB8fCAnJztcbiAgbGV0IGNvbnRlbnRUb0luc2VydCA9IChwbGFpblRleHR8fCAnJykucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG4gIGlmIChodG1sQ29udGVudCkge1xuICAgIGNvbnRlbnRUb0luc2VydCA9IGF3YWl0IGdldEhUTUxGcm9tUXVpbGwoaHRtbENvbnRlbnQpO1xuICB9XG5cbiAgaWYoIWNvbnRlbnRUb0luc2VydCl7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ25vLWNvbnRlbnQnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2F2ZWRSYW5nZSkge1xuICAgIGluc2VydENvbnRlbnRXaXRoUmFuZ2UoY29udGVudFRvSW5zZXJ0LCBzYXZlZFJhbmdlLGVsZW1lbnQpO1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCdyYW5nZScpO1xuICAgIHJldHVybjtcbiAgfVxuICBlbGVtZW50LmlubmVySFRNTCArPSBjb250ZW50VG9JbnNlcnQ7XG4gIGNvbmZpZy5jYWxsQmFjaz8uKCdjb250ZW50Jyk7XG59XG5cblxuZXhwb3J0IGNvbnN0IGluc2VydENvbnRlbnRXaXRoUmFuZ2UgPSAoY29udGVudDogc3RyaW5nLCBzYXZlZFJhbmdlOiBSYW5nZSxlbGVtZW50OkhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAvLyBGYWxsYmFjazogYXBwZW5kIHbDoG8gY3Xhu5FpXG4gICAgZWxlbWVudC5pbm5lckhUTUwgKz0gY29udGVudDtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG4gIC8vIFjDs2EgbuG7mWkgZHVuZyDEkcOjIHNlbGVjdCAobuG6v3UgY8OzKVxuICBzYXZlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFThuqFvIGRvY3VtZW50IGZyYWdtZW50IHThu6sgSFRNTCBjb250ZW50XG4gIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVtcERpdi5pbm5lckhUTUwgPSBjb250ZW50O1xuICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkge1xuICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHRlbXBEaXYuZmlyc3RDaGlsZCk7XG4gIH1cbiAgLy8gSW5zZXJ0IGZyYWdtZW50IHThuqFpIHbhu4sgdHLDrSByYW5nZVxuICBzYXZlZFJhbmdlLmluc2VydE5vZGUoZnJhZ21lbnQpO1xuICAvLyBEaSBjaHV54buDbiBjdXJzb3IgxJHhur9uIGN14buRaSBu4buZaSBkdW5nIHbhu6thIGluc2VydFxuICBpZiAoZnJhZ21lbnQubGFzdENoaWxkKSB7XG4gICAgc2F2ZWRSYW5nZS5zZXRTdGFydEFmdGVyKGZyYWdtZW50Lmxhc3RDaGlsZCk7XG4gIH1cbiAgc2F2ZWRSYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG59Il19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sY0FBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBVyxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO0lBQ2hDLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNyQyxNQUFNLElBQUksR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUMzQyxNQUFNLFVBQVUsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxJQUFJLG9CQUFvQixHQUFHLFVB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Q0FBQyxDQUFDO0lBQ2hDLGdEQUFnRDtJQUNoRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QixVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBSZW5kZXJlcjIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5pbXBvcnQgRGV2aWNlRGV0ZWN0b3IgZnJvbSAnZGV2aWNlLWRldGVjdG9yLWpzJztcbmltcG9ydCBRdWlsbCBmcm9tIFwicXVpbGxcIjtcbmltcG9ydCBEZWx0YSBmcm9tIFwicXVpbGwtZGVsdGFcIjtcbmltcG9ydCB7IGZpbmFsaXplLCBmcm9tRXZlbnQsIGxhc3RWYWx1ZUZyb20sIG1lcmdlTWFwLCBzdGFydFdpdGgsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwLCB0aW1lciB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkZWNvZGVFc2NhcGVIdG1sIH0gZnJvbSBcIi4vZm9ybWF0LXRleHRcIjtcblxuY29uc3QgZGV2aWNlRGV0ZWN0b3IgPSBuZXcgRGV2aWNlRGV0ZWN0b3IoKTtcbmNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbmNvbnN0IHF1aWxsID0gbmV3IFF1aWxsKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblxuZXhwb3J0IGNvbnN0IGdldERldmljZUluZm8gPSAoKSA9PiB7XG4gIHJldHVybiBkZXZpY2VEZXRlY3Rvci5wYXJzZSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldFBsYXRGcm9tQnJvd3NlciA9ICgpID0+IHtcbiAgY29uc3QgaW5mbyA9IGdldERldmljZUluZm8oKTtcbiAgcmV0dXJuIGAke2luZm8uY2xpZW50Py5uYW1lfSAke2luZm8uY2xpZW50Py52ZXJzaW9ufWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnROYW1lSGFuZGxlQ2xpY2sgPSAoKCkgPT4ge1xuICBjb25zdCBkZXZpY2VJbmZvID0gZ2V0RGV2aWNlSW5mbygpO1xuICBsZXQgbmFtZUV2ZW50SGFuZGxlQ2xpY2sgPSBkZXZpY2VJbmZvLmRldmljZT8udHlwZSA9PT0gJ2Rlc2t0b3AnID8gJ2NsaWNrJyA6ICd0b3VjaHN0YXJ0JztcbiAgaWYgKCdvbnBvaW50ZXJkb3duJyBpbiB3aW5kb3cpIHtcbiAgICBuYW1lRXZlbnRIYW5kbGVDbGljayA9ICdwb2ludGVyZG93bic7XG4gIH1cblxuICByZXR1cm4gbmFtZUV2ZW50SGFuZGxlQ2xpY2s7XG59KSgpO1xuXG5leHBvcnQgY29uc3QgZ2V0RG9jdW1lbnRCeVN0cmluZyA9IChodG1sU3RyOiBzdHJpbmcpOiBEb2N1bWVudCA9PiB7XG4gIHJldHVybiBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGh0bWxTdHIsICd0ZXh0L2h0bWwnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QgPSAoXG4gIHJlY3Q6IElCb3VuZGluZ0NsaWVudFJlY3Rcbik6IElCb3VuZGluZ0NsaWVudFJlY3QgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdFsndG9wJ10sXG4gICAgbGVmdDogcmVjdFsnbGVmdCddLFxuICAgIHdpZHRoOiByZWN0Wyd3aWR0aCddLFxuICAgIGhlaWdodDogcmVjdFsnaGVpZ2h0J10sXG4gICAgYm90dG9tOiByZWN0Wydib3R0b20nXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRTdHlsZXNFbGVtZW50ID0gKFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIHN0eWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgcmVuZGVyMjogUmVuZGVyZXIyXG4pOiB2b2lkID0+IHtcbiAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT5cbiAgICByZW5kZXIyLnNldFN0eWxlKGVsLCBrZXksIHN0eWxlc1trZXldKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZpZXdwb3J0ID0gKFxuICB3aW46IFdpbmRvdyA9IHdpbmRvd1xuKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgZG9jID0gd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICBib2R5ID0gd2luLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0sXG4gICAgdyA9IHdpbi5pbm5lcldpZHRoIHx8IGRvYy5jbGllbnRXaWR0aCB8fCBib2R5LmNsaWVudFdpZHRoLFxuICAgIGggPSB3aW4uaW5uZXJIZWlnaHQgfHwgZG9jLmNsaWVudEhlaWdodCB8fCBib2R5LmNsaWVudEhlaWdodDtcblxuICByZXR1cm4geyB3aWR0aDogdywgaGVpZ2h0OiBoIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q2FyZXRQb3NpdGlvbiA9IChcbiAgZWxlbWVudDogSFRNTFRleHRBcmVhRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQsXG4gIHBvc2l0aW9uOiBudW1iZXJcbik6IHZvaWQgPT4ge1xuICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZWxlbWVudC5mb2N1cygpO1xuICBlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uLCBwb3NpdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaWV3SW5TY3JlZW4gPSAoXG4gIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBlbGVtZW50U2Nyb2xsPzogSFRNTEVsZW1lbnQsXG4gIG1heFRvcExlZnQ/OiB7IHRvcD86IG51bWJlcjsgbGVmdD86IG51bWJlciB9XG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFjb250YWluZXIgfHwgIWVsZW1lbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByZWN0Q29udGFpbmVyID0gY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0KFxuICAgIGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICApO1xuXG4gIGlmIChlbGVtZW50U2Nyb2xsKSB7XG4gICAgY29uc3QgcmVjdEVsZW1lbnRTY3JvbGwgPSBlbGVtZW50U2Nyb2xsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmVjdENvbnRhaW5lclsnbGVmdCddID0gcmVjdEVsZW1lbnRTY3JvbGwubGVmdDtcbiAgICByZWN0Q29udGFpbmVyWyd0b3AnXSA9IHJlY3RFbGVtZW50U2Nyb2xsLnRvcDtcbiAgfVxuXG4gIGNvbnN0IHJlY3RFbGVtZW50ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IHJlY3RFbGVtZW50O1xuICBjb25zdCB0b3BDb250YWluZXIgPSByZWN0Q29udGFpbmVyWyd0b3AnXTtcbiAgY29uc3QgbGVmdENvbnRhaW5lciA9IHJlY3RDb250YWluZXJbJ2xlZnQnXTtcbiAgY29uc3Qgd2lkdGhDb250YWluZXIgPSByZWN0Q29udGFpbmVyWyd3aWR0aCddO1xuICBjb25zdCBoZWlnaHRDb250YWluZXIgPSByZWN0Q29udGFpbmVyWydoZWlnaHQnXTtcbiAgY29uc3Qgc2Nyb2xsVG9wQ29udGFpbmVyID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3Qgc2Nyb2xsTGVmdENvbnRhaW5lciA9IGNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICBjb25zdCBsaW1pdFRvcCA9IHRvcENvbnRhaW5lciArIHNjcm9sbFRvcENvbnRhaW5lciArIGhlaWdodENvbnRhaW5lcjtcbiAgY29uc3QgbGltaXRMZWZ0ID0gbGVmdENvbnRhaW5lciArIHNjcm9sbExlZnRDb250YWluZXIgKyB3aWR0aENvbnRhaW5lcjtcblxuICBjb25zdCBtYXhUb3BJdGVtID0gdG9wICsgKG1heFRvcExlZnQ/LnRvcCB8fCAwKTtcbiAgY29uc3QgbWF4TGVmdEl0ZW0gPSBsZWZ0ICsgKG1heFRvcExlZnQ/LmxlZnQgfHwgMCk7XG5cbiAgaWYgKFxuICAgIHRvcENvbnRhaW5lciA8PSBtYXhUb3BJdGVtICYmXG4gICAgbWF4VG9wSXRlbSA8PSBsaW1pdFRvcCAmJlxuICAgIGxlZnRDb250YWluZXIgPD0gbWF4TGVmdEl0ZW0gJiZcbiAgICBtYXhMZWZ0SXRlbSA8PSBsaW1pdExlZnRcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciA9IChcbiAgbW91c2VQb3NpdGlvbjogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9LFxuICBlbGVtZW50PzogSFRNTEVsZW1lbnQsXG4gIHJlY3Q/OiBET01SZWN0XG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFlbGVtZW50ICYmICFyZWN0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHJlY3RFbGVtZW50ID1cbiAgICByZWN0IHx8IGVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHx8ICh7fSBhcyBET01SZWN0KTtcbiAgY29uc3QgeyBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQgfSA9IHJlY3RFbGVtZW50O1xuICBjb25zdCBsaW1pdExlZnQgPSBsZWZ0ICsgd2lkdGg7XG4gIGNvbnN0IGxpbWl0VG9wID0gdG9wICsgaGVpZ2h0O1xuICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IG1vdXNlUG9zaXRpb247XG4gIGlmIChcbiAgICBsZWZ0IDw9IGNsaWVudFggJiZcbiAgICBjbGllbnRYIDw9IGxpbWl0TGVmdCAmJlxuICAgIHRvcCA8PSBjbGllbnRZICYmXG4gICAgY2xpZW50WSA8PSBsaW1pdFRvcFxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREcmFnRXZlbnRCeUVsZW1lbnQgPSAoY29uZmlnOiB7XG4gIGVsZW1lbnRNb3VzZURvd246IEhUTUxFbGVtZW50O1xuICBmdW5jdGlvbk1vdXNlRG93bj86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgaXNTdGFydFdpdGhNb3VzZURvd25FdmVudD86IGJvb2xlYW47XG4gIGVsZW1lbnRNb3VzZU1vdmU/OiBIVE1MRWxlbWVudDtcbiAgZnVuY3Rpb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIGVsZW1lbnRNb3VzZVVwPzogSFRNTEVsZW1lbnQ7XG4gIGZ1bmN0aW9uTW91c2VVcD86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgb25EZXN0cm95OiBTdWJqZWN0PGFueT47XG59KSA9PiB7XG4gIGxldCB0aW1lcjogbnVtYmVyO1xuICBjb25zdCBhZGRDbGFzcyA9ICgpID0+IHtcbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCchc2VsZWN0LW5vbmUnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnIWN1cnNvci1ncmFiYmluZycpO1xuICAgIH0sIDI1MCk7XG4gIH07XG4gIGNvbnN0IHJlbW92ZUNsYXNzID0gKCkgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnIXNlbGVjdC1ub25lJyk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCchY3Vyc29yLWdyYWJiaW5nJyk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfTtcbiAgZnJvbUV2ZW50KGNvbmZpZy5lbGVtZW50TW91c2VEb3duLCAnbW91c2VsZWF2ZScpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjdXJzb3ItcG9pbnRlcicpKSxcbiAgICAgIHRha2VVbnRpbChjb25maWcub25EZXN0cm95KVxuICAgIClcbiAgICAuc3Vic2NyaWJlKCk7XG4gIGZyb21FdmVudChjb25maWcuZWxlbWVudE1vdXNlRG93biwgJ21vdXNlZW50ZXInKVxuICAgIC5waXBlKFxuICAgICAgdGFwKCgpID0+IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnY3Vyc29yLXBvaW50ZXInKSksXG4gICAgICB0YWtlVW50aWwoY29uZmlnLm9uRGVzdHJveSlcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGNvbnN0IG1vdXNlRG93biA9IGZyb21FdmVudDxNb3VzZUV2ZW50PihcbiAgICBjb25maWcuZWxlbWVudE1vdXNlRG93bixcbiAgICAnbW91c2Vkb3duJ1xuICApLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgYWRkQ2xhc3MoKTtcbiAgICAgIGNvbmZpZy5mdW5jdGlvbk1vdXNlRG93bj8uKGUpO1xuICAgIH0pXG4gICk7XG4gIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oXG4gICAgY29uZmlnLmVsZW1lbnRNb3VzZVVwIHx8IGRvY3VtZW50LFxuICAgICdtb3VzZXVwJ1xuICApLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmVtb3ZlQ2xhc3MoKTtcbiAgICAgIGNvbmZpZy5mdW5jdGlvbk1vdXNlVXA/LihlKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IG1vdXNlbW92ZSA9IGZyb21FdmVudDxNb3VzZUV2ZW50PihcbiAgICBjb25maWcuZWxlbWVudE1vdXNlTW92ZSB8fCBkb2N1bWVudCxcbiAgICAnbW91c2Vtb3ZlJ1xuICApLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY29uZmlnLmZ1bmN0aW9uTW91c2VNb3ZlPy4oZSk7XG4gICAgfSksXG4gICAgdGFrZVVudGlsKG1vdXNldXApXG4gICk7XG5cbiAgcmV0dXJuIG1vdXNlRG93bi5waXBlKFxuICAgIG1lcmdlTWFwKChlOiBNb3VzZUV2ZW50KSA9PlxuICAgICAgY29uZmlnLmlzU3RhcnRXaXRoTW91c2VEb3duRXZlbnRcbiAgICAgICAgPyBtb3VzZW1vdmUucGlwZShzdGFydFdpdGgoZSkpXG4gICAgICAgIDogbW91c2Vtb3ZlXG4gICAgKSxcbiAgICB0YWtlVW50aWwoY29uZmlnLm9uRGVzdHJveSksXG4gICAgZmluYWxpemUocmVtb3ZlQ2xhc3MpXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SFRNTEZyb21RdWlsbCA9IGFzeW5jIChkYXRhOiBEZWx0YSB8IHN0cmluZywgb3B0aW9ucz86IHtcbiAgZ2V0Um9vdEh0bWw/OmJvb2xlYW47XG4gIHJlcGxhY2VOZXdMaW5lVG8/OiBzdHJpbmc7XG4gIHJlcGxhY2VUYWdCUlRvPzogc3RyaW5nO1xuICByZXBsYWNlQnJUb0Rpdj86IGJvb2xlYW47XG4gIGZ1bmN0aW9uUmVwbGFjZURlbHRhPzogKG9wOkRlbHRhKT0+dm9pZDtcbiAgcmVwbGFjZVRhZ3M/OntcbiAgICB0YWc6c3RyaW5nO1xuICAgIHJlcGxhY2VUbzpzdHJpbmc7XG4gIH1bXTtcbn0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCB7IHJlcGxhY2VOZXdMaW5lVG8gPSAnPGJyPicsIHJlcGxhY2VUYWdCUlRvLHJlcGxhY2VUYWdzLHJlcGxhY2VCclRvRGl2fSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IGRlbHRhID0gKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgPyBhd2FpdCBnZXREZWx0YUZyb21IVE1MKGRhdGEpIDogZGF0YTtcbiAgaWYob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpe1xuICAgIG9wdGlvbnMuZnVuY3Rpb25SZXBsYWNlRGVsdGEoZGVsdGEpO1xuICB9XG5cbiAgZGVsdGEub3BzLmZvckVhY2goKG9wKSA9PiB7XG4gICAgaWYgKG9wLmluc2VydCkge1xuICAgICAgaWYgKHR5cGVvZiBvcC5pbnNlcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChyZXBsYWNlTmV3TGluZVRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoL1xcbi9nLCByZXBsYWNlTmV3TGluZVRvKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVwbGFjZVRhZ0JSVG8pIHtcbiAgICAgICAgICBvcC5pbnNlcnQgPSBvcC5pbnNlcnQucmVwbGFjZSgvPGJyPi9nLCByZXBsYWNlVGFnQlJUbyk7XG4gICAgICAgIH1cbiAgICAgICBcbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHt0YWcudGFnfT5gLCAnZycpLCBgPC8ke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBxdWlsbC5zZXRDb250ZW50cyhkZWx0YSk7XG4gIGxldCBodG1sVGV4dCA9IG9wdGlvbnM/LmdldFJvb3RIdG1sID8gcXVpbGwucm9vdC5pbm5lckhUTUwgOiBxdWlsbC5yb290LmZpcnN0RWxlbWVudENoaWxkPy5pbm5lckhUTUw7XG4gIGlmKHJlcGxhY2VCclRvRGl2KXtcbiAgICBodG1sVGV4dCA9IGNvbnZlcnRIdG1sVG9EaXZCbG9ja3MoaHRtbFRleHQgfHwgJycpO1xuICB9XG4gIHJldHVybiBkZWNvZGVFc2NhcGVIdG1sKGh0bWxUZXh0IHx8ICcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHRtbFRvRGl2QmxvY2tzID0gKGh0bWw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IEJSRUFLX1RPS0VOID0gJzw8PEJSRUFLPj4+JztcbiAgLy8gQsaw4bubYyAxOiB0aGF5IDxicj4gdGjDoG5oIHRva2VuIHThuqFtXG4gIGNvbnN0IG5vcm1hbGl6ZWRIdG1sID0gaHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksIEJSRUFLX1RPS0VOKTtcblxuICAvLyBCxrDhu5tjIDI6IHTDoWNoIHRoZW8gdG9rZW5cbiAgY29uc3QgcGFydHMgPSBub3JtYWxpemVkSHRtbC5zcGxpdChCUkVBS19UT0tFTik7XG5cbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICBjb25zdCBkaXZzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmF3IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJhdy50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkKSBjb250aW51ZTtcblxuICAgIC8vIHBhcnNlIG3hu5dpIHBo4bqnbiBuaOG7jyBuaMawIG3hu5l0IGRvY3VtZW50IHJpw6puZ1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcodHJpbW1lZCwgJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IGJvZHkgPSBkb2MuYm9keTtcblxuICAgIC8vIEzhuqV5IGzhuqFpIG7hu5lpIGR1bmcgYsOqbiB0cm9uZyBib2R5XG4gICAgZGl2cy5wdXNoKGA8ZGl2PiR7Ym9keS5pbm5lckhUTUx9PC9kaXY+YCk7XG4gIH1cblxuICByZXR1cm4gZGl2cy5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldERlbHRhRnJvbUhUTUwgPSBhc3luYyAoaHRtbDogc3RyaW5nKTpQcm9taXNlPERlbHRhPiA9PiB7XG4gIHF1aWxsLnJvb3QuaW5uZXJIVE1MID0gaHRtbDtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2cocXVpbGwuZ2V0Q29udGVudHMoKSk7XG4gIH0sIDEwMDApO1xuXG4gIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIoMTAwMCkpO1xuICByZXR1cm4gcXVpbGwuZ2V0Q29udGVudHMoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzUGFzdGVEYXRhID0gYXN5bmMgKGU6IENsaXBib2FyZEV2ZW50LGNvbmZpZzp7XG4gIGVsZW1lbnQ6SFRNTEVsZW1lbnQ7XG4gIGhhbmRsZXJQYXN0ZUZpbGU/OihmaWxlczpGaWxlTGlzdCk9PnZvaWQ7XG4gIGNhbGxCYWNrPzoocG9zaXRvblJldHVybjonZmlsZScgfCAncmFuZ2UnIHwgJ2NvbnRlbnQnIHwgJ25vLWNvbnRlbnQnKT0+dm9pZDtcbn0pID0+e1xuICBjb25zdCBlbGVtZW50ID0gY29uZmlnLmVsZW1lbnQ7XG4gIGNvbnN0IGZpbGVzID0gZS5jbGlwYm9hcmREYXRhPy5maWxlcztcbiAgaWYgKGZpbGVzPy5sZW5ndGgpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uZmlnLmhhbmRsZXJQYXN0ZUZpbGU/LihmaWxlcyk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ2ZpbGUnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gTMawdSBzZWxlY3Rpb24gVFLGr+G7mkMga2hpIHByZXZlbnQgZGVmYXVsdFxuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGxldCBzYXZlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgLy8gQ2jhu4kgbMawdSBu4bq/dSByYW5nZSBu4bqxbSB0cm9uZyBjb250ZW50VGV4dCBlbGVtZW50XG4gICAgY29uc3QgY29udGFpbmVyID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG4gICAgY29uc3QgaXNJbkNvbnRlbnRFbGVtZW50ID0gZWxlbWVudC5jb250YWlucyhcbiAgICAgIGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyBjb250YWluZXIucGFyZW50Tm9kZSA6IGNvbnRhaW5lclxuICAgICk7XG4gICAgaWYgKGlzSW5Db250ZW50RWxlbWVudCkge1xuICAgICAgc2F2ZWRSYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJldmVudCBkZWZhdWx0IMSR4buDIHThu7EgeOG7rSBsw70gcGFzdGVcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBT4butIGThu6VuZyBRdWlsbCDEkeG7gyBjbGVhbiBIVE1MIGNvbnRlbnRcbiAgY29uc3QgaHRtbENvbnRlbnQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvaHRtbCcpIHx8ICcnO1xuICBjb25zdCBwbGFpblRleHQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSB8fCAnJztcbiAgbGV0IGNvbnRlbnRUb0luc2VydCA9IChwbGFpblRleHR8fCAnJykucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG4gIGlmIChodG1sQ29udGVudCkge1xuICAgIGNvbnRlbnRUb0luc2VydCA9IGF3YWl0IGdldEhUTUxGcm9tUXVpbGwoaHRtbENvbnRlbnQpO1xuICB9XG5cbiAgaWYoIWNvbnRlbnRUb0luc2VydCl7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ25vLWNvbnRlbnQnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2F2ZWRSYW5nZSkge1xuICAgIGluc2VydENvbnRlbnRXaXRoUmFuZ2UoY29udGVudFRvSW5zZXJ0LCBzYXZlZFJhbmdlLGVsZW1lbnQpO1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCdyYW5nZScpO1xuICAgIHJldHVybjtcbiAgfVxuICBlbGVtZW50LmlubmVySFRNTCArPSBjb250ZW50VG9JbnNlcnQ7XG4gIGNvbmZpZy5jYWxsQmFjaz8uKCdjb250ZW50Jyk7XG59XG5cblxuZXhwb3J0IGNvbnN0IGluc2VydENvbnRlbnRXaXRoUmFuZ2UgPSAoY29udGVudDogc3RyaW5nLCBzYXZlZFJhbmdlOiBSYW5nZSxlbGVtZW50OkhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAvLyBGYWxsYmFjazogYXBwZW5kIHbDoG8gY3Xhu5FpXG4gICAgZWxlbWVudC5pbm5lckhUTUwgKz0gY29udGVudDtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG4gIC8vIFjDs2EgbuG7mWkgZHVuZyDEkcOjIHNlbGVjdCAobuG6v3UgY8OzKVxuICBzYXZlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFThuqFvIGRvY3VtZW50IGZyYWdtZW50IHThu6sgSFRNTCBjb250ZW50XG4gIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVtcERpdi5pbm5lckhUTUwgPSBjb250ZW50O1xuICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkge1xuICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHRlbXBEaXYuZmlyc3RDaGlsZCk7XG4gIH1cbiAgLy8gSW5zZXJ0IGZyYWdtZW50IHThuqFpIHbhu4sgdHLDrSByYW5nZVxuICBzYXZlZFJhbmdlLmluc2VydE5vZGUoZnJhZ21lbnQpO1xuICAvLyBEaSBjaHV54buDbiBjdXJzb3IgxJHhur9uIGN14buRaSBu4buZaSBkdW5nIHbhu6thIGluc2VydFxuICBpZiAoZnJhZ21lbnQubGFzdENoaWxkKSB7XG4gICAgc2F2ZWRSYW5nZS5zZXRTdGFydEFmdGVyKGZyYWdtZW50Lmxhc3RDaGlsZCk7XG4gIH1cbiAgc2F2ZWRSYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG59Il19
package/esm2022/file.mjs CHANGED
@@ -1,6 +1,6 @@
1
+ import { convertBase64ToBlob } from "./base64";
1
2
  import { get, set } from "./helpers";
2
3
  import { uuid } from "./uuid";
3
- import { convertBase64ToBlob } from "./base64";
4
4
  export const isTypeImage = (file) => file.type.match(/image.*/) ? true : false;
5
5
  export const isTypeVideo = (file) => file.type.match(/video.*/) ? true : false;
6
6
  export const isTypeAudio = (file) => file.type.match(/audio.*/) ? true : false;
@@ -65,6 +65,7 @@ export const convertUrlToFile = (url, fileName) => {
65
65
  const file = convertBase64ToBlob(reader.result);
66
66
  resolve(convertBlobToFile(file, fileName || Date.now().toLocaleString()));
67
67
  };
68
+ reader.onerror = () => resolve(undefined);
68
69
  reader.readAsDataURL(xhr.response);
69
70
  };
70
71
  xhr.onerror = (err) => {
@@ -75,4 +76,4 @@ export const convertUrlToFile = (url, fileName) => {
75
76
  xhr.send();
76
77
  });
77
78
  };
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1RixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDNUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksSUFBSSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBRTFJLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtB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QixHQUFHLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUMxQixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElGaWxlIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IGdldCwgc2V0IH0gZnJvbSBcIi4vaGVscGVyc1wiO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gXCIuL3V1aWRcIjtcbmltcG9ydCB7IGNvbnZlcnRCYXNlNjRUb0Jsb2IgfSBmcm9tIFwiLi9iYXNlNjRcIjtcblxuZXhwb3J0IGNvbnN0IGlzVHlwZUltYWdlID0gKGZpbGU6IEZpbGUgfCBCbG9iKSA9PiBmaWxlLnR5cGUubWF0Y2goL2ltYWdlLiovKSA/IHRydWUgOiBmYWxzZTtcbmV4cG9ydCBjb25zdCBpc1R5cGVWaWRlbyA9IChmaWxlOiBGaWxlIHwgQmxvYikgPT4gZmlsZS50eXBlLm1hdGNoKC92aWRlby4qLykgPyB0cnVlIDogZmFsc2U7XG5leHBvcnQgY29uc3QgaXNUeXBlQXVkaW8gPSAoZmlsZTogRmlsZSB8IEJsb2IpID0+IGZpbGUudHlwZS5tYXRjaCgvYXVkaW8uKi8pID8gdHJ1ZSA6IGZhbHNlO1xuZXhwb3J0IGNvbnN0IGlzVHlwZUZpbGUgPSAoZmlsZTogRmlsZSkgPT4gZmlsZSBpbnN0YW5jZW9mIEZpbGUgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGZpbGUpID09PSAnW29iamVjdCBGaWxlXScgPyB0cnVlIDogZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBFeGNlbEV4dExpc3QgPSBbJ3hscycsICd4bHN4JywgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCddO1xuZXhwb3J0IGNvbnN0IERvY3VtZW50RXh0TGlzdCA9IFsnZG9jJywgJ2RvY3gnLCAneGxzJywgJ3hsc3gnLCAncHB0JywgJ3BwdHgnLCAncGRmJywgJ2pzb24nLCAneG1sJywgJ2FwcGxpY2F0aW9uL21zd29yZCcsXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsXG4gICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnLFxuICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsXG4gICdhcHBsaWNhdGlvbi9wZGYnLFxuICAnYXBwbGljYXRpb24vanNvbicsXG4gICdhcHBsaWNhdGlvbi94bWwnXTtcbmV4cG9ydCBjb25zdCBpc0luY2x1ZGVEb2N1bWVudEV4dExpc3QgPSAoZXh0OiBzdHJpbmcsIGxpc3RFeHQ6IEFycmF5PHN0cmluZz4gPSBEb2N1bWVudEV4dExpc3QpID0+IGxpc3RFeHQuaW5jbHVkZXMoZXh0KSB8fCBsaXN0RXh0LmluY2x1ZGVzKGBhcHBsaWNhdGlvbi8ke2V4dH1gKTtcblxuZXhwb3J0IGNvbnN0IEltYWdlRXh0TGlzdCA9IFsnZ2lmJywgJ2pwZycsICdqcGVnJywgJ3BuZycsICdpbWFnZS9naWYnLCAnaW1hZ2UvanBlZycsICdpbWFnZS9qcGVnJywgJ2ltYWdlL3BuZyddO1xuZXhwb3J0IGNvbnN0IGlzSW5jbHVkZUltYWdlRXh0TGlzdCA9IChleHQ6IHN0cmluZywgbGlzdEV4dDogQXJyYXk8c3RyaW5nPiA9IEltYWdlRXh0TGlzdCkgPT4gbGlzdEV4dC5pbmNsdWRlcyhleHQpO1xuXG5leHBvcnQgY29uc3QgVmlkZW9FeHRMaXN0ID0gWydtcDQnLCAnbW92JywgJ21wZycsICdhdmknLCAnd212JywgJ3ZpZGVvL21wNCcsICd2aWRlby9xdWlja3RpbWUnLCAndmlkZW8vbXBlZycsICd2aWRlby94LW1zdmlkZW8nLCAndmlkZW8veC1tcy13bXYnXTtcbmV4cG9ydCBjb25zdCBpc0luY2x1ZGVWaWRlb0V4dExpc3QgPSAoZXh0OiBzdHJpbmcsIGxpc3RFeHQ6IEFycmF5PHN0cmluZz4gPSBWaWRlb0V4dExpc3QpID0+IGxpc3RFeHQuaW5jbHVkZXMoZXh0KTtcbmV4cG9ydCBjb25zdCBBdWRpb0V4dExpc3QgPSBbJ21wMycsICd3YXYnLCAnb2dnJywgJ2FhYycsICdtNGEnLCAnZmxhYycsICd3bWEnLCAnYXVkaW8vbXBlZycsICdhdWRpby93YXYnLCAnYXVkaW8vb2dnJywgJ2F1ZGlvL2FhYycsICdhdWRpby9tcDQnLCAnYXVkaW8vZmxhYycsICdhdWRpby94LW1zLXdtYSddO1xuZXhwb3J0IGNvbnN0IGlzSW5jbHVkZUF1ZGlvRXh0TGlzdCA9IChleHQ6IHN0cmluZywgbGlzdEV4dDogQXJyYXk8c3RyaW5nPiA9IEF1ZGlvRXh0TGlzdCkgPT4gbGlzdEV4dC5pbmNsdWRlcyhleHQpO1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZUV4dGVuc2lvbiA9IChmaWxlOiBJRmlsZSB8IEZpbGUpID0+IHtcbiAgaWYgKGZpbGUgaW5zdGFuY2VvZiBGaWxlICYmIGZpbGUudHlwZSkge1xuICAgIHJldHVybiAoZmlsZS50eXBlLnNwbGl0KCcvJykucG9wKCkgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgZmlsZSA9IGZpbGUgYXMgSUZpbGU7XG4gIGlmIChmaWxlLm1pbWV0eXBlIHx8IGZpbGUuZmlsZT8udHlwZSkge1xuICAgIHJldHVybiBmaWxlLm1pbWV0eXBlIHx8IGZpbGUuZmlsZT8udHlwZTtcbiAgfVxuXG4gIGxldCBmaWxlTmFtZSA9IGZpbGUubmFtZSBhcyBzdHJpbmc7XG4gIGNvbnN0IHVybCA9IGdldChmaWxlLCAndXJsJykgfHwgZ2V0KGZpbGUsICdvcmlnaW5fdXJsJyk7XG4gIGlmICghZmlsZU5hbWUgJiYgIXVybCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWZpbGVOYW1lICYmIHVybCkge1xuICAgIGZpbGVOYW1lID0gdXJsLnNwbGl0KCcvJykucG9wKCkgfHwgJyc7XG4gICAgc2V0KGZpbGUsICduYW1lJywgZmlsZU5hbWUpO1xuICB9XG4gIGNvbnN0IGRvdHMgPSBmaWxlTmFtZS5zcGxpdChcIi5cIik7XG5cbiAgaWYgKCFkb3RzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIChkb3RzLnBvcCgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsQnlTaXplRmlsZSA9IChzaXplOiBudW1iZXIsIHRvRml4ZWQgPSAyKSA9PiB7XG4gIGlmIChzaXplIDwgMTAyNCAqIDEwMjQpIHtcbiAgICByZXR1cm4gYCAkeyhzaXplIC8gMTAyNCkudG9GaXhlZCh0b0ZpeGVkKX0gS0JgO1xuICB9XG5cbiAgcmV0dXJuIGAgJHsoc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQodG9GaXhlZCl9IE1CYDtcbn07XG5cblxuXG5leHBvcnQgY29uc3QgY29udmVydEJsb2JUb0ZpbGUgPSAoYmxvYjogQmxvYiwgZmlsZU5hbWU/OiBzdHJpbmcpOiBGaWxlID0+IHtcbiAgY29uc3QgdHlwZSA9IGJsb2IudHlwZS5zcGxpdCgnLycpWzFdO1xuICBjb25zdCBuYW1lID0gZmlsZU5hbWUgPyBgJHtmaWxlTmFtZS5zcGxpdCgnLicpWzBdfS4ke3R5cGV9YCA6IGAke3V1aWQoKX0uJHt0eXBlfWA7XG5cbiAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgbmFtZSwgeyB0eXBlOiBibG9iLnR5cGUsIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKSB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VXJsVG9GaWxlID0gKHVybDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8RmlsZT4oKHJlc29sdmUscmVqZWN0KSA9PiB7XG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlID0gY29udmVydEJhc2U2NFRvQmxvYihyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICAgIHJlc29sdmUoY29udmVydEJsb2JUb0ZpbGUoZmlsZSwgZmlsZU5hbWUgfHwgRGF0ZS5ub3coKS50b0xvY2FsZVN0cmluZygpKSk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoeGhyLnJlc3BvbnNlKTtcbiAgICB9O1xuICAgIHhoci5vbmVycm9yID0gKGVycikgPT4ge1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfTtcbiAgICB4aHIub3BlbignR0VUJywgdXJsKTtcbiAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InO1xuICAgIHhoci5zZW5kKCk7XG4gIH0pO1xufTsiXX0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1RixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDNUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksSUFBSSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBRTFJLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtB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Q2QsQ0FBQyxDQUFDO1FBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckIsR0FBRyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDMUIsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRmlsZSB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5pbXBvcnQgeyBjb252ZXJ0QmFzZTY0VG9CbG9iIH0gZnJvbSBcIi4vYmFzZTY0XCI7XG5pbXBvcnQgeyBnZXQsIHNldCB9IGZyb20gXCIuL2hlbHBlcnNcIjtcbmltcG9ydCB7IHV1aWQgfSBmcm9tIFwiLi91dWlkXCI7XG5cbmV4cG9ydCBjb25zdCBpc1R5cGVJbWFnZSA9IChmaWxlOiBGaWxlIHwgQmxvYikgPT4gZmlsZS50eXBlLm1hdGNoKC9pbWFnZS4qLykgPyB0cnVlIDogZmFsc2U7XG5leHBvcnQgY29uc3QgaXNUeXBlVmlkZW8gPSAoZmlsZTogRmlsZSB8IEJsb2IpID0+IGZpbGUudHlwZS5tYXRjaCgvdmlkZW8uKi8pID8gdHJ1ZSA6IGZhbHNlO1xuZXhwb3J0IGNvbnN0IGlzVHlwZUF1ZGlvID0gKGZpbGU6IEZpbGUgfCBCbG9iKSA9PiBmaWxlLnR5cGUubWF0Y2goL2F1ZGlvLiovKSA/IHRydWUgOiBmYWxzZTtcbmV4cG9ydCBjb25zdCBpc1R5cGVGaWxlID0gKGZpbGU6IEZpbGUpID0+IGZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmaWxlKSA9PT0gJ1tvYmplY3QgRmlsZV0nID8gdHJ1ZSA6IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgRXhjZWxFeHRMaXN0ID0gWyd4bHMnLCAneGxzeCcsICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLCAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnXTtcbmV4cG9ydCBjb25zdCBEb2N1bWVudEV4dExpc3QgPSBbJ2RvYycsICdkb2N4JywgJ3hscycsICd4bHN4JywgJ3BwdCcsICdwcHR4JywgJ3BkZicsICdqc29uJywgJ3htbCcsICdhcHBsaWNhdGlvbi9tc3dvcmQnLFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLFxuICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nLFxuICAnYXBwbGljYXRpb24vcGRmJyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAnYXBwbGljYXRpb24veG1sJ107XG5leHBvcnQgY29uc3QgaXNJbmNsdWRlRG9jdW1lbnRFeHRMaXN0ID0gKGV4dDogc3RyaW5nLCBsaXN0RXh0OiBBcnJheTxzdHJpbmc+ID0gRG9jdW1lbnRFeHRMaXN0KSA9PiBsaXN0RXh0LmluY2x1ZGVzKGV4dCkgfHwgbGlzdEV4dC5pbmNsdWRlcyhgYXBwbGljYXRpb24vJHtleHR9YCk7XG5cbmV4cG9ydCBjb25zdCBJbWFnZUV4dExpc3QgPSBbJ2dpZicsICdqcGcnLCAnanBlZycsICdwbmcnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBlZycsICdpbWFnZS9wbmcnXTtcbmV4cG9ydCBjb25zdCBpc0luY2x1ZGVJbWFnZUV4dExpc3QgPSAoZXh0OiBzdHJpbmcsIGxpc3RFeHQ6IEFycmF5PHN0cmluZz4gPSBJbWFnZUV4dExpc3QpID0+IGxpc3RFeHQuaW5jbHVkZXMoZXh0KTtcblxuZXhwb3J0IGNvbnN0IFZpZGVvRXh0TGlzdCA9IFsnbXA0JywgJ21vdicsICdtcGcnLCAnYXZpJywgJ3dtdicsICd2aWRlby9tcDQnLCAndmlkZW8vcXVpY2t0aW1lJywgJ3ZpZGVvL21wZWcnLCAndmlkZW8veC1tc3ZpZGVvJywgJ3ZpZGVvL3gtbXMtd212J107XG5leHBvcnQgY29uc3QgaXNJbmNsdWRlVmlkZW9FeHRMaXN0ID0gKGV4dDogc3RyaW5nLCBsaXN0RXh0OiBBcnJheTxzdHJpbmc+ID0gVmlkZW9FeHRMaXN0KSA9PiBsaXN0RXh0LmluY2x1ZGVzKGV4dCk7XG5leHBvcnQgY29uc3QgQXVkaW9FeHRMaXN0ID0gWydtcDMnLCAnd2F2JywgJ29nZycsICdhYWMnLCAnbTRhJywgJ2ZsYWMnLCAnd21hJywgJ2F1ZGlvL21wZWcnLCAnYXVkaW8vd2F2JywgJ2F1ZGlvL29nZycsICdhdWRpby9hYWMnLCAnYXVkaW8vbXA0JywgJ2F1ZGlvL2ZsYWMnLCAnYXVkaW8veC1tcy13bWEnXTtcbmV4cG9ydCBjb25zdCBpc0luY2x1ZGVBdWRpb0V4dExpc3QgPSAoZXh0OiBzdHJpbmcsIGxpc3RFeHQ6IEFycmF5PHN0cmluZz4gPSBBdWRpb0V4dExpc3QpID0+IGxpc3RFeHQuaW5jbHVkZXMoZXh0KTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGVFeHRlbnNpb24gPSAoZmlsZTogSUZpbGUgfCBGaWxlKSA9PiB7XG4gIGlmIChmaWxlIGluc3RhbmNlb2YgRmlsZSAmJiBmaWxlLnR5cGUpIHtcbiAgICByZXR1cm4gKGZpbGUudHlwZS5zcGxpdCgnLycpLnBvcCgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIGZpbGUgPSBmaWxlIGFzIElGaWxlO1xuICBpZiAoZmlsZS5taW1ldHlwZSB8fCBmaWxlLmZpbGU/LnR5cGUpIHtcbiAgICByZXR1cm4gZmlsZS5taW1ldHlwZSB8fCBmaWxlLmZpbGU/LnR5cGU7XG4gIH1cblxuICBsZXQgZmlsZU5hbWUgPSBmaWxlLm5hbWUgYXMgc3RyaW5nO1xuICBjb25zdCB1cmwgPSBnZXQoZmlsZSwgJ3VybCcpIHx8IGdldChmaWxlLCAnb3JpZ2luX3VybCcpO1xuICBpZiAoIWZpbGVOYW1lICYmICF1cmwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFmaWxlTmFtZSAmJiB1cmwpIHtcbiAgICBmaWxlTmFtZSA9IHVybC5zcGxpdCgnLycpLnBvcCgpIHx8ICcnO1xuICAgIHNldChmaWxlLCAnbmFtZScsIGZpbGVOYW1lKTtcbiAgfVxuICBjb25zdCBkb3RzID0gZmlsZU5hbWUuc3BsaXQoXCIuXCIpO1xuXG4gIGlmICghZG90cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiAoZG90cy5wb3AoKSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbEJ5U2l6ZUZpbGUgPSAoc2l6ZTogbnVtYmVyLCB0b0ZpeGVkID0gMikgPT4ge1xuICBpZiAoc2l6ZSA8IDEwMjQgKiAxMDI0KSB7XG4gICAgcmV0dXJuIGAgJHsoc2l6ZSAvIDEwMjQpLnRvRml4ZWQodG9GaXhlZCl9IEtCYDtcbiAgfVxuXG4gIHJldHVybiBgICR7KHNpemUgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKHRvRml4ZWQpfSBNQmA7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEJsb2JUb0ZpbGUgPSAoYmxvYjogQmxvYiwgZmlsZU5hbWU/OiBzdHJpbmcpOiBGaWxlID0+IHtcbiAgY29uc3QgdHlwZSA9IGJsb2IudHlwZS5zcGxpdCgnLycpWzFdO1xuICBjb25zdCBuYW1lID0gZmlsZU5hbWUgPyBgJHtmaWxlTmFtZS5zcGxpdCgnLicpWzBdfS4ke3R5cGV9YCA6IGAke3V1aWQoKX0uJHt0eXBlfWA7XG5cbiAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgbmFtZSwgeyB0eXBlOiBibG9iLnR5cGUsIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKSB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VXJsVG9GaWxlID0gKHVybDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8RmlsZSB8IHVuZGVmaW5lZD4oKHJlc29sdmUscmVqZWN0KSA9PiB7XG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlID0gY29udmVydEJhc2U2NFRvQmxvYihyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICAgIHJlc29sdmUoY29udmVydEJsb2JUb0ZpbGUoZmlsZSwgZmlsZU5hbWUgfHwgRGF0ZS5ub3coKS50b0xvY2FsZVN0cmluZygpKSk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoKSA9PiByZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh4aHIucmVzcG9uc2UpO1xuICAgIH07XG4gICAgeGhyLm9uZXJyb3IgPSAoZXJyKSA9PiB7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9O1xuICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpO1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYic7XG4gICAgeGhyLnNlbmQoKTtcbiAgfSk7XG59OyJdfQ==