@sumaris-net/ngx-components 18.6.23 → 18.6.24
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.
|
@@ -72,7 +72,7 @@ export class PlatformService extends StartableService {
|
|
|
72
72
|
_capacitor;
|
|
73
73
|
_android;
|
|
74
74
|
_ios;
|
|
75
|
-
busySubject = new BehaviorSubject(
|
|
75
|
+
busySubject = new BehaviorSubject(false);
|
|
76
76
|
constructor(ionicPlatform, cdkPlatform, cdkClipboard, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, audioProvider, environment, loggingService, downloader) {
|
|
77
77
|
super(ionicPlatform);
|
|
78
78
|
this.ionicPlatform = ionicPlatform;
|
|
@@ -608,4 +608,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
608
608
|
}] }, { type: i13.Downloader, decorators: [{
|
|
609
609
|
type: Optional
|
|
610
610
|
}] }] });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUYsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsT0FBTyxFQUErQixzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FB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b20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFRva2VuVHlwZSB9IGZyb20gJy4vbmV0d29yay50eXBlcyc7XG5pbXBvcnQgeyBQbGF0Zm9ybXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBMb2NhbFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICdpb25pYy1jYWNoZSc7XG5pbXBvcnQgeyBBdWRpb1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2F1ZGlvL2F1ZGlvJztcbmltcG9ydCB7IFBsYXRmb3JtIGFzIENka1BsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcblxuaW1wb3J0IHsgaXNOaWxPckJsYW5rLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rLCB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEVudGl0aWVzU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS9lbnRpdGllcy1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3RvYXN0L3RvYXN0cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHNraXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBEb3dubG9hZGVyLCBEb3dubG9hZFJlcXVlc3QsIE5vdGlmaWNhdGlvblZpc2liaWxpdHkgfSBmcm9tICdAaW9uaWMtbmF0aXZlL2Rvd25sb2FkZXIvbmd4JztcbmltcG9ydCB7IFN0YXJ0YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgaXNNb2JpbGUsIGlzV2luZG93cyB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbGF0Zm9ybXMnO1xuaW1wb3J0IHsgVmVyc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3ZlcnNpb24vdmVyc2lvbnMnO1xuaW1wb3J0IHsgRmlsZXNVdGlscywgTWltZVR5cGVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ZpbGUvZmlsZS51dGlscyc7XG5pbXBvcnQgeyBVcmlVdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL3VyaS51dGlscyc7XG5pbXBvcnQgeyBTcGxhc2hTY3JlZW4gfSBmcm9tICdAY2FwYWNpdG9yL3NwbGFzaC1zY3JlZW4nO1xuaW1wb3J0IHsgU3RhdHVzQmFyIH0gZnJvbSAnQGNhcGFjaXRvci9zdGF0dXMtYmFyJztcbmltcG9ydCB7IEJyb3dzZXIsIE9wZW5PcHRpb25zIH0gZnJvbSAnQGNhcGFjaXRvci9icm93c2VyJztcbmltcG9ydCB7IEtleWJvYXJkIH0gZnJvbSAnQGNhcGFjaXRvci9rZXlib2FyZCc7XG5pbXBvcnQgeyBDYXBhY2l0b3JQbHVnaW5zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NhcGFjaXRvci9wbHVnaW5zJztcbmltcG9ydCB7IGxvY2FsZSBhcyBtb21lbnRMb2NhbGUgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSUxvZ2dlciwgSUxvZ2dpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dpbmcvbG9nZ2VyLm1vZGVsJztcbmltcG9ydCB7IEFQUF9MT0dHSU5HX1NFUlZJQ0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2luZy9sb2dnaW5nLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIGFzIENka0NsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGNhcGFjaXRvci9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgV3JpdGVPcHRpb25zIH0gZnJvbSAnQGNhcGFjaXRvci9jbGlwYm9hcmQvZGlzdC9lc20vZGVmaW5pdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgQW5kcm9pZE9zRW52aXJvbm1lbnQgPSBPYmplY3QuZnJlZXplKHtcbiAgRElSRUNUT1JZX0RPV05MT0FEUzogJ0Rvd25sb2FkJyxcbiAgRElSRUNUT1JZX0RPV05MT0FEU19PTEQ6ICdEb3dubG9hZHMnLCAvLyBPbGQgbmFtZSwgZm9yIG9sZGVyIEFuZHJvaWQgdmVyc2lvblxuICAvLyBUT0RPOiBmaW5kIHZhbHVlIGZvciB0aGlzLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvb3MvRW52aXJvbm1lbnQjZ2V0RXh0ZXJuYWxTdG9yYWdlU3RhdGUoamF2YS5pby5GaWxlKVxuICAvLyBESVJFQ1RPUllfTVVTSUMsXG4gIC8vIERJUkVDVE9SWV9QT0RDQVNUUyxcbiAgLy8gRElSRUNUT1JZX1JJTkdUT05FUyxcbiAgLy8gRElSRUNUT1JZX0FMQVJNUyxcbiAgLy8gRElSRUNUT1JZX05PVElGSUNBVElPTlMsXG4gIC8vIERJUkVDVE9SWV9QSUNUVVJFUyxcbiAgLy8gRElSRUNUT1JZX01PVklFUyxcbiAgLy8gRElSRUNUT1JZX0RDSU0sXG4gIC8vIERJUkVDVE9SWV9ET0NVTUVOVFMsXG4gIC8vIERJUkVDVE9SWV9BVURJT0JPT0tTLFxufSk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1TZXJ2aWNlIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlcjtcbiAgcHJpdmF0ZSBfbW9iaWxlOiBib29sZWFuO1xuICBwcml2YXRlIF9kZXNrdG9wOiBib29sZWFuO1xuICBwcml2YXRlIF9jb3Jkb3ZhOiBib29sZWFuO1xuICBwcml2YXRlIF9jYXBhY2l0b3I6IGJvb2xlYW47XG4gIHByaXZhdGUgX2FuZHJvaWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2lvczogYm9vbGVhbjtcblxuICBidXN5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpb25pY1BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBwcml2YXRlIGNka1BsYXRmb3JtOiBDZGtQbGF0Zm9ybSxcbiAgICBwcml2YXRlIGNka0NsaXBib2FyZDogQ2RrQ2xpcGJvYXJkLFxuICAgIHByaXZhdGUgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlQWRhcHRlcjogTW9tZW50RGF0ZUFkYXB0ZXIsXG4gICAgcHJpdmF0ZSBlbnRpdGllc1N0b3JhZ2U6IEVudGl0aWVzU3RvcmFnZSxcbiAgICBwcml2YXRlIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIG5ldHdvcmtTZXJ2aWNlOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcml2YXRlIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZTogQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXVkaW9Qcm92aWRlcjogQXVkaW9Qcm92aWRlcixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0xPR0dJTkdfU0VSVklDRSkgbG9nZ2luZ1NlcnZpY2U6IElMb2dnaW5nU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRvd25sb2FkZXI6IERvd25sb2FkZXJcbiAgKSB7XG4gICAgc3VwZXIoaW9uaWNQbGF0Zm9ybSk7XG5cbiAgICB0aGlzLl9sb2dnZXIgPSBsb2dnaW5nU2VydmljZT8uZ2V0TG9nZ2VyKCdwbGF0Zm9ybScpO1xuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbcGxhdGZvcm1dIENyZWF0aW5nIHNlcnZpY2UnKTtcblxuICAgIGlmICh0aGlzLl9sb2dnZXIpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnY3RvcicsICdDcmVhdGluZyBzZXJ2aWNlJyk7XG4gICAgICBpb25pY1BsYXRmb3JtLnBhdXNlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdjdG9yJywgJ1BhdXNlIGFwcCcpO1xuICAgICAgfSk7XG4gICAgICBpb25pY1BsYXRmb3JtLnJlc3VtZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnY3RvcicsICdSZXN1bWUgYXBwJyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZG93bmxvYWRpbmdKb2JzOiBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+ID0gbmV3IE1hcCgpO1xuXG4gIHByaXZhdGUgY2hlY2tBcHBWZXJzaW9uVGltZXI6IFN1YnNjcmlwdGlvbjtcblxuICBpcyhwbGF0Zm9ybU5hbWU6IFBsYXRmb3Jtcyk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAocGxhdGZvcm1OYW1lKSB7XG4gICAgICBjYXNlICdtb2JpbGUnOlxuICAgICAgICAvLyBFeGNsdWRlIFdpbmRvd3MgdG91Y2ggc2NyZWVucyAtIHNlZSBzdW1hcmlzLWFwcCBpc3N1ZXMgIzMyMyBhbmQgIzM0NlxuICAgICAgICByZXR1cm4gaXNNb2JpbGUod2luZG93KTtcbiAgICAgIGNhc2UgJ21vYmlsZXdlYic6XG4gICAgICAgIC8vIEV4Y2x1ZGUgV2luZG93cyB0b3VjaCBzY3JlZW5zIC0gc2VlIHN1bWFyaXMtYXBwIGlzc3VlcyAjMzIzIGFuZCAjMzQ2XG4gICAgICAgIHJldHVybiB0aGlzLmlvbmljUGxhdGZvcm0uaXMocGxhdGZvcm1OYW1lKSAmJiAhaXNXaW5kb3dzKHdpbmRvdyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5pb25pY1BsYXRmb3JtLmlzKHBsYXRmb3JtTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwodGhpcy5fbW9iaWxlKSA/IHRoaXMuX21vYmlsZSA6IHRoaXMuaXMoJ21vYmlsZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNheSBpZiBvcGVuZWQgaGFzIGJlZW4gb3BlbmVkIGluc2lkZSBhbiBBbmRyb2lkIG9yIGlPcyBBcHAuXG4gICAqIFRoaXMgaXMgdXNlZCB0byBrbm93biBpZiB0aGVyZSBpcyBjb3Jkb3ZhIGZlYXR1cmVzXG4gICAqL1xuICBpc0NhcGFjaXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2FwYWNpdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFNheSBpZiBvcGVuZWQgaGFzIGJlZW4gb3BlbmVkIGluc2lkZSBhbiBBbmRyb2lkIG9yIGlPcyBBcHAuXG4gICAqIFRoaXMgaXMgdXNlZCB0byBrbm93biBpZiB0aGVyZSBpcyBjb3Jkb3ZhIGZlYXR1cmVzXG4gICAqL1xuICBpc0NvcmRvdmEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvcmRvdmE7XG4gIH1cblxuICBpc0FuZHJvaWRDb3Jkb3ZhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fYW5kcm9pZCAmJiB0aGlzLl9jb3Jkb3ZhKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGlzSU9TQ29yZG92YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuX2lvcyAmJiB0aGlzLl9jb3Jkb3ZhKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYW5kcm9pZCB8fCBmYWxzZTtcbiAgfVxuXG4gIGlzSU9TKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pb3MgfHwgZmFsc2U7XG4gIH1cblxuICBpc01hY09TRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGVza3RvcCAmJiB0aGlzLmlzQ29yZG92YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIElzIGEgbmF0aXZlIEFwcCAoYW5kIE5PVCBhIG1vYmlsZSB3ZWIpXG4gICAqL1xuICBpc0FwcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0FuZHJvaWRDb3Jkb3ZhKCkgfHwgdGhpcy5pc0lPU0NvcmRvdmEoKTtcbiAgfVxuXG4gIGlzV2ViKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0FwcCgpO1xuICB9XG5cbiAgaXNNb2JpbGVXZWIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9iaWxlICYmIHRoaXMuaXNXZWIoKTtcbiAgfVxuXG4gIGdldCBjYW5Eb3dubG9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kb3dubG9hZGVyICYmIHRoaXMuaXNBbmRyb2lkQ29yZG92YSgpO1xuICB9XG5cbiAgZ2V0IGNhbk9wZW5GaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTsgLy8gVE9ETzogZml4bWUgdXNpbmcgQGNhcGFjaXRvci9maWxlc3lzdGVtID9cbiAgfVxuXG4gIHdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW9uaWNQbGF0Zm9ybS53aWR0aCgpO1xuICB9XG5cbiAgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW9uaWNQbGF0Zm9ybS5oZWlnaHQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuYWNjb3VudFNlcnZpY2UudG9rZW5UeXBlID0gdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBTdGFydGluZyBwbGF0Zm9ybS4uLicpO1xuICAgIHRoaXMuX2xvZ2dlcj8uaW5mbygnbmdPblN0YXJ0JywgJ1N0YXJ0aW5nIHBsYXRmb3JtLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fbW9iaWxlID0gdGhpcy5pcygnbW9iaWxlJyk7XG4gICAgICB0aGlzLl9kZXNrdG9wID0gdGhpcy5pcygnZGVza3RvcCcpO1xuICAgICAgdGhpcy5fY29yZG92YSA9IHRoaXMuaXMoJ2NvcmRvdmEnKTtcbiAgICAgIHRoaXMuX2NhcGFjaXRvciA9IHRoaXMuaXMoJ2NhcGFjaXRvcicpO1xuICAgICAgdGhpcy5fYW5kcm9pZCA9IHRoaXMuaXMoJ2FuZHJvaWQnKTtcbiAgICAgIHRoaXMuX2lvcyA9IHRoaXMuaXMoJ2lvcycpO1xuXG4gICAgICBjb25zdCBsb2dNZXNzYWdlID0gYERldGVjdGVkIHttb2JpbGU6ICR7dGhpcy5fbW9iaWxlfSwgZGVza3RvcDogJHt0aGlzLl9kZXNrdG9wfSwgY29yZG92YTogJHt0aGlzLl9jb3Jkb3ZhfSwgY2FwYWNpdG9yOiAke3RoaXMuX2NhcGFjaXRvcn0sIGFuZHJvaWQ6ICR7dGhpcy5fYW5kcm9pZH0sIGlvczogJHt0aGlzLl9pb3N9fWA7XG4gICAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gJyArIGxvZ01lc3NhZ2UpO1xuICAgICAgdGhpcy5fbG9nZ2VyPy5pbmZvKCduZ09uU3RhcnQnLCBsb2dNZXNzYWdlKTtcblxuICAgICAgLy8gQ29uZmlndXJlIHRoZW1lXG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyZVRoZW1lKHRoaXMuX21vYmlsZSk7XG5cbiAgICAgIC8vIENvbmZpZ3VyZSBDYXBhY2l0b3IgcGx1Z2luc1xuICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVDYXBhY2l0b3JQbHVnaW5zKCk7XG5cbiAgICAgIC8vIENvbmZpZ3VyZSB0cmFuc2xhdGlvblxuICAgICAgdGhpcy5jb25maWd1cmVUcmFuc2xhdGUoKTtcblxuICAgICAgLy8gQ29uZmlndXJlIGNhY2hlXG4gICAgICB0aGlzLmNvbmZpZ3VyZUNhY2hlKCk7XG5cbiAgICAgIC8vIFN0YXJ0IHJvb3Qgc2VydmljZXNcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLmVudGl0aWVzU3RvcmFnZS5yZWFkeSgpLCB0aGlzLnNldHRpbmdzLnJlYWR5KCksIHRoaXMubmV0d29ya1NlcnZpY2UucmVhZHkoKSwgdGhpcy5hdWRpb1Byb3ZpZGVyLnJlYWR5KCldKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgd2ViIGFwcCBoYXMgdXBkYXRlLCBhbmQgcmVsb2FkIHBhZ2UgaWYgbmVlZFxuICAgICAgaWYgKHRoaXMuaXNXZWIoKSAmJiB0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0FwcFZlcnNpb24oeyBjYW5SZWxvYWQ6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZSBjb25maWd1cmF0aW9uIHdoZW4gbmV0d29yayBjaGFuZ2VkXG4gICAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgICB0aGlzLm5ldHdvcmtTZXJ2aWNlLm9uTmV0d29ya1N0YXR1c0NoYW5nZXNcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHNraXAoMSkgLy8gQWxyZWFkeSBkb25lIG9uY2UsIHNvIHdlIHNraXAgdGhlIGZpcnN0IGV2ZW50XG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHR5cGUpID0+IHRoaXMuY29uZmlndXJlQ2FjaGUodHlwZSAhPT0gJ25vbmUnKSlcbiAgICAgICk7XG5cbiAgICAgIGNvbnNvbGUuaW5mbyhcbiAgICAgICAgYFtwbGF0Zm9ybV0gU3RhcnRpbmcgcGxhdGZvcm0gW09LXSB7bW9iaWxlOiAke3RoaXMuX21vYmlsZX0sIGNhcGFjaXRvcjogJHt0aGlzLl9jYXBhY2l0b3J9LCB3ZWI6ICR7dGhpcy5pc1dlYigpfSwgZG93bmxvYWRlcjogJHt0aGlzLmNhbkRvd25sb2FkfX0gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYFxuICAgICAgKTtcblxuICAgICAgLy8gUGFzcyBhdXRoIHRva2VuXG4gICAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgaWYgKCFjb25maWcpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgICAgICAgLy8gVXBkYXRlIGF1dGhlbnRpY2F0aW9uIHR5cGVcbiAgICAgICAgICBjb25zdCB0b2tlblR5cGU6IEF1dGhUb2tlblR5cGUgPSBjb25maWcuZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5BVVRIX1RPS0VOX1RZUEUpIGFzIEF1dGhUb2tlblR5cGU7XG4gICAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayh0b2tlblR5cGUpICYmIHRoaXMuYWNjb3VudFNlcnZpY2UudG9rZW5UeXBlICE9PSB0b2tlblR5cGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBVc2luZyBhdXRoIHRva2VuIHR5cGUgeyR7dG9rZW5UeXBlfX1gKTtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2UudG9rZW5UeXBlID0gdG9rZW5UeXBlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEVuYWJsZSBhdXRoIEFQSSB1c2luZyB0b2tlbnNcbiAgICAgICAgICBjb25zdCBhdXRoQXBpRW5hYmxlZCA9IGNvbmZpZy5nZXRQcm9wZXJ0eUFzQm9vbGVhbihDT1JFX0NPTkZJR19PUFRJT05TLkFVVEhfQVBJX1RPS0VOX0VOQUJMRUQpO1xuICAgICAgICAgIGlmIChpc05vdE5pbChhdXRoQXBpRW5hYmxlZCkgJiYgYXV0aEFwaUVuYWJsZWQgIT09IHRoaXMuYWNjb3VudFNlcnZpY2UuYXBpVG9rZW5FbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gVXNpbmcgYXV0aCBBUEkgdG9rZW5zID8gJHthdXRoQXBpRW5hYmxlZH19YCk7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLmFwaVRva2VuRW5hYmxlZCA9IGF1dGhBcGlFbmFibGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLl9tb2JpbGUgfHwgdGhpcy5pc01hY09TRGVza3RvcCgpKSB7XG4gICAgICAgIC8vIEhpZGUgdGhlIHNwbGFzaHNjcmVlbiAoaWYgbW9iaWxlKSAtIGFmdGVyIDFzIC0gYW5kIHBsYXkgc3RhcnQgc291bmRcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgU3BsYXNoU2NyZWVuLmhpZGUoKTtcblxuICAgICAgICAgIC8vIFBsYXkgc3RhcnR1cCBzb3VuZFxuICAgICAgICAgIGlmICh0aGlzLl9tb2JpbGUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYXVkaW9Qcm92aWRlci5wbGF5U3RhcnR1cFNvdW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgbmV3IHZlcnNpb24sIGV2ZXJ5IDEgbWluXG4gICAgICBjb25zdCBjaGVja0ludGVydmFsTXMgPSAodGhpcy5lbnZpcm9ubWVudC5jaGVja0FwcFZlcnNpb25JbnRlcnZhbEluU2Vjb25kcyB8fCAwKSAqIDEwMDA7XG4gICAgICBpZiAodGhpcy5pc1dlYigpICYmIHRoaXMuZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiBjaGVja0ludGVydmFsTXMgPiAwKSB7XG4gICAgICAgIHRoaXMuY2hlY2tBcHBWZXJzaW9uVGltZXI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRpbWVyKGNoZWNrSW50ZXJ2YWxNcywgY2hlY2tJbnRlcnZhbE1zKS5zdWJzY3JpYmUoKF8pID0+XG4gICAgICAgICAgdGhpcy5jaGVja0FwcFZlcnNpb24oeyBzaWxlbnQ6IHRydWUsIGNhblJlbG9hZDogZmFsc2UgLypkbyBOT1QgYXV0byByZWxvYWQsIHdoZW4gYXBwIGlzIHN0YXJ0ZWQqLyB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNoZWNrQXBwVmVyc2lvblRpbWVyID0gc3Vic2NyaXB0aW9uO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIHN1YnNjcmlwdGlvbi5hZGQoKCkgPT4gdGhpcy51bnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbikpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gTWFuYWdlIHN0YXJ0dXAgZXJyb3JcbiAgICAgIHJldHVybiB0aGlzLm9uU3RhcnR1cEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2hvdyBhIGJhY2tkcm9wIHdoZW4gcGxhdGZvcm0gaXMgYnVzeSAoZS5nLiBmcm9tIHRoZSBhcHAuY29tcG9uZW50LnRzKVxuICAgKi9cbiAgbWFya0FzQnVzeSgpIHtcbiAgICBpZiAoIXRoaXMuYnVzeVN1YmplY3QudmFsdWUpIHtcbiAgICAgIHRoaXMuYnVzeVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBtYXJrQXNOb3RCdXN5KCkge1xuICAgIGlmICh0aGlzLmJ1c3lTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmJ1c3lTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW4odXJsOiBzdHJpbmcsIG9wdHM/OiBPbWl0PE9wZW5PcHRpb25zLCAndXJsJz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gT3BlbmluZyBsaW5rOiAke3VybH1gKTtcbiAgICBpZiAodGhpcy5fbW9iaWxlICYmIHRoaXMuX2NhcGFjaXRvcikge1xuICAgICAgYXdhaXQgQnJvd3Nlci5vcGVuKHsgdXJsLCAuLi5vcHRzIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3Blbih1cmwsIG9wdHM/LndpbmRvd05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldERvd25sb2FkaW5nSm9iKHVyaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxvYWRpbmdKb2JzLmdldCh1cmkpO1xuICB9XG5cbiAgZG93bmxvYWQocmVxdWVzdDogeyB1cmk6IHN0cmluZzsgZmlsZW5hbWU/OiBzdHJpbmcgfSAmIFBhcnRpYWw8RG93bmxvYWRSZXF1ZXN0Pik6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFyZXF1ZXN0IHx8ICFyZXF1ZXN0LnVyaSkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBhcmd1bWVudCAncmVxdWVzdCcgb3IgJ3JlcXVlc3QudXJpJ1wiKTtcblxuICAgIGlmICh0aGlzLmNhbkRvd25sb2FkKSB7XG4gICAgICAvLyBDaGVjayBpZiBub3QgYWxyZWFkeSBkb3dubG9hZGluZyBmaWxlXG4gICAgICBsZXQgam9iJCA9IHRoaXMuX2Rvd25sb2FkaW5nSm9icy5nZXQocmVxdWVzdC51cmkpO1xuICAgICAgaWYgKGpvYiQpIHJldHVybiBqb2IkO1xuXG4gICAgICAvLyBDb21wdXRlIHN1YlBhdGggKGZpbmFsIGZpbGVuYW1lKVxuICAgICAgbGV0IHN1YlBhdGggPVxuICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbFB1YmxpY0Rpcj8uc3ViUGF0aCB8fFxuICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbEZpbGVzRGlyPy5zdWJQYXRoIHx8XG4gICAgICAgIHJlcXVlc3QuZmlsZW5hbWUgfHxcbiAgICAgICAgVXJpVXRpbHMuZ2V0RmlsZW5hbWUocmVxdWVzdC51cmkpIHx8XG4gICAgICAgIHJlcXVlc3QudGl0bGUgfHxcbiAgICAgICAgJ2Rvd25sb2FkJztcblxuICAgICAgc3ViUGF0aCA9IHN1YlBhdGhcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLy8gUmVtb3ZlIHNwYWNlc1xuICAgICAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpO1xuXG4gICAgICAvLyBGb3JjZSBBUEsgdG8gZmluaXNoIHdpdGggJy5hcGsnXG4gICAgICBpZiAocmVxdWVzdC5taW1lVHlwZSA9PT0gTWltZVR5cGVzLkFORFJPSURfQVBLICYmICFzdWJQYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5hcGsnKSkge1xuICAgICAgICBzdWJQYXRoICs9ICcuYXBrJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgZG93bmxvYWRSZXF1ZXN0ID0gPERvd25sb2FkUmVxdWVzdD57XG4gICAgICAgIHZpc2libGVJbkRvd25sb2Fkc1VpOiB0cnVlLFxuICAgICAgICBub3RpZmljYXRpb25WaXNpYmlsaXR5OiBOb3RpZmljYXRpb25WaXNpYmlsaXR5LlZpc2libGVOb3RpZnlDb21wbGV0ZWQsXG4gICAgICAgIC4uLnJlcXVlc3QsXG4gICAgICAgIGZpbGVuYW1lOiB1bmRlZmluZWQsIC8vIEZvcmNlIHVuc2V0XG4gICAgICAgIGRlc3RpbmF0aW9uSW5FeHRlcm5hbFB1YmxpY0RpcjogIXJlcXVlc3QuZGVzdGluYXRpb25JbkV4dGVybmFsRmlsZXNEaXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgZGlyVHlwZTogQW5kcm9pZE9zRW52aXJvbm1lbnQuRElSRUNUT1JZX0RPV05MT0FEUyxcbiAgICAgICAgICAgICAgLi4ucmVxdWVzdC5kZXN0aW5hdGlvbkluRXh0ZXJuYWxQdWJsaWNEaXIsXG4gICAgICAgICAgICAgIHN1YlBhdGgsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGRlc3RpbmF0aW9uSW5FeHRlcm5hbEZpbGVzRGlyOiByZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbEZpbGVzRGlyXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGRpclR5cGU6IEFuZHJvaWRPc0Vudmlyb25tZW50LkRJUkVDVE9SWV9ET1dOTE9BRFMsXG4gICAgICAgICAgICAgIC4uLnJlcXVlc3QuZGVzdGluYXRpb25JbkV4dGVybmFsRmlsZXNEaXIsXG4gICAgICAgICAgICAgIHN1YlBhdGgsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9O1xuXG4gICAgICAvLyBTdGFydCBkb3dubG9hZFxuICAgICAgY29uc29sZS5kZWJ1ZygnW3BsYXRmb3JtXSBEb3dubG9hZGluZywgdXNpbmcgcmVxdWVzdDogJyArIEpTT04uc3RyaW5naWZ5KGRvd25sb2FkUmVxdWVzdCkpO1xuICAgICAgam9iJCA9IGZyb20odGhpcy5kb3dubG9hZGVyLmRvd25sb2FkKGRvd25sb2FkUmVxdWVzdCkpO1xuXG4gICAgICAvLyBSZW1lbWJlciB0aGlzIHJlcXVlc3QgdXJpXG4gICAgICB0aGlzLl9kb3dubG9hZGluZ0pvYnMuc2V0KGRvd25sb2FkUmVxdWVzdC51cmksIGpvYiQpO1xuICAgICAgcmV0dXJuIGpvYiQucGlwZShcbiAgICAgICAgdGFwKChsb2NhdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBGaWxlIHN1Y2Nlc3NmdWxseSBkb3dubG9hZGVkIGF0OicgKyBsb2NhdGlvbik7XG4gICAgICAgICAgLy8gRm9yZ2V0IGpvYlxuICAgICAgICAgIHRoaXMuX2Rvd25sb2FkaW5nSm9icy5kZWxldGUoZG93bmxvYWRSZXF1ZXN0LnVyaSk7XG4gICAgICAgICAgcmV0dXJuIGxvY2F0aW9uO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW3BsYXRmb3JtXSBVbmFibGUgdG8gZG93bmxvYWQ6ICcgKyAoKGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyKSk7XG4gICAgICAgICAgLy8gRm9yZ2V0IHRoZSByZXF1ZXN0XG4gICAgICAgICAgdGhpcy5fZG93bmxvYWRpbmdKb2JzLmRlbGV0ZShkb3dubG9hZFJlcXVlc3QudXJpKTtcblxuICAgICAgICAgIC8vIFJldHJ5IHdpdGggYW5vdGhlciBsb2NhdGlvbiAtIGlzc3VlIGluIG9sZGVyIEFuZHJvaWQgdmVyc2lvblxuICAgICAgICAgIGlmIChkb3dubG9hZFJlcXVlc3QuZGVzdGluYXRpb25JbkV4dGVybmFsUHVibGljRGlyPy5kaXJUeXBlID09PSBBbmRyb2lkT3NFbnZpcm9ubWVudC5ESVJFQ1RPUllfRE9XTkxPQURTKSB7XG4gICAgICAgICAgICBkb3dubG9hZFJlcXVlc3QuZGVzdGluYXRpb25JbkV4dGVybmFsUHVibGljRGlyLmRpclR5cGUgPSBBbmRyb2lkT3NFbnZpcm9ubWVudC5ESVJFQ1RPUllfRE9XTkxPQURTX09MRDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkKGRvd25sb2FkUmVxdWVzdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgKGlmIG5vdCBBbmRyb2lkIGFuZCBDYXBhY2l0b3IpOiBvcGVuaW5nIHRoZSBVUklcbiAgICAvLyBUT0RPOiBmaW5kIGEgd2F5IHRvIGRvd25sb2FkIHVuZGVyIGlPUyAoc2VlIGh0dHBzOi8vd3d3LmMtc2hhcnBjb3JuZXIuY29tL2FydGljbGUvaG93LXRvLWRvd25sb2FkLWEtZmlsZS11c2luZy1maWxlLXRyYW5zZmVyLXBsdWdpbi1pbi1pb25pYy0zLylcbiAgICBlbHNlIHtcbiAgICAgIEZpbGVzVXRpbHMuZG93bmxvYWRVcmkocmVxdWVzdC51cmksIHJlcXVlc3QuZmlsZW5hbWUpO1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY29weVRvQ2xpcGJvYXJkKGRhdGE6IHN0cmluZyB8IFdyaXRlT3B0aW9ucywgb3B0cz86IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyA/IGRhdGEgOiBkYXRhLnN0cmluZztcbiAgICBsZXQgY29waWVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pc0FuZHJvaWRDb3Jkb3ZhKCkpIHtcbiAgICAgIGNvbnN0IHdyaXRlT3B0aW9ucyA9IHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyA/IHsgc3RyaW5nOiB2YWx1ZSB9IDogZGF0YTtcbiAgICAgIGF3YWl0IENsaXBib2FyZC53cml0ZSh3cml0ZU9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3BpZWQgPSB0aGlzLmNka0NsaXBib2FyZC5jb3B5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY29waWVkKSB7XG4gICAgICAvLyBTaG93IHRvYXN0XG4gICAgICBpZiAob3B0cyAmJiBpc05vdE5pbE9yQmxhbmsob3B0cy5tZXNzYWdlKSkge1xuICAgICAgICBhd2FpdCBUb2FzdHMuc2hvdyh0aGlzLnRvYXN0Q29udHJvbGxlciwgdGhpcy50cmFuc2xhdGUsIHtcbiAgICAgICAgICB0eXBlOiAnaW5mbycsXG4gICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1twbGF0Zm9ybV0gVW5hYmxlIHRvIGNvcHkgdG8gY2xpcGJvYXJkOiAnICsgZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRGFya1RoZW1lKGVuYWJsZTogYm9vbGVhbikge1xuICAgIGlmIChlbmFibGUgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2RhcmsnKSkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW3BsYXRmb3JtXSBFbmFibGUgZGFyayBtb2RlLi4uJyk7XG4gICAgfVxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdkYXJrJywgZW5hYmxlKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvbmZpZ3VyZVRoZW1lKG1vYmlsZTogYm9vbGVhbiwgd2luOiBhbnkgPSB3aW5kb3cpIHtcbiAgICAvLyBMaXN0ZW4gZm9yIGNoYW5nZXMgdG8gc2V0dGluZ3MgZGFyayBtb2RlXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuYWxsb3dEYXJrTW9kZSkge1xuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLnNldHRpbmdzLmRhcmtNb2RlJC5zdWJzY3JpYmUoKGRhcmtNb2RlKSA9PiB0aGlzLnRvZ2dsZURhcmtUaGVtZShkYXJrTW9kZSkpKTtcbiAgICB9XG5cbiAgICAvLyBXb3JrYXJvdW5kLCBmb3IgTVMgV2luZG93cyB0b3VjaCBzY3JlZW4gKGRldGVjdGVkIGFzIG1vYmlsZSwgYnV0IGZvcmNlZCBhcyBkZXNrdG9wKVxuICAgIGlmIChcbiAgICAgICFtb2JpbGUgJiZcbiAgICAgICh3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoJ3BsdC1tb2JpbGUnKSB8fCB3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoJ3BsdC1tb2JpbGV3ZWInKSlcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybignW3BsYXRmb3JtXSBGb3JjZSBjbGFzcyBsaXN0IHRvOiA8aHRtbCBjbGFzcz1cInBsdC1kZXNrdG9wXCI+LiBXb3JrYXJvdW5kIGZvciBXaW5kb3dzIHRvdWNoIHNjcmVlbi4nKTtcbiAgICAgIHdpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncGx0LW1vYmlsZScsICdwbHQtbW9iaWxld2ViJyk7XG4gICAgICB3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3BsdC1kZXNrdG9wJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvbmZpZ3VyZUNhcGFjaXRvclBsdWdpbnMoKSB7XG4gICAgaWYgKCF0aGlzLl9jYXBhY2l0b3IpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgY29uc29sZS5pbmZvKCdbcGxhdGZvcm1dIENvbmZpZ3VyaW5nIENhcGFjaXRvciBwbHVnaW5zLi4uJyk7XG5cbiAgICBsZXQgcGx1Z2luTmFtZTogc3RyaW5nO1xuICAgIHRyeSB7XG4gICAgICBwbHVnaW5OYW1lID0gQ2FwYWNpdG9yUGx1Z2lucy5TdGF0dXNCYXI7XG4gICAgICBpZiAodGhpcy5pc0FwcCgpICYmIHRoaXMuaXNBbmRyb2lkKCkpIHtcbiAgICAgICAgYXdhaXQgU3RhdHVzQmFyLnNldE92ZXJsYXlzV2ViVmlldyh7IG92ZXJsYXk6IGZhbHNlIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBIaWRlIGFjY2Vzc29yeSBiYXIgKGlPUyBvbmx5KVxuICAgICAgaWYgKHRoaXMuaXNBcHAoKSAmJiB0aGlzLmlzSU9TKCkpIHtcbiAgICAgICAgcGx1Z2luTmFtZSA9IENhcGFjaXRvclBsdWdpbnMuS2V5Ym9hcmQ7XG4gICAgICAgIGF3YWl0IEtleWJvYXJkLnNldEFjY2Vzc29yeUJhclZpc2libGUoeyBpc1Zpc2libGU6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgbG9nTWVzc2FnZSA9IGBFcnJvciB3aGlsZSBjb25maWd1cmluZyAke3BsdWdpbk5hbWV9IHBsdWdpbjogJHtlcnIubWVzc2FnZSB8fCBlcnJ9XFxuJHtlcnI/Lm9yaWdpbmFsU3RhY2sgfHwgSlNPTi5zdHJpbmdpZnkoZXJyKX1gO1xuICAgICAgY29uc29sZS5lcnJvcignW3BsYXRmb3JtXSAnICsgbG9nTWVzc2FnZSk7XG4gICAgICB0aGlzLl9sb2dnZXI/LmVycm9yKCdjb25maWd1cmVDYXBhY2l0b3JQbHVnaW5zJywgbG9nTWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZVRyYW5zbGF0ZSgpIHtcbiAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gQ29uZmlndXJpbmcgaTE4biAuLi4nKTtcblxuICAgIC8vIHRoaXMgbGFuZ3VhZ2Ugd2lsbCBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgd2hlbiBhIHRyYW5zbGF0aW9uIGlzbid0IGZvdW5kIGluIHRoZSBjdXJyZW50IGxhbmd1YWdlXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcodGhpcy5lbnZpcm9ubWVudC5kZWZhdWx0TG9jYWxlKTtcbiAgICAvLyBhcHBseSBsb2NhbGUgaW1tZWRpYXRlbHlcbiAgICB0aGlzLmFwcGx5TG9jYWxlKHRoaXMuZW52aXJvbm1lbnQuZGVmYXVsdExvY2FsZSk7XG5cbiAgICAvLyBXaGVuIGxvY2FsZSBjaGFuZ2VzLCBhcHBseSB0byBkYXRlIGFkYXB0ZXJcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmxhbmcpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5TG9jYWxlKGV2ZW50LmxhbmcpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5zZXR0aW5ncy5vbkNoYW5nZS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAvLyBBcHBseSBsb2NhbGVcbiAgICAgICAgICBpZiAoZGF0YS5sb2NhbGUpIHtcbiAgICAgICAgICAgIGlmIChkYXRhLmxvY2FsZSAhPT0gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpIHtcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGRhdGEubG9jYWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQXBwbHlpbmcgZGVmYXVsdCwgd2hlbiBzZXR0aW5ncyBoYXMgbm8gbG9jYWxlIHByb3BlcnR5IChob3RmaXggLSBsdWRvdmljLnBlY3F1b3RAZS1pcy5wcm8gLSAxNC8xMS8yMDIxIC0gc2luY2UgdjEuMjAuNDIpXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1twbGF0Zm9ybV0gTm8gbG9jYWxlIGZvdW5kIGluIHNldHRpbmdzOiBhcHBseWluZyBkZWZhdWx0TG9jYWxlOiAnLCB0aGlzLmVudmlyb25tZW50LmRlZmF1bHRMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuZW52aXJvbm1lbnQuZGVmYXVsdExvY2FsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBVc2UgYWNjb3VudCdzIHNldHRpbmdzLCAobGlrZSBsb2NhbGUpLCB3aGVuIGFjY291bnQgaW5oZXJpdGFuY2UgZW5hYmxlZFxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4uc3Vic2NyaWJlKChhY2NvdW50KSA9PiB7XG4gICAgICAgIGlmIChhY2NvdW50LnNldHRpbmdzICYmIHRoaXMuc2V0dGluZ3Muc2V0dGluZ3MuYWNjb3VudEluaGVyaXRhbmNlKSB7XG4gICAgICAgICAgY29uc3QgYWNjb3VudFNldHRpbmdzID0gYWNjb3VudC5zZXR0aW5ncy5hc0xvY2FsU2V0dGluZ3MoKTtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmFwcGx5KGFjY291bnRTZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcHBseUxvY2FsZShsb2NhbGU6IHN0cmluZykge1xuICAgIC8vIGZvcmNlICdlbicgYXMgJ2VuX0dCJ1xuICAgIGlmIChsb2NhbGUgPT09ICdlbicpIHtcbiAgICAgIGxvY2FsZSA9ICdlbl9HQic7XG4gICAgfVxuXG4gICAgLy8gY29uZmlnIG1vbWVudCBsaWJcbiAgICB0cnkge1xuICAgICAgbW9tZW50TG9jYWxlKGxvY2FsZSk7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbcGxhdGZvcm1dIFVzZSBsb2NhbGUgeycgKyBsb2NhbGUgKyAnfScpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSWYgZXJyb3IsIGZhbGxiYWNrIHRvIGVuXG4gICAgICBtb21lbnRMb2NhbGUoJ2VuJyk7XG4gICAgICBjb25zb2xlLndhcm4oJ1twbGF0Zm9ybV0gVW5rbm93biBsb2NhbGUgZm9yIG1vbWVudCBsaWIuIFVzaW5nIGRlZmF1bHQgW2VuXScpO1xuICAgIH1cblxuICAgIC8vIENvbmZpZyBkYXRlIGFkYXB0ZXJcbiAgICB0aGlzLmRhdGVBZGFwdGVyLnNldExvY2FsZShtb21lbnRMb2NhbGUoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uZmlndXJlQ2FjaGUob25saW5lPzogYm9vbGVhbikge1xuICAgIG9ubGluZSA9IHRvQm9vbGVhbihvbmxpbmUsIHRoaXMuY2FjaGUuaXNPbmxpbmUoKSk7XG4gICAgY29uc3QgY2FjaGVUVEwgPSBvbmxpbmUgPyAzNjAwIC8qIDFoICovIDogMzYwMCAqIDI0ICogMzA7IC8qIDEgbW9udGggKi9cbiAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gQ29uZmlndXJpbmcgY2FjaGUgW09LXSB7b25saW5lOiAke29ubGluZX0sIHRpbWVUb0xpdmU6ICR7Y2FjaGVUVEwgLyAzNjAwfWgsIG9mZmxpbmVJbnZhbGlkYXRlOiBmYWxzZX1gKTtcbiAgICB0aGlzLmNhY2hlLnNldERlZmF1bHRUVEwoY2FjaGVUVEwpO1xuICAgIHRoaXMuY2FjaGUuc2V0T2ZmbGluZUludmFsaWRhdGUoZmFsc2UpOyAvLyBEbyBub3QgaW52YWxpZGF0ZSBjYWNoZSB3aGVuIG9mZmxpbmVcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjaGVja0FwcFZlcnNpb24ob3B0cz86IHsgY2FuUmVsb2FkPzogYm9vbGVhbjsgc2lsZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMubmV0d29ya1NlcnZpY2Uub2ZmbGluZSB8fCAhdGhpcy5pc1dlYigpKSByZXR1cm47IC8vIFNraXBcblxuICAgIGNvbnN0IHNpbGVudCA9IG9wdHM/LnNpbGVudCA9PT0gdHJ1ZTtcbiAgICBjb25zdCBwcm9kdWN0aW9uID0gdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIGNvbnN0IGNhbkF1dG9SZWxvYWQgPSAhb3B0cyB8fCBvcHRzLmNhblJlbG9hZCAhPT0gZmFsc2U7XG5cbiAgICBpZiAoIXNpbGVudCkgY29uc29sZS5pbmZvKCdbcGxhdGZvcm1dIENoZWNraW5nIHJlbW90ZSBhcHAgdmVyc2lvbi4uLicpO1xuXG4gICAgY29uc3QgYWN0dWFsVmVyc2lvbiA9IHRoaXMuZW52aXJvbm1lbnQudmVyc2lvbjtcbiAgICBpZiAoaXNOaWxPckJsYW5rKGFjdHVhbFZlcnNpb24pKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW3BsYXRmb3JtXSBNaXNzaW5nIHJlcXVpcmVkIHZhbHVlIGZvciAnZW52aXJvbm1lbnQudmVyc2lvbicuIENhbm5vdCBjaGVjayByZW1vdGUgYXBwIHZlcnNpb24uXCIpO1xuICAgICAgdGhpcy5jaGVja0FwcFZlcnNpb25UaW1lcj8udW5zdWJzY3JpYmUoKTsgLy8gU3RvcCB0aW1lciBpZiBleGlzdHNcbiAgICAgIHJldHVybjsgLy8gU2tpcFxuICAgIH1cblxuICAgIGNvbnN0IHJlbW90ZVZlcnNpb24gPSBhd2FpdCB0aGlzLm5ldHdvcmtTZXJ2aWNlLmdldEFwcFZlcnNpb24oKTtcbiAgICBpZiAoaXNOaWxPckJsYW5rKHJlbW90ZVZlcnNpb24pKSB7XG4gICAgICBpZiAocHJvZHVjdGlvbiAmJiAhc2lsZW50KSBjb25zb2xlLmVycm9yKCdbcGxhdGZvcm1dIENhbm5vdCBsb2FkIHJlbW90ZSBhcHAgdmVyc2lvbi4gU2tpcHBpbmcgdmVyc2lvbiBjaGVjaycpO1xuICAgICAgdGhpcy5jaGVja0FwcFZlcnNpb25UaW1lcj8udW5zdWJzY3JpYmUoKTsgLy8gU3RvcCB0aW1lciBpZiBleGlzdHNcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoVmVyc2lvblV0aWxzLmlzQ29tcGF0aWJsZShyZW1vdGVWZXJzaW9uLCBhY3R1YWxWZXJzaW9uKSkge1xuICAgICAgaWYgKCFzaWxlbnQpIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBDaGVja2luZyByZW1vdGUgYXBwIHZlcnNpb24gW09LXSB7cmVtb3RlOiAnJHtyZW1vdGVWZXJzaW9ufScsIGFjdHVhbDogJyR7YWN0dWFsVmVyc2lvbn0nfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIG5ld2VyIHZlcnNpb24gZXhpc3RzXG4gICAgbGV0IHJlbG9hZFBhdGggPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoL1smP112ZXJzaW9uPVteJl0qL2dpLCAnJyk7IC8vIFJlbW92ZSBvbGQgdmVyc2lvbiBpbiBxdWVyeSBwYXJhbXNcbiAgICByZWxvYWRQYXRoICs9IHJlbG9hZFBhdGguaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJzsgLy8gQWRkIHF1ZXJ5IHBhcmFtIHNlcGFyYXRvclxuICAgIHJlbG9hZFBhdGggKz0gJ3ZlcnNpb249JyArIHJlbW90ZVZlcnNpb247IC8vIEFkZCB2ZXJzaW9uICh0byBhdm9pZCBhIHJlbG9hZCBpbmZpbml0ZSBsb29wKVxuXG4gICAgLy8gQWxyZWFkeSB0cnkgdG8gcmVsb2FkLCBidXQgdmVyc2lvbiBzdGlsbCBiYWRcbiAgICBpZiAocmVsb2FkUGF0aCA9PT0gbG9jYXRpb24uaHJlZikge1xuICAgICAgaWYgKGNhbkF1dG9SZWxvYWQpXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFtwbGF0Zm9ybV0gUmVsb2FkZWQgcGFnZSBmYWlsZWQsIGJlY2F1c2UgdmVyc2lvbiBzdGlsbCBtaXNtYXRjaCEgUGxlYXNlIGNoZWNrIHZlcnNpb24uYXBwdXAgZmlsZSAoZXhwZWN0ZWQgYXBwIHZlcnNpb246ICR7YWN0dWFsVmVyc2lvbn0pYFxuICAgICAgICApO1xuICAgICAgLy8gU3RvcCB0aW1lciwgdG8gYXZvaWQgaW5maW5pdGUgbG9vcFxuICAgICAgdGhpcy5jaGVja0FwcFZlcnNpb25UaW1lcj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLndhcm4oYFtwbGF0Zm9ybV0gTW9yZSByZWNlbnQgdmVyc2lvbiBkZXRlY3RlZCAocmVtb3RlOiAke3JlbW90ZVZlcnNpb259LCBhY3R1YWw6ICR7YWN0dWFsVmVyc2lvbn1gKTtcblxuICAgIC8vIEF1dG8gcmVsb2FkXG4gICAgaWYgKGNhbkF1dG9SZWxvYWQpIHtcbiAgICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBXaWxsIHJlbG9hZGluZyBhdCAnICsgcmVsb2FkUGF0aCk7XG4gICAgICBsb2NhdGlvbi5ocmVmID0gcmVsb2FkUGF0aDtcbiAgICAgIC8vIEFwcCBzdG9wXG4gICAgfVxuICAgIC8vIEFzayB1c2VyIHRvIHJlbG9hZFxuICAgIGVsc2Uge1xuICAgICAgLy8gU3RvcCB0aW1lciwgdG8gYXZvaWQgaW5maW5pdGUgbG9vcFxuICAgICAgdGhpcy5jaGVja0FwcFZlcnNpb25UaW1lcj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgLy8gRGlzcGxheSBhIHJlbG9hZCB0b2FzdFxuICAgICAgYXdhaXQgdGhpcy5zaG93VG9hc3Qoe1xuICAgICAgICBtZXNzYWdlOiAnQ09ORklSTS5SRUxPQURfQVBQJyxcbiAgICAgICAgbWVzc2FnZVBhcmFtczogeyB2ZXJzaW9uOiByZW1vdGVWZXJzaW9uLCBuYW1lOiB0aGlzLmVudmlyb25tZW50Lm5hbWUgfSxcbiAgICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgICBkdXJhdGlvbjogLTEsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIC8vIFJlbG9hZCBidXR0b25cbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uQlROX1VQREFURScpLFxuICAgICAgICAgICAgc2lkZTogJ2VuZCcsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSByZWxvYWRQYXRoO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93VG9hc3Qob3B0czogU2hvd1RvYXN0T3B0aW9ucyk6IFByb21pc2U8SFRNTElvblRvYXN0RWxlbWVudD4ge1xuICAgIGlmICghdGhpcy50b2FzdENvbnRyb2xsZXIpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgdG9hc3RDb250cm9sbGVyIGluIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yXCIpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT5cbiAgICAgIFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBvbldpbGxQcmVzZW50OiAodCkgPT4gcmVzb2x2ZSh0KSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBvblN0YXJ0dXBFcnJvcihlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbcGxhdGZvcm1dIEZhaWxlZCBzdGFydGluZyB0aGUgcGxhdGZvcm0hICcgKyBKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICBsZXQgbWVzc2FnZSA9IChlcnIgJiYgZXJyLm1lc3NhZ2UpIHx8IGVycjtcbiAgICBjb25zdCBkZXRhaWxzTWVzc2FnZSA9IGVyciAmJiAoKGVyci5kZXRhaWxzICYmIGVyci5kZXRhaWxzLm1lc3NhZ2UpIHx8IGVyci5kZXRhaWxzKTtcbiAgICAvLyBTZXQgc3BlY2lmaWMgZXJyb3Igd2hlbiBGaXJlZm94IGlzIGluIHByaXZhdGUgbW9kZSBvciBoaXN0b3J5IG5ldmVyIHJlbWVtYmVyZWQgKHNlZSBNYW50aXMgSWZyZW1lciAjNTY0NDEpXG4gICAgaWYgKGVyci5jb2RlID09PSAxMSAmJiB0aGlzLmNka1BsYXRmb3JtLkZJUkVGT1gpIHtcbiAgICAgIG1lc3NhZ2UgPSAnRVJST1IuRklSRUZPWF9OT19TVE9SQUdFJztcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlKSB7XG4gICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGUuaW5zdGFudChtZXNzYWdlKTtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgIHtjb2RlOiAke2Vyci5jb2RlfX1gO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlID0gYEZhdGFsIGVycm9yOiBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuXFxuXFxue2NvZGU6ICR7KGVyciAmJiBlcnIuY29kZSkgfHwgJ251bGwnfSwgbWVzc2FnZTogXCIke21lc3NhZ2V9XCJ9YDtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9hc3RDb250cm9sbGVyKSB7XG4gICAgICBpZiAoZGV0YWlsc01lc3NhZ2UpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgPGJyLz48c21hbGw+JHtkZXRhaWxzTWVzc2FnZX08L3NtYWxsPmA7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNob3dUb2FzdCh7XG4gICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgIGR1cmF0aW9uOiAtMSxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh3aW5kb3cpIHtcbiAgICAgIGlmIChkZXRhaWxzTWVzc2FnZSkge1xuICAgICAgICBtZXNzYWdlICs9IGBcXG5cXG57Y2F1c2U6IFwiJHtkZXRhaWxzTWVzc2FnZX1cIn1gO1xuICAgICAgfVxuICAgICAgd2luZG93LmFsZXJ0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgaWYgKGVyciAmJiBlcnIuZGV0YWlscykgY29uc29sZS5lcnJvcignY2F1c2UnLCBlcnIuZGV0YWlscyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
611
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUYsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsT0FBTyxFQUErQixzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FB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b20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFRva2VuVHlwZSB9IGZyb20gJy4vbmV0d29yay50eXBlcyc7XG5pbXBvcnQgeyBQbGF0Zm9ybXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBMb2NhbFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICdpb25pYy1jYWNoZSc7XG5pbXBvcnQgeyBBdWRpb1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2F1ZGlvL2F1ZGlvJztcbmltcG9ydCB7IFBsYXRmb3JtIGFzIENka1BsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcblxuaW1wb3J0IHsgaXNOaWxPckJsYW5rLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rLCB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEVudGl0aWVzU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS9lbnRpdGllcy1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3RvYXN0L3RvYXN0cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHNraXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBEb3dubG9hZGVyLCBEb3dubG9hZFJlcXVlc3QsIE5vdGlmaWNhdGlvblZpc2liaWxpdHkgfSBmcm9tICdAaW9uaWMtbmF0aXZlL2Rvd25sb2FkZXIvbmd4JztcbmltcG9ydCB7IFN0YXJ0YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgaXNNb2JpbGUsIGlzV2luZG93cyB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbGF0Zm9ybXMnO1xuaW1wb3J0IHsgVmVyc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3ZlcnNpb24vdmVyc2lvbnMnO1xuaW1wb3J0IHsgRmlsZXNVdGlscywgTWltZVR5cGVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ZpbGUvZmlsZS51dGlscyc7XG5pbXBvcnQgeyBVcmlVdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL3VyaS51dGlscyc7XG5pbXBvcnQgeyBTcGxhc2hTY3JlZW4gfSBmcm9tICdAY2FwYWNpdG9yL3NwbGFzaC1zY3JlZW4nO1xuaW1wb3J0IHsgU3RhdHVzQmFyIH0gZnJvbSAnQGNhcGFjaXRvci9zdGF0dXMtYmFyJztcbmltcG9ydCB7IEJyb3dzZXIsIE9wZW5PcHRpb25zIH0gZnJvbSAnQGNhcGFjaXRvci9icm93c2VyJztcbmltcG9ydCB7IEtleWJvYXJkIH0gZnJvbSAnQGNhcGFjaXRvci9rZXlib2FyZCc7XG5pbXBvcnQgeyBDYXBhY2l0b3JQbHVnaW5zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NhcGFjaXRvci9wbHVnaW5zJztcbmltcG9ydCB7IGxvY2FsZSBhcyBtb21lbnRMb2NhbGUgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSUxvZ2dlciwgSUxvZ2dpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dpbmcvbG9nZ2VyLm1vZGVsJztcbmltcG9ydCB7IEFQUF9MT0dHSU5HX1NFUlZJQ0UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2luZy9sb2dnaW5nLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIGFzIENka0NsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGNhcGFjaXRvci9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgV3JpdGVPcHRpb25zIH0gZnJvbSAnQGNhcGFjaXRvci9jbGlwYm9hcmQvZGlzdC9lc20vZGVmaW5pdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgQW5kcm9pZE9zRW52aXJvbm1lbnQgPSBPYmplY3QuZnJlZXplKHtcbiAgRElSRUNUT1JZX0RPV05MT0FEUzogJ0Rvd25sb2FkJyxcbiAgRElSRUNUT1JZX0RPV05MT0FEU19PTEQ6ICdEb3dubG9hZHMnLCAvLyBPbGQgbmFtZSwgZm9yIG9sZGVyIEFuZHJvaWQgdmVyc2lvblxuICAvLyBUT0RPOiBmaW5kIHZhbHVlIGZvciB0aGlzLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvb3MvRW52aXJvbm1lbnQjZ2V0RXh0ZXJuYWxTdG9yYWdlU3RhdGUoamF2YS5pby5GaWxlKVxuICAvLyBESVJFQ1RPUllfTVVTSUMsXG4gIC8vIERJUkVDVE9SWV9QT0RDQVNUUyxcbiAgLy8gRElSRUNUT1JZX1JJTkdUT05FUyxcbiAgLy8gRElSRUNUT1JZX0FMQVJNUyxcbiAgLy8gRElSRUNUT1JZX05PVElGSUNBVElPTlMsXG4gIC8vIERJUkVDVE9SWV9QSUNUVVJFUyxcbiAgLy8gRElSRUNUT1JZX01PVklFUyxcbiAgLy8gRElSRUNUT1JZX0RDSU0sXG4gIC8vIERJUkVDVE9SWV9ET0NVTUVOVFMsXG4gIC8vIERJUkVDVE9SWV9BVURJT0JPT0tTLFxufSk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1TZXJ2aWNlIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlcjtcbiAgcHJpdmF0ZSBfbW9iaWxlOiBib29sZWFuO1xuICBwcml2YXRlIF9kZXNrdG9wOiBib29sZWFuO1xuICBwcml2YXRlIF9jb3Jkb3ZhOiBib29sZWFuO1xuICBwcml2YXRlIF9jYXBhY2l0b3I6IGJvb2xlYW47XG4gIHByaXZhdGUgX2FuZHJvaWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2lvczogYm9vbGVhbjtcblxuICBidXN5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW9uaWNQbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBjZGtQbGF0Zm9ybTogQ2RrUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBjZGtDbGlwYm9hcmQ6IENka0NsaXBib2FyZCxcbiAgICBwcml2YXRlIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgIHByaXZhdGUgZW50aXRpZXNTdG9yYWdlOiBFbnRpdGllc1N0b3JhZ2UsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZXR3b3JrU2VydmljZTogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FjaGU6IENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIGF1ZGlvUHJvdmlkZXI6IEF1ZGlvUHJvdmlkZXIsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9MT0dHSU5HX1NFUlZJQ0UpIGxvZ2dpbmdTZXJ2aWNlOiBJTG9nZ2luZ1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkb3dubG9hZGVyOiBEb3dubG9hZGVyXG4gICkge1xuICAgIHN1cGVyKGlvbmljUGxhdGZvcm0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2U/LmdldExvZ2dlcigncGxhdGZvcm0nKTtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW3BsYXRmb3JtXSBDcmVhdGluZyBzZXJ2aWNlJyk7XG5cbiAgICBpZiAodGhpcy5fbG9nZ2VyKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ2N0b3InLCAnQ3JlYXRpbmcgc2VydmljZScpO1xuICAgICAgaW9uaWNQbGF0Zm9ybS5wYXVzZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnY3RvcicsICdQYXVzZSBhcHAnKTtcbiAgICAgIH0pO1xuICAgICAgaW9uaWNQbGF0Zm9ybS5yZXN1bWUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ2N0b3InLCAnUmVzdW1lIGFwcCcpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Rvd25sb2FkaW5nSm9iczogTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxzdHJpbmc+PiA9IG5ldyBNYXAoKTtcblxuICBwcml2YXRlIGNoZWNrQXBwVmVyc2lvblRpbWVyOiBTdWJzY3JpcHRpb247XG5cbiAgaXMocGxhdGZvcm1OYW1lOiBQbGF0Zm9ybXMpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHBsYXRmb3JtTmFtZSkge1xuICAgICAgY2FzZSAnbW9iaWxlJzpcbiAgICAgICAgLy8gRXhjbHVkZSBXaW5kb3dzIHRvdWNoIHNjcmVlbnMgLSBzZWUgc3VtYXJpcy1hcHAgaXNzdWVzICMzMjMgYW5kICMzNDZcbiAgICAgICAgcmV0dXJuIGlzTW9iaWxlKHdpbmRvdyk7XG4gICAgICBjYXNlICdtb2JpbGV3ZWInOlxuICAgICAgICAvLyBFeGNsdWRlIFdpbmRvd3MgdG91Y2ggc2NyZWVucyAtIHNlZSBzdW1hcmlzLWFwcCBpc3N1ZXMgIzMyMyBhbmQgIzM0NlxuICAgICAgICByZXR1cm4gdGhpcy5pb25pY1BsYXRmb3JtLmlzKHBsYXRmb3JtTmFtZSkgJiYgIWlzV2luZG93cyh3aW5kb3cpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW9uaWNQbGF0Zm9ybS5pcyhwbGF0Zm9ybU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTm90TmlsKHRoaXMuX21vYmlsZSkgPyB0aGlzLl9tb2JpbGUgOiB0aGlzLmlzKCdtb2JpbGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXkgaWYgb3BlbmVkIGhhcyBiZWVuIG9wZW5lZCBpbnNpZGUgYW4gQW5kcm9pZCBvciBpT3MgQXBwLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8ga25vd24gaWYgdGhlcmUgaXMgY29yZG92YSBmZWF0dXJlc1xuICAgKi9cbiAgaXNDYXBhY2l0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhcGFjaXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXkgaWYgb3BlbmVkIGhhcyBiZWVuIG9wZW5lZCBpbnNpZGUgYW4gQW5kcm9pZCBvciBpT3MgQXBwLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8ga25vd24gaWYgdGhlcmUgaXMgY29yZG92YSBmZWF0dXJlc1xuICAgKi9cbiAgaXNDb3Jkb3ZhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jb3Jkb3ZhO1xuICB9XG5cbiAgaXNBbmRyb2lkQ29yZG92YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuX2FuZHJvaWQgJiYgdGhpcy5fY29yZG92YSkgfHwgZmFsc2U7XG4gIH1cblxuICBpc0lPU0NvcmRvdmEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLl9pb3MgJiYgdGhpcy5fY29yZG92YSkgfHwgZmFsc2U7XG4gIH1cblxuICBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FuZHJvaWQgfHwgZmFsc2U7XG4gIH1cblxuICBpc0lPUygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW9zIHx8IGZhbHNlO1xuICB9XG5cbiAgaXNNYWNPU0Rlc2t0b3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc2t0b3AgJiYgdGhpcy5pc0NvcmRvdmEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyBhIG5hdGl2ZSBBcHAgKGFuZCBOT1QgYSBtb2JpbGUgd2ViKVxuICAgKi9cbiAgaXNBcHAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBbmRyb2lkQ29yZG92YSgpIHx8IHRoaXMuaXNJT1NDb3Jkb3ZhKCk7XG4gIH1cblxuICBpc1dlYigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNBcHAoKTtcbiAgfVxuXG4gIGlzTW9iaWxlV2ViKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vYmlsZSAmJiB0aGlzLmlzV2ViKCk7XG4gIH1cblxuICBnZXQgY2FuRG93bmxvYWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWRlciAmJiB0aGlzLmlzQW5kcm9pZENvcmRvdmEoKTtcbiAgfVxuXG4gIGdldCBjYW5PcGVuRmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGZpeG1lIHVzaW5nIEBjYXBhY2l0b3IvZmlsZXN5c3RlbSA/XG4gIH1cblxuICB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlvbmljUGxhdGZvcm0ud2lkdGgoKTtcbiAgfVxuXG4gIGhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlvbmljUGxhdGZvcm0uaGVpZ2h0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmFjY291bnRTZXJ2aWNlLnRva2VuVHlwZSA9IHVuZGVmaW5lZDtcbiAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gU3RhcnRpbmcgcGxhdGZvcm0uLi4nKTtcbiAgICB0aGlzLl9sb2dnZXI/LmluZm8oJ25nT25TdGFydCcsICdTdGFydGluZyBwbGF0Zm9ybS4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX21vYmlsZSA9IHRoaXMuaXMoJ21vYmlsZScpO1xuICAgICAgdGhpcy5fZGVza3RvcCA9IHRoaXMuaXMoJ2Rlc2t0b3AnKTtcbiAgICAgIHRoaXMuX2NvcmRvdmEgPSB0aGlzLmlzKCdjb3Jkb3ZhJyk7XG4gICAgICB0aGlzLl9jYXBhY2l0b3IgPSB0aGlzLmlzKCdjYXBhY2l0b3InKTtcbiAgICAgIHRoaXMuX2FuZHJvaWQgPSB0aGlzLmlzKCdhbmRyb2lkJyk7XG4gICAgICB0aGlzLl9pb3MgPSB0aGlzLmlzKCdpb3MnKTtcblxuICAgICAgY29uc3QgbG9nTWVzc2FnZSA9IGBEZXRlY3RlZCB7bW9iaWxlOiAke3RoaXMuX21vYmlsZX0sIGRlc2t0b3A6ICR7dGhpcy5fZGVza3RvcH0sIGNvcmRvdmE6ICR7dGhpcy5fY29yZG92YX0sIGNhcGFjaXRvcjogJHt0aGlzLl9jYXBhY2l0b3J9LCBhbmRyb2lkOiAke3RoaXMuX2FuZHJvaWR9LCBpb3M6ICR7dGhpcy5faW9zfX1gO1xuICAgICAgY29uc29sZS5pbmZvKCdbcGxhdGZvcm1dICcgKyBsb2dNZXNzYWdlKTtcbiAgICAgIHRoaXMuX2xvZ2dlcj8uaW5mbygnbmdPblN0YXJ0JywgbG9nTWVzc2FnZSk7XG5cbiAgICAgIC8vIENvbmZpZ3VyZSB0aGVtZVxuICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVUaGVtZSh0aGlzLl9tb2JpbGUpO1xuXG4gICAgICAvLyBDb25maWd1cmUgQ2FwYWNpdG9yIHBsdWdpbnNcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJlQ2FwYWNpdG9yUGx1Z2lucygpO1xuXG4gICAgICAvLyBDb25maWd1cmUgdHJhbnNsYXRpb25cbiAgICAgIHRoaXMuY29uZmlndXJlVHJhbnNsYXRlKCk7XG5cbiAgICAgIC8vIENvbmZpZ3VyZSBjYWNoZVxuICAgICAgdGhpcy5jb25maWd1cmVDYWNoZSgpO1xuXG4gICAgICAvLyBTdGFydCByb290IHNlcnZpY2VzXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5lbnRpdGllc1N0b3JhZ2UucmVhZHkoKSwgdGhpcy5zZXR0aW5ncy5yZWFkeSgpLCB0aGlzLm5ldHdvcmtTZXJ2aWNlLnJlYWR5KCksIHRoaXMuYXVkaW9Qcm92aWRlci5yZWFkeSgpXSk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHdlYiBhcHAgaGFzIHVwZGF0ZSwgYW5kIHJlbG9hZCBwYWdlIGlmIG5lZWRcbiAgICAgIGlmICh0aGlzLmlzV2ViKCkgJiYgdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tBcHBWZXJzaW9uKHsgY2FuUmVsb2FkOiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2FjaGUgY29uZmlndXJhdGlvbiB3aGVuIG5ldHdvcmsgY2hhbmdlZFxuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgICAgdGhpcy5uZXR3b3JrU2VydmljZS5vbk5ldHdvcmtTdGF0dXNDaGFuZ2VzXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBza2lwKDEpIC8vIEFscmVhZHkgZG9uZSBvbmNlLCBzbyB3ZSBza2lwIHRoZSBmaXJzdCBldmVudFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCh0eXBlKSA9PiB0aGlzLmNvbmZpZ3VyZUNhY2hlKHR5cGUgIT09ICdub25lJykpXG4gICAgICApO1xuXG4gICAgICBjb25zb2xlLmluZm8oXG4gICAgICAgIGBbcGxhdGZvcm1dIFN0YXJ0aW5nIHBsYXRmb3JtIFtPS10ge21vYmlsZTogJHt0aGlzLl9tb2JpbGV9LCBjYXBhY2l0b3I6ICR7dGhpcy5fY2FwYWNpdG9yfSwgd2ViOiAke3RoaXMuaXNXZWIoKX0sIGRvd25sb2FkZXI6ICR7dGhpcy5jYW5Eb3dubG9hZH19IGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2BcbiAgICAgICk7XG5cbiAgICAgIC8vIFBhc3MgYXV0aCB0b2tlblxuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xuICAgICAgICAgIGlmICghY29uZmlnKSByZXR1cm47IC8vIFNraXBcblxuICAgICAgICAgIC8vIFVwZGF0ZSBhdXRoZW50aWNhdGlvbiB0eXBlXG4gICAgICAgICAgY29uc3QgdG9rZW5UeXBlOiBBdXRoVG9rZW5UeXBlID0gY29uZmlnLmdldFByb3BlcnR5KENPUkVfQ09ORklHX09QVElPTlMuQVVUSF9UT0tFTl9UWVBFKSBhcyBBdXRoVG9rZW5UeXBlO1xuICAgICAgICAgIGlmIChpc05vdE5pbE9yQmxhbmsodG9rZW5UeXBlKSAmJiB0aGlzLmFjY291bnRTZXJ2aWNlLnRva2VuVHlwZSAhPT0gdG9rZW5UeXBlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gVXNpbmcgYXV0aCB0b2tlbiB0eXBlIHske3Rva2VuVHlwZX19YCk7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLnRva2VuVHlwZSA9IHRva2VuVHlwZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbmFibGUgYXV0aCBBUEkgdXNpbmcgdG9rZW5zXG4gICAgICAgICAgY29uc3QgYXV0aEFwaUVuYWJsZWQgPSBjb25maWcuZ2V0UHJvcGVydHlBc0Jvb2xlYW4oQ09SRV9DT05GSUdfT1BUSU9OUy5BVVRIX0FQSV9UT0tFTl9FTkFCTEVEKTtcbiAgICAgICAgICBpZiAoaXNOb3ROaWwoYXV0aEFwaUVuYWJsZWQpICYmIGF1dGhBcGlFbmFibGVkICE9PSB0aGlzLmFjY291bnRTZXJ2aWNlLmFwaVRva2VuRW5hYmxlZCkge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIFVzaW5nIGF1dGggQVBJIHRva2VucyA/ICR7YXV0aEFwaUVuYWJsZWR9fWApO1xuICAgICAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5hcGlUb2tlbkVuYWJsZWQgPSBhdXRoQXBpRW5hYmxlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICBpZiAodGhpcy5fbW9iaWxlIHx8IHRoaXMuaXNNYWNPU0Rlc2t0b3AoKSkge1xuICAgICAgICAvLyBIaWRlIHRoZSBzcGxhc2hzY3JlZW4gKGlmIG1vYmlsZSkgLSBhZnRlciAxcyAtIGFuZCBwbGF5IHN0YXJ0IHNvdW5kXG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IFNwbGFzaFNjcmVlbi5oaWRlKCk7XG5cbiAgICAgICAgICAvLyBQbGF5IHN0YXJ0dXAgc291bmRcbiAgICAgICAgICBpZiAodGhpcy5fbW9iaWxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmF1ZGlvUHJvdmlkZXIucGxheVN0YXJ0dXBTb3VuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIG5ldyB2ZXJzaW9uLCBldmVyeSAxIG1pblxuICAgICAgY29uc3QgY2hlY2tJbnRlcnZhbE1zID0gKHRoaXMuZW52aXJvbm1lbnQuY2hlY2tBcHBWZXJzaW9uSW50ZXJ2YWxJblNlY29uZHMgfHwgMCkgKiAxMDAwO1xuICAgICAgaWYgKHRoaXMuaXNXZWIoKSAmJiB0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24gJiYgY2hlY2tJbnRlcnZhbE1zID4gMCkge1xuICAgICAgICB0aGlzLmNoZWNrQXBwVmVyc2lvblRpbWVyPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aW1lcihjaGVja0ludGVydmFsTXMsIGNoZWNrSW50ZXJ2YWxNcykuc3Vic2NyaWJlKChfKSA9PlxuICAgICAgICAgIHRoaXMuY2hlY2tBcHBWZXJzaW9uKHsgc2lsZW50OiB0cnVlLCBjYW5SZWxvYWQ6IGZhbHNlIC8qZG8gTk9UIGF1dG8gcmVsb2FkLCB3aGVuIGFwcCBpcyBzdGFydGVkKi8gfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jaGVja0FwcFZlcnNpb25UaW1lciA9IHN1YnNjcmlwdGlvbjtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICBzdWJzY3JpcHRpb24uYWRkKCgpID0+IHRoaXMudW5yZWdpc3RlclN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIE1hbmFnZSBzdGFydHVwIGVycm9yXG4gICAgICByZXR1cm4gdGhpcy5vblN0YXJ0dXBFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNob3cgYSBiYWNrZHJvcCB3aGVuIHBsYXRmb3JtIGlzIGJ1c3kgKGUuZy4gZnJvbSB0aGUgYXBwLmNvbXBvbmVudC50cylcbiAgICovXG4gIG1hcmtBc0J1c3koKSB7XG4gICAgaWYgKCF0aGlzLmJ1c3lTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmJ1c3lTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzTm90QnVzeSgpIHtcbiAgICBpZiAodGhpcy5idXN5U3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5idXN5U3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuKHVybDogc3RyaW5nLCBvcHRzPzogT21pdDxPcGVuT3B0aW9ucywgJ3VybCc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIE9wZW5pbmcgbGluazogJHt1cmx9YCk7XG4gICAgaWYgKHRoaXMuX21vYmlsZSAmJiB0aGlzLl9jYXBhY2l0b3IpIHtcbiAgICAgIGF3YWl0IEJyb3dzZXIub3Blbih7IHVybCwgLi4ub3B0cyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lm9wZW4odXJsLCBvcHRzPy53aW5kb3dOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXREb3dubG9hZGluZ0pvYih1cmk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25sb2FkaW5nSm9icy5nZXQodXJpKTtcbiAgfVxuXG4gIGRvd25sb2FkKHJlcXVlc3Q6IHsgdXJpOiBzdHJpbmc7IGZpbGVuYW1lPzogc3RyaW5nIH0gJiBQYXJ0aWFsPERvd25sb2FkUmVxdWVzdD4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghcmVxdWVzdCB8fCAhcmVxdWVzdC51cmkpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgYXJndW1lbnQgJ3JlcXVlc3QnIG9yICdyZXF1ZXN0LnVyaSdcIik7XG5cbiAgICBpZiAodGhpcy5jYW5Eb3dubG9hZCkge1xuICAgICAgLy8gQ2hlY2sgaWYgbm90IGFscmVhZHkgZG93bmxvYWRpbmcgZmlsZVxuICAgICAgbGV0IGpvYiQgPSB0aGlzLl9kb3dubG9hZGluZ0pvYnMuZ2V0KHJlcXVlc3QudXJpKTtcbiAgICAgIGlmIChqb2IkKSByZXR1cm4gam9iJDtcblxuICAgICAgLy8gQ29tcHV0ZSBzdWJQYXRoIChmaW5hbCBmaWxlbmFtZSlcbiAgICAgIGxldCBzdWJQYXRoID1cbiAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbkluRXh0ZXJuYWxQdWJsaWNEaXI/LnN1YlBhdGggfHxcbiAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbkluRXh0ZXJuYWxGaWxlc0Rpcj8uc3ViUGF0aCB8fFxuICAgICAgICByZXF1ZXN0LmZpbGVuYW1lIHx8XG4gICAgICAgIFVyaVV0aWxzLmdldEZpbGVuYW1lKHJlcXVlc3QudXJpKSB8fFxuICAgICAgICByZXF1ZXN0LnRpdGxlIHx8XG4gICAgICAgICdkb3dubG9hZCc7XG5cbiAgICAgIHN1YlBhdGggPSBzdWJQYXRoXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC8vIFJlbW92ZSBzcGFjZXNcbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKTtcblxuICAgICAgLy8gRm9yY2UgQVBLIHRvIGZpbmlzaCB3aXRoICcuYXBrJ1xuICAgICAgaWYgKHJlcXVlc3QubWltZVR5cGUgPT09IE1pbWVUeXBlcy5BTkRST0lEX0FQSyAmJiAhc3ViUGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcuYXBrJykpIHtcbiAgICAgICAgc3ViUGF0aCArPSAnLmFwayc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRvd25sb2FkUmVxdWVzdCA9IDxEb3dubG9hZFJlcXVlc3Q+e1xuICAgICAgICB2aXNpYmxlSW5Eb3dubG9hZHNVaTogdHJ1ZSxcbiAgICAgICAgbm90aWZpY2F0aW9uVmlzaWJpbGl0eTogTm90aWZpY2F0aW9uVmlzaWJpbGl0eS5WaXNpYmxlTm90aWZ5Q29tcGxldGVkLFxuICAgICAgICAuLi5yZXF1ZXN0LFxuICAgICAgICBmaWxlbmFtZTogdW5kZWZpbmVkLCAvLyBGb3JjZSB1bnNldFxuICAgICAgICBkZXN0aW5hdGlvbkluRXh0ZXJuYWxQdWJsaWNEaXI6ICFyZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbEZpbGVzRGlyXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGRpclR5cGU6IEFuZHJvaWRPc0Vudmlyb25tZW50LkRJUkVDVE9SWV9ET1dOTE9BRFMsXG4gICAgICAgICAgICAgIC4uLnJlcXVlc3QuZGVzdGluYXRpb25JbkV4dGVybmFsUHVibGljRGlyLFxuICAgICAgICAgICAgICBzdWJQYXRoLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBkZXN0aW5hdGlvbkluRXh0ZXJuYWxGaWxlc0RpcjogcmVxdWVzdC5kZXN0aW5hdGlvbkluRXh0ZXJuYWxGaWxlc0RpclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBkaXJUeXBlOiBBbmRyb2lkT3NFbnZpcm9ubWVudC5ESVJFQ1RPUllfRE9XTkxPQURTLFxuICAgICAgICAgICAgICAuLi5yZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbEZpbGVzRGlyLFxuICAgICAgICAgICAgICBzdWJQYXRoLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfTtcblxuICAgICAgLy8gU3RhcnQgZG93bmxvYWRcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1twbGF0Zm9ybV0gRG93bmxvYWRpbmcsIHVzaW5nIHJlcXVlc3Q6ICcgKyBKU09OLnN0cmluZ2lmeShkb3dubG9hZFJlcXVlc3QpKTtcbiAgICAgIGpvYiQgPSBmcm9tKHRoaXMuZG93bmxvYWRlci5kb3dubG9hZChkb3dubG9hZFJlcXVlc3QpKTtcblxuICAgICAgLy8gUmVtZW1iZXIgdGhpcyByZXF1ZXN0IHVyaVxuICAgICAgdGhpcy5fZG93bmxvYWRpbmdKb2JzLnNldChkb3dubG9hZFJlcXVlc3QudXJpLCBqb2IkKTtcbiAgICAgIHJldHVybiBqb2IkLnBpcGUoXG4gICAgICAgIHRhcCgobG9jYXRpb24pID0+IHtcbiAgICAgICAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gRmlsZSBzdWNjZXNzZnVsbHkgZG93bmxvYWRlZCBhdDonICsgbG9jYXRpb24pO1xuICAgICAgICAgIC8vIEZvcmdldCBqb2JcbiAgICAgICAgICB0aGlzLl9kb3dubG9hZGluZ0pvYnMuZGVsZXRlKGRvd25sb2FkUmVxdWVzdC51cmkpO1xuICAgICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1twbGF0Zm9ybV0gVW5hYmxlIHRvIGRvd25sb2FkOiAnICsgKChlcnIgJiYgZXJyLm1lc3NhZ2UpIHx8IGVycikpO1xuICAgICAgICAgIC8vIEZvcmdldCB0aGUgcmVxdWVzdFxuICAgICAgICAgIHRoaXMuX2Rvd25sb2FkaW5nSm9icy5kZWxldGUoZG93bmxvYWRSZXF1ZXN0LnVyaSk7XG5cbiAgICAgICAgICAvLyBSZXRyeSB3aXRoIGFub3RoZXIgbG9jYXRpb24gLSBpc3N1ZSBpbiBvbGRlciBBbmRyb2lkIHZlcnNpb25cbiAgICAgICAgICBpZiAoZG93bmxvYWRSZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbFB1YmxpY0Rpcj8uZGlyVHlwZSA9PT0gQW5kcm9pZE9zRW52aXJvbm1lbnQuRElSRUNUT1JZX0RPV05MT0FEUykge1xuICAgICAgICAgICAgZG93bmxvYWRSZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbFB1YmxpY0Rpci5kaXJUeXBlID0gQW5kcm9pZE9zRW52aXJvbm1lbnQuRElSRUNUT1JZX0RPV05MT0FEU19PTEQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZChkb3dubG9hZFJlcXVlc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIChpZiBub3QgQW5kcm9pZCBhbmQgQ2FwYWNpdG9yKTogb3BlbmluZyB0aGUgVVJJXG4gICAgLy8gVE9ETzogZmluZCBhIHdheSB0byBkb3dubG9hZCB1bmRlciBpT1MgKHNlZSBodHRwczovL3d3dy5jLXNoYXJwY29ybmVyLmNvbS9hcnRpY2xlL2hvdy10by1kb3dubG9hZC1hLWZpbGUtdXNpbmctZmlsZS10cmFuc2Zlci1wbHVnaW4taW4taW9uaWMtMy8pXG4gICAgZWxzZSB7XG4gICAgICBGaWxlc1V0aWxzLmRvd25sb2FkVXJpKHJlcXVlc3QudXJpLCByZXF1ZXN0LmZpbGVuYW1lKTtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNvcHlUb0NsaXBib2FyZChkYXRhOiBzdHJpbmcgfCBXcml0ZU9wdGlvbnMsIG9wdHM/OiBTaG93VG9hc3RPcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBkYXRhIDogZGF0YS5zdHJpbmc7XG4gICAgbGV0IGNvcGllZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaXNBbmRyb2lkQ29yZG92YSgpKSB7XG4gICAgICBjb25zdCB3cml0ZU9wdGlvbnMgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyB7IHN0cmluZzogdmFsdWUgfSA6IGRhdGE7XG4gICAgICBhd2FpdCBDbGlwYm9hcmQud3JpdGUod3JpdGVPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29waWVkID0gdGhpcy5jZGtDbGlwYm9hcmQuY29weSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNvcGllZCkge1xuICAgICAgLy8gU2hvdyB0b2FzdFxuICAgICAgaWYgKG9wdHMgJiYgaXNOb3ROaWxPckJsYW5rKG9wdHMubWVzc2FnZSkpIHtcbiAgICAgICAgYXdhaXQgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCB7XG4gICAgICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbcGxhdGZvcm1dIFVuYWJsZSB0byBjb3B5IHRvIGNsaXBib2FyZDogJyArIGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZURhcmtUaGVtZShlbmFibGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoZW5hYmxlICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkYXJrJykpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1twbGF0Zm9ybV0gRW5hYmxlIGRhcmsgbW9kZS4uLicpO1xuICAgIH1cbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnZGFyaycsIGVuYWJsZSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBjb25maWd1cmVUaGVtZShtb2JpbGU6IGJvb2xlYW4sIHdpbjogYW55ID0gd2luZG93KSB7XG4gICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzIHRvIHNldHRpbmdzIGRhcmsgbW9kZVxuICAgIGlmICh0aGlzLmVudmlyb25tZW50LmFsbG93RGFya01vZGUpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5zZXR0aW5ncy5kYXJrTW9kZSQuc3Vic2NyaWJlKChkYXJrTW9kZSkgPT4gdGhpcy50b2dnbGVEYXJrVGhlbWUoZGFya01vZGUpKSk7XG4gICAgfVxuXG4gICAgLy8gV29ya2Fyb3VuZCwgZm9yIE1TIFdpbmRvd3MgdG91Y2ggc2NyZWVuIChkZXRlY3RlZCBhcyBtb2JpbGUsIGJ1dCBmb3JjZWQgYXMgZGVza3RvcClcbiAgICBpZiAoXG4gICAgICAhbW9iaWxlICYmXG4gICAgICAod2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdwbHQtbW9iaWxlJykgfHwgd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdwbHQtbW9iaWxld2ViJykpXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1twbGF0Zm9ybV0gRm9yY2UgY2xhc3MgbGlzdCB0bzogPGh0bWwgY2xhc3M9XCJwbHQtZGVza3RvcFwiPi4gV29ya2Fyb3VuZCBmb3IgV2luZG93cyB0b3VjaCBzY3JlZW4uJyk7XG4gICAgICB3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3BsdC1tb2JpbGUnLCAncGx0LW1vYmlsZXdlYicpO1xuICAgICAgd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwbHQtZGVza3RvcCcpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb25maWd1cmVDYXBhY2l0b3JQbHVnaW5zKCkge1xuICAgIGlmICghdGhpcy5fY2FwYWNpdG9yKSByZXR1cm47IC8vIFNraXBcblxuICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBDb25maWd1cmluZyBDYXBhY2l0b3IgcGx1Z2lucy4uLicpO1xuXG4gICAgbGV0IHBsdWdpbk5hbWU6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgcGx1Z2luTmFtZSA9IENhcGFjaXRvclBsdWdpbnMuU3RhdHVzQmFyO1xuICAgICAgaWYgKHRoaXMuaXNBcHAoKSAmJiB0aGlzLmlzQW5kcm9pZCgpKSB7XG4gICAgICAgIGF3YWl0IFN0YXR1c0Jhci5zZXRPdmVybGF5c1dlYlZpZXcoeyBvdmVybGF5OiBmYWxzZSB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSGlkZSBhY2Nlc3NvcnkgYmFyIChpT1Mgb25seSlcbiAgICAgIGlmICh0aGlzLmlzQXBwKCkgJiYgdGhpcy5pc0lPUygpKSB7XG4gICAgICAgIHBsdWdpbk5hbWUgPSBDYXBhY2l0b3JQbHVnaW5zLktleWJvYXJkO1xuICAgICAgICBhd2FpdCBLZXlib2FyZC5zZXRBY2Nlc3NvcnlCYXJWaXNpYmxlKHsgaXNWaXNpYmxlOiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGxvZ01lc3NhZ2UgPSBgRXJyb3Igd2hpbGUgY29uZmlndXJpbmcgJHtwbHVnaW5OYW1lfSBwbHVnaW46ICR7ZXJyLm1lc3NhZ2UgfHwgZXJyfVxcbiR7ZXJyPy5vcmlnaW5hbFN0YWNrIHx8IEpTT04uc3RyaW5naWZ5KGVycil9YDtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1twbGF0Zm9ybV0gJyArIGxvZ01lc3NhZ2UpO1xuICAgICAgdGhpcy5fbG9nZ2VyPy5lcnJvcignY29uZmlndXJlQ2FwYWNpdG9yUGx1Z2lucycsIGxvZ01lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb25maWd1cmVUcmFuc2xhdGUoKSB7XG4gICAgY29uc29sZS5pbmZvKCdbcGxhdGZvcm1dIENvbmZpZ3VyaW5nIGkxOG4gLi4uJyk7XG5cbiAgICAvLyB0aGlzIGxhbmd1YWdlIHdpbGwgYmUgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gYSB0cmFuc2xhdGlvbiBpc24ndCBmb3VuZCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZVxuICAgIHRoaXMudHJhbnNsYXRlLnNldERlZmF1bHRMYW5nKHRoaXMuZW52aXJvbm1lbnQuZGVmYXVsdExvY2FsZSk7XG4gICAgLy8gYXBwbHkgbG9jYWxlIGltbWVkaWF0ZWx5XG4gICAgdGhpcy5hcHBseUxvY2FsZSh0aGlzLmVudmlyb25tZW50LmRlZmF1bHRMb2NhbGUpO1xuXG4gICAgLy8gV2hlbiBsb2NhbGUgY2hhbmdlcywgYXBwbHkgdG8gZGF0ZSBhZGFwdGVyXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC5sYW5nKSB7XG4gICAgICAgICAgdGhpcy5hcHBseUxvY2FsZShldmVudC5sYW5nKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuc2V0dGluZ3Mub25DaGFuZ2Uuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgLy8gQXBwbHkgbG9jYWxlXG4gICAgICAgICAgaWYgKGRhdGEubG9jYWxlKSB7XG4gICAgICAgICAgICBpZiAoZGF0YS5sb2NhbGUgIT09IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKSB7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShkYXRhLmxvY2FsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEFwcGx5aW5nIGRlZmF1bHQsIHdoZW4gc2V0dGluZ3MgaGFzIG5vIGxvY2FsZSBwcm9wZXJ0eSAoaG90Zml4IC0gbHVkb3ZpYy5wZWNxdW90QGUtaXMucHJvIC0gMTQvMTEvMjAyMSAtIHNpbmNlIHYxLjIwLjQyKVxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbcGxhdGZvcm1dIE5vIGxvY2FsZSBmb3VuZCBpbiBzZXR0aW5nczogYXBwbHlpbmcgZGVmYXVsdExvY2FsZTogJywgdGhpcy5lbnZpcm9ubWVudC5kZWZhdWx0TG9jYWxlKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZSh0aGlzLmVudmlyb25tZW50LmRlZmF1bHRMb2NhbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gVXNlIGFjY291bnQncyBzZXR0aW5ncywgKGxpa2UgbG9jYWxlKSwgd2hlbiBhY2NvdW50IGluaGVyaXRhbmNlIGVuYWJsZWRcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ2luLnN1YnNjcmliZSgoYWNjb3VudCkgPT4ge1xuICAgICAgICBpZiAoYWNjb3VudC5zZXR0aW5ncyAmJiB0aGlzLnNldHRpbmdzLnNldHRpbmdzLmFjY291bnRJbmhlcml0YW5jZSkge1xuICAgICAgICAgIGNvbnN0IGFjY291bnRTZXR0aW5ncyA9IGFjY291bnQuc2V0dGluZ3MuYXNMb2NhbFNldHRpbmdzKCk7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5hcHBseShhY2NvdW50U2V0dGluZ3MpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXBwbHlMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICAvLyBmb3JjZSAnZW4nIGFzICdlbl9HQidcbiAgICBpZiAobG9jYWxlID09PSAnZW4nKSB7XG4gICAgICBsb2NhbGUgPSAnZW5fR0InO1xuICAgIH1cblxuICAgIC8vIGNvbmZpZyBtb21lbnQgbGliXG4gICAgdHJ5IHtcbiAgICAgIG1vbWVudExvY2FsZShsb2NhbGUpO1xuICAgICAgY29uc29sZS5kZWJ1ZygnW3BsYXRmb3JtXSBVc2UgbG9jYWxlIHsnICsgbG9jYWxlICsgJ30nKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIElmIGVycm9yLCBmYWxsYmFjayB0byBlblxuICAgICAgbW9tZW50TG9jYWxlKCdlbicpO1xuICAgICAgY29uc29sZS53YXJuKCdbcGxhdGZvcm1dIFVua25vd24gbG9jYWxlIGZvciBtb21lbnQgbGliLiBVc2luZyBkZWZhdWx0IFtlbl0nKTtcbiAgICB9XG5cbiAgICAvLyBDb25maWcgZGF0ZSBhZGFwdGVyXG4gICAgdGhpcy5kYXRlQWRhcHRlci5zZXRMb2NhbGUobW9tZW50TG9jYWxlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUNhY2hlKG9ubGluZT86IGJvb2xlYW4pIHtcbiAgICBvbmxpbmUgPSB0b0Jvb2xlYW4ob25saW5lLCB0aGlzLmNhY2hlLmlzT25saW5lKCkpO1xuICAgIGNvbnN0IGNhY2hlVFRMID0gb25saW5lID8gMzYwMCAvKiAxaCAqLyA6IDM2MDAgKiAyNCAqIDMwOyAvKiAxIG1vbnRoICovXG4gICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIENvbmZpZ3VyaW5nIGNhY2hlIFtPS10ge29ubGluZTogJHtvbmxpbmV9LCB0aW1lVG9MaXZlOiAke2NhY2hlVFRMIC8gMzYwMH1oLCBvZmZsaW5lSW52YWxpZGF0ZTogZmFsc2V9YCk7XG4gICAgdGhpcy5jYWNoZS5zZXREZWZhdWx0VFRMKGNhY2hlVFRMKTtcbiAgICB0aGlzLmNhY2hlLnNldE9mZmxpbmVJbnZhbGlkYXRlKGZhbHNlKTsgLy8gRG8gbm90IGludmFsaWRhdGUgY2FjaGUgd2hlbiBvZmZsaW5lXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY2hlY2tBcHBWZXJzaW9uKG9wdHM/OiB7IGNhblJlbG9hZD86IGJvb2xlYW47IHNpbGVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICh0aGlzLm5ldHdvcmtTZXJ2aWNlLm9mZmxpbmUgfHwgIXRoaXMuaXNXZWIoKSkgcmV0dXJuOyAvLyBTa2lwXG5cbiAgICBjb25zdCBzaWxlbnQgPSBvcHRzPy5zaWxlbnQgPT09IHRydWU7XG4gICAgY29uc3QgcHJvZHVjdGlvbiA9IHRoaXMuZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgICBjb25zdCBjYW5BdXRvUmVsb2FkID0gIW9wdHMgfHwgb3B0cy5jYW5SZWxvYWQgIT09IGZhbHNlO1xuXG4gICAgaWYgKCFzaWxlbnQpIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBDaGVja2luZyByZW1vdGUgYXBwIHZlcnNpb24uLi4nKTtcblxuICAgIGNvbnN0IGFjdHVhbFZlcnNpb24gPSB0aGlzLmVudmlyb25tZW50LnZlcnNpb247XG4gICAgaWYgKGlzTmlsT3JCbGFuayhhY3R1YWxWZXJzaW9uKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIltwbGF0Zm9ybV0gTWlzc2luZyByZXF1aXJlZCB2YWx1ZSBmb3IgJ2Vudmlyb25tZW50LnZlcnNpb24nLiBDYW5ub3QgY2hlY2sgcmVtb3RlIGFwcCB2ZXJzaW9uLlwiKTtcbiAgICAgIHRoaXMuY2hlY2tBcHBWZXJzaW9uVGltZXI/LnVuc3Vic2NyaWJlKCk7IC8vIFN0b3AgdGltZXIgaWYgZXhpc3RzXG4gICAgICByZXR1cm47IC8vIFNraXBcbiAgICB9XG5cbiAgICBjb25zdCByZW1vdGVWZXJzaW9uID0gYXdhaXQgdGhpcy5uZXR3b3JrU2VydmljZS5nZXRBcHBWZXJzaW9uKCk7XG4gICAgaWYgKGlzTmlsT3JCbGFuayhyZW1vdGVWZXJzaW9uKSkge1xuICAgICAgaWYgKHByb2R1Y3Rpb24gJiYgIXNpbGVudCkgY29uc29sZS5lcnJvcignW3BsYXRmb3JtXSBDYW5ub3QgbG9hZCByZW1vdGUgYXBwIHZlcnNpb24uIFNraXBwaW5nIHZlcnNpb24gY2hlY2snKTtcbiAgICAgIHRoaXMuY2hlY2tBcHBWZXJzaW9uVGltZXI/LnVuc3Vic2NyaWJlKCk7IC8vIFN0b3AgdGltZXIgaWYgZXhpc3RzXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFZlcnNpb25VdGlscy5pc0NvbXBhdGlibGUocmVtb3RlVmVyc2lvbiwgYWN0dWFsVmVyc2lvbikpIHtcbiAgICAgIGlmICghc2lsZW50KSBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gQ2hlY2tpbmcgcmVtb3RlIGFwcCB2ZXJzaW9uIFtPS10ge3JlbW90ZTogJyR7cmVtb3RlVmVyc2lvbn0nLCBhY3R1YWw6ICcke2FjdHVhbFZlcnNpb259J31gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBuZXdlciB2ZXJzaW9uIGV4aXN0c1xuICAgIGxldCByZWxvYWRQYXRoID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKC9bJj9ddmVyc2lvbj1bXiZdKi9naSwgJycpOyAvLyBSZW1vdmUgb2xkIHZlcnNpb24gaW4gcXVlcnkgcGFyYW1zXG4gICAgcmVsb2FkUGF0aCArPSByZWxvYWRQYXRoLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJic7IC8vIEFkZCBxdWVyeSBwYXJhbSBzZXBhcmF0b3JcbiAgICByZWxvYWRQYXRoICs9ICd2ZXJzaW9uPScgKyByZW1vdGVWZXJzaW9uOyAvLyBBZGQgdmVyc2lvbiAodG8gYXZvaWQgYSByZWxvYWQgaW5maW5pdGUgbG9vcClcblxuICAgIC8vIEFscmVhZHkgdHJ5IHRvIHJlbG9hZCwgYnV0IHZlcnNpb24gc3RpbGwgYmFkXG4gICAgaWYgKHJlbG9hZFBhdGggPT09IGxvY2F0aW9uLmhyZWYpIHtcbiAgICAgIGlmIChjYW5BdXRvUmVsb2FkKVxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGBbcGxhdGZvcm1dIFJlbG9hZGVkIHBhZ2UgZmFpbGVkLCBiZWNhdXNlIHZlcnNpb24gc3RpbGwgbWlzbWF0Y2ghIFBsZWFzZSBjaGVjayB2ZXJzaW9uLmFwcHVwIGZpbGUgKGV4cGVjdGVkIGFwcCB2ZXJzaW9uOiAke2FjdHVhbFZlcnNpb259KWBcbiAgICAgICAgKTtcbiAgICAgIC8vIFN0b3AgdGltZXIsIHRvIGF2b2lkIGluZmluaXRlIGxvb3BcbiAgICAgIHRoaXMuY2hlY2tBcHBWZXJzaW9uVGltZXI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKGBbcGxhdGZvcm1dIE1vcmUgcmVjZW50IHZlcnNpb24gZGV0ZWN0ZWQgKHJlbW90ZTogJHtyZW1vdGVWZXJzaW9ufSwgYWN0dWFsOiAke2FjdHVhbFZlcnNpb259YCk7XG5cbiAgICAvLyBBdXRvIHJlbG9hZFxuICAgIGlmIChjYW5BdXRvUmVsb2FkKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gV2lsbCByZWxvYWRpbmcgYXQgJyArIHJlbG9hZFBhdGgpO1xuICAgICAgbG9jYXRpb24uaHJlZiA9IHJlbG9hZFBhdGg7XG4gICAgICAvLyBBcHAgc3RvcFxuICAgIH1cbiAgICAvLyBBc2sgdXNlciB0byByZWxvYWRcbiAgICBlbHNlIHtcbiAgICAgIC8vIFN0b3AgdGltZXIsIHRvIGF2b2lkIGluZmluaXRlIGxvb3BcbiAgICAgIHRoaXMuY2hlY2tBcHBWZXJzaW9uVGltZXI/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgIC8vIERpc3BsYXkgYSByZWxvYWQgdG9hc3RcbiAgICAgIGF3YWl0IHRoaXMuc2hvd1RvYXN0KHtcbiAgICAgICAgbWVzc2FnZTogJ0NPTkZJUk0uUkVMT0FEX0FQUCcsXG4gICAgICAgIG1lc3NhZ2VQYXJhbXM6IHsgdmVyc2lvbjogcmVtb3RlVmVyc2lvbiwgbmFtZTogdGhpcy5lbnZpcm9ubWVudC5uYW1lIH0sXG4gICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgZHVyYXRpb246IC0xLFxuICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAvLyBSZWxvYWQgYnV0dG9uXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnQ09NTU9OLkJUTl9VUERBVEUnKSxcbiAgICAgICAgICAgIHNpZGU6ICdlbmQnLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gcmVsb2FkUGF0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd1RvYXN0KG9wdHM6IFNob3dUb2FzdE9wdGlvbnMpOiBQcm9taXNlPEhUTUxJb25Ub2FzdEVsZW1lbnQ+IHtcbiAgICBpZiAoIXRoaXMudG9hc3RDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHRvYXN0Q29udHJvbGxlciBpbiBjb21wb25lbnQncyBjb25zdHJ1Y3RvclwiKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+XG4gICAgICBUb2FzdHMuc2hvdyh0aGlzLnRvYXN0Q29udHJvbGxlciwgdGhpcy50cmFuc2xhdGUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgb25XaWxsUHJlc2VudDogKHQpID0+IHJlc29sdmUodCksXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25TdGFydHVwRXJyb3IoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcignW3BsYXRmb3JtXSBGYWlsZWQgc3RhcnRpbmcgdGhlIHBsYXRmb3JtISAnICsgSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgbGV0IG1lc3NhZ2UgPSAoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnI7XG4gICAgY29uc3QgZGV0YWlsc01lc3NhZ2UgPSBlcnIgJiYgKChlcnIuZGV0YWlscyAmJiBlcnIuZGV0YWlscy5tZXNzYWdlKSB8fCBlcnIuZGV0YWlscyk7XG4gICAgLy8gU2V0IHNwZWNpZmljIGVycm9yIHdoZW4gRmlyZWZveCBpcyBpbiBwcml2YXRlIG1vZGUgb3IgaGlzdG9yeSBuZXZlciByZW1lbWJlcmVkIChzZWUgTWFudGlzIElmcmVtZXIgIzU2NDQxKVxuICAgIGlmIChlcnIuY29kZSA9PT0gMTEgJiYgdGhpcy5jZGtQbGF0Zm9ybS5GSVJFRk9YKSB7XG4gICAgICBtZXNzYWdlID0gJ0VSUk9SLkZJUkVGT1hfTk9fU1RPUkFHRSc7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zbGF0ZSkge1xuICAgICAgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobWVzc2FnZSk7XG4gICAgICBpZiAoZXJyICYmIGVyci5jb2RlKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYCB7Y29kZTogJHtlcnIuY29kZX19YDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IGBGYXRhbCBlcnJvcjogUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLlxcblxcbntjb2RlOiAkeyhlcnIgJiYgZXJyLmNvZGUpIHx8ICdudWxsJ30sIG1lc3NhZ2U6IFwiJHttZXNzYWdlfVwifWA7XG4gICAgfVxuICAgIGlmICh0aGlzLnRvYXN0Q29udHJvbGxlcikge1xuICAgICAgaWYgKGRldGFpbHNNZXNzYWdlKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYDxici8+PHNtYWxsPiR7ZGV0YWlsc01lc3NhZ2V9PC9zbWFsbD5gO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5zaG93VG9hc3Qoe1xuICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICBkdXJhdGlvbjogLTEsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAod2luZG93KSB7XG4gICAgICBpZiAoZGV0YWlsc01lc3NhZ2UpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgXFxuXFxue2NhdXNlOiBcIiR7ZGV0YWlsc01lc3NhZ2V9XCJ9YDtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5hbGVydChtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmRldGFpbHMpIGNvbnNvbGUuZXJyb3IoJ2NhdXNlJywgZXJyLmRldGFpbHMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -23294,7 +23294,7 @@ class PlatformService extends StartableService {
|
|
|
23294
23294
|
_capacitor;
|
|
23295
23295
|
_android;
|
|
23296
23296
|
_ios;
|
|
23297
|
-
busySubject = new BehaviorSubject(
|
|
23297
|
+
busySubject = new BehaviorSubject(false);
|
|
23298
23298
|
constructor(ionicPlatform, cdkPlatform, cdkClipboard, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, audioProvider, environment, loggingService, downloader) {
|
|
23299
23299
|
super(ionicPlatform);
|
|
23300
23300
|
this.ionicPlatform = ionicPlatform;
|