igniteui-angular 12.3.1 → 12.3.2
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/bundles/igniteui-angular.umd.js +16 -7
- package/bundles/igniteui-angular.umd.js.map +1 -1
- package/esm2015/lib/icon/icon.service.js +14 -6
- package/esm2015/lib/simple-combo/simple-combo.component.js +7 -4
- package/esm2015/lib/time-picker/time-picker.component.js +2 -2
- package/fesm2015/igniteui-angular.js +17 -8
- package/fesm2015/igniteui-angular.js.map +1 -1
- package/igniteui-angular.metadata.json +1 -1
- package/lib/icon/icon.service.d.ts +3 -1
- package/package.json +1 -1
|
@@ -3,10 +3,12 @@ import { DomSanitizer } from '@angular/platform-browser';
|
|
|
3
3
|
import { DOCUMENT } from '@angular/common';
|
|
4
4
|
import { HttpClient } from '@angular/common/http';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
|
+
import { PlatformUtil } from '../core/utils';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/platform-browser";
|
|
8
9
|
import * as i2 from "@angular/common/http";
|
|
9
|
-
import * as i3 from "
|
|
10
|
+
import * as i3 from "../core/utils";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
10
12
|
/**
|
|
11
13
|
* **Ignite UI for Angular Icon Service** -
|
|
12
14
|
*
|
|
@@ -20,16 +22,20 @@ import * as i3 from "@angular/common";
|
|
|
20
22
|
* ```
|
|
21
23
|
*/
|
|
22
24
|
export class IgxIconService {
|
|
23
|
-
constructor(_sanitizer, _httpClient, _document) {
|
|
25
|
+
constructor(_sanitizer, _httpClient, _platformUtil, _document) {
|
|
26
|
+
var _a;
|
|
24
27
|
this._sanitizer = _sanitizer;
|
|
25
28
|
this._httpClient = _httpClient;
|
|
29
|
+
this._platformUtil = _platformUtil;
|
|
26
30
|
this._document = _document;
|
|
27
31
|
this._family = 'material-icons';
|
|
28
32
|
this._familyAliases = new Map();
|
|
29
33
|
this._cachedSvgIcons = new Map();
|
|
30
34
|
this._iconLoaded = new Subject();
|
|
31
|
-
this._domParser = new DOMParser();
|
|
32
35
|
this.iconLoaded = this._iconLoaded.asObservable();
|
|
36
|
+
if ((_a = this._platformUtil) === null || _a === void 0 ? void 0 : _a.isBrowser) {
|
|
37
|
+
this._domParser = new DOMParser();
|
|
38
|
+
}
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
35
41
|
* Returns the default font-family.
|
|
@@ -149,8 +155,9 @@ export class IgxIconService {
|
|
|
149
155
|
* @hidden
|
|
150
156
|
*/
|
|
151
157
|
cacheSvgIcon(name, value, family = this._family, stripMeta) {
|
|
158
|
+
var _a;
|
|
152
159
|
family = !!family ? family : this._family;
|
|
153
|
-
if (name && value) {
|
|
160
|
+
if (((_a = this._platformUtil) === null || _a === void 0 ? void 0 : _a.isBrowser) && name && value) {
|
|
154
161
|
const doc = this._domParser.parseFromString(value, 'image/svg+xml');
|
|
155
162
|
const svg = doc.querySelector('svg');
|
|
156
163
|
if (!this._cachedSvgIcons.has(family)) {
|
|
@@ -175,7 +182,7 @@ export class IgxIconService {
|
|
|
175
182
|
}
|
|
176
183
|
}
|
|
177
184
|
}
|
|
178
|
-
IgxIconService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IgxIconService_Factory() { return new IgxIconService(i0.ɵɵinject(i1.DomSanitizer, 8), i0.ɵɵinject(i2.HttpClient, 8), i0.ɵɵinject(i3.DOCUMENT, 8)); }, token: IgxIconService, providedIn: "root" });
|
|
185
|
+
IgxIconService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IgxIconService_Factory() { return new IgxIconService(i0.ɵɵinject(i1.DomSanitizer, 8), i0.ɵɵinject(i2.HttpClient, 8), i0.ɵɵinject(i3.PlatformUtil, 8), i0.ɵɵinject(i4.DOCUMENT, 8)); }, token: IgxIconService, providedIn: "root" });
|
|
179
186
|
IgxIconService.decorators = [
|
|
180
187
|
{ type: Injectable, args: [{
|
|
181
188
|
providedIn: 'root'
|
|
@@ -184,6 +191,7 @@ IgxIconService.decorators = [
|
|
|
184
191
|
IgxIconService.ctorParameters = () => [
|
|
185
192
|
{ type: DomSanitizer, decorators: [{ type: Optional }] },
|
|
186
193
|
{ type: HttpClient, decorators: [{ type: Optional }] },
|
|
194
|
+
{ type: PlatformUtil, decorators: [{ type: Optional }] },
|
|
187
195
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
|
|
188
196
|
];
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFlM0M7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQWtCdkIsWUFDd0IsVUFBd0IsRUFDeEIsV0FBdUIsRUFDTCxTQUFjO1FBRmhDLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDTCxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBVGhELFlBQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUMzQixtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzNDLG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFDM0QsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUNoRCxlQUFVLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQU9qQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7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Q0FBQyxDQUFDO2dCQUM1QixHQUFHLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUV6RCxJQUFJLFNBQVMsRUFBRTtvQkFDWCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN6QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUV2QyxJQUFJLEtBQUssRUFBRTt3QkFDUCxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMxQjtvQkFFRCxJQUFJLElBQUksRUFBRTt3QkFDTixHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN6QjtpQkFDSjtnQkFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzthQUN2RDtTQUNKO0lBQ0wsQ0FBQzs7OztZQTVMSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQWhDUSxZQUFZLHVCQW9EWixRQUFRO1lBbERSLFVBQVUsdUJBbURWLFFBQVE7NENBQ1IsUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2VjdXJpdHlDb250ZXh0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIFNWRyBpY29uIGlzIGxvYWRlZCB0aHJvdWdoXG4gKiBhIEhUVFAgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJZ3hJY29uTG9hZGVkRXZlbnQge1xuICAgIC8qKiBOYW1lIG9mIHRoZSBpY29uICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgYWN0dWFsIFNWRyB0ZXh0ICovXG4gICAgdmFsdWU6IHN0cmluZztcbiAgICAvKiogVGhlIGZvbnQtZmFtaWx5IGZvciB0aGUgaWNvbi4gRGVmYXVsdHMgdG8gbWF0ZXJpYWwuICovXG4gICAgZmFtaWx5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgSWNvbiBTZXJ2aWNlKiogLVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgSWNvbiBTZXJ2aWNlIG1ha2VzIGl0IGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gaW5jbHVkZSBjdXN0b20gU1ZHIGltYWdlcyBhbmQgdXNlIHRoZW0gd2l0aCBJZ3hJY29uQ29tcG9uZW50LlxuICogSW4gYWRkaXRpb24gaXQgY291bGQgYmUgdXNlZCB0byBhc3NvY2lhdGUgYSBjdXN0b20gY2xhc3MgdG8gYmUgYXBwbGllZCBvbiBJZ3hJY29uQ29tcG9uZW50IGFjY29yZGluZyB0byBnaXZlbiBmb250LWZhbWlseS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckZhbWlseUFsaWFzKCdtYXRlcmlhbCcsICdtYXRlcmlhbC1pY29ucycpO1xuICogdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uKCdhcnViYScsICcvYXNzZXRzL3N2Zy9jb3VudHJ5X2ZsYWdzL2FydWJhLnN2ZycsICdzdmctZmxhZ3MnKTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIElneEljb25TZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhbiBpY29uIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWRcbiAgICAgKiB0aHJvdWdoIGEgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5zZXJ2aWNlLmljb25Mb2FkZWQuc3Vic2NyaWJlKChldjogSWd4SWNvbkxvYWRlZEV2ZW50KSA9PiAuLi4pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBpY29uTG9hZGVkOiBPYnNlcnZhYmxlPElneEljb25Mb2FkZWRFdmVudD47XG5cbiAgICBwcml2YXRlIF9mYW1pbHkgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgIHByaXZhdGUgX2ZhbWlseUFsaWFzZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgX2NhY2hlZFN2Z0ljb25zID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFNhZmVIdG1sPj4oKTtcbiAgICBwcml2YXRlIF9pY29uTG9hZGVkID0gbmV3IFN1YmplY3Q8SWd4SWNvbkxvYWRlZEV2ZW50PigpO1xuICAgIHByaXZhdGUgX2RvbVBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueVxuICAgICkge1xuICAgICAgICB0aGlzLmljb25Mb2FkZWQgPSB0aGlzLl9pY29uTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGRlZmF1bHRGYW1pbHkgPSB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZWZhdWx0RmFtaWx5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mYW1pbHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFNldHMgdGhlIGRlZmF1bHQgZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5kZWZhdWx0RmFtaWx5ID0gJ3N2Zy1mbGFncyc7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBkZWZhdWx0RmFtaWx5KGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZhbWlseSA9IGNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmVnaXN0ZXJzIGEgY3VzdG9tIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gSWd4SWNvbkNvbXBvbmVudCBmb3IgYSBnaXZlbiBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRmFtaWx5QWxpYXMoJ21hdGVyaWFsJywgJ21hdGVyaWFsLWljb25zJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRmFtaWx5QWxpYXMoYWxpYXM6IHN0cmluZywgY2xhc3NOYW1lOiBzdHJpbmcgPSBhbGlhcyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9mYW1pbHlBbGlhc2VzLnNldChhbGlhcywgY2xhc3NOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIGN1c3RvbSBjbGFzcywgaWYgYW55LCBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3QgZmFtaWx5Q2xhc3MgPSB0aGlzLmljb25TZXJ2aWNlLmZhbWlseUNsYXNzTmFtZSgnbWF0ZXJpYWwnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZmFtaWx5Q2xhc3NOYW1lKGFsaWFzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmFtaWx5QWxpYXNlcy5nZXQoYWxpYXMpIHx8IGFsaWFzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBZGRzIGFuIFNWRyBpbWFnZSB0byB0aGUgY2FjaGUuIFNWRyBzb3VyY2UgaXMgYW4gdXJsLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbignYXJ1YmEnLCAnL2Fzc2V0cy9zdmcvY291bnRyeV9mbGFncy9hcnViYS5zdmcnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb24obmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZywgZmFtaWx5ID0gdGhpcy5fZmFtaWx5LCBzdHJpcE1ldGEgPSBmYWxzZSkge1xuICAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XG4gICAgICAgICAgICBpZiAoIXNhZmVVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm92aWRlZCBVUkwgY291bGQgbm90IGJlIHByb2Nlc3NlZCBhcyB0cnVzdGVkIHJlc291cmNlIFVSTCBieSBBbmd1bGFyJ3MgRG9tU2FuaXRpemVyOiBcIiR7dXJsfVwiLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LlJFU09VUkNFX1VSTCwgc2FmZVVybCk7XG4gICAgICAgICAgICBpZiAoIXNhbml0aXplZFVybCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIFVSTCBwcm92aWRlZCB3YXMgbm90IHRydXN0ZWQgYXMgYSByZXNvdXJjZSBVUkw6IFwiJHt1cmx9XCIuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc1N2Z0ljb25DYWNoZWQobmFtZSwgZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hTdmcodXJsKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU3ZnSWNvbihuYW1lLCByZXMsIGZhbWlseSwgc3RyaXBNZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faWNvbkxvYWRlZC5uZXh0KHsgbmFtZSwgdmFsdWU6IHJlcywgZmFtaWx5IH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYG5hbWVgIGFuZCBgdXJsYCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBZGRzIGFuIFNWRyBpbWFnZSB0byB0aGUgY2FjaGUuIFNWRyBzb3VyY2UgaXMgaXRzIHRleHQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoJ3NpbXBsZScsICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwMCAyMDBcIj5cbiAgICAgKiAgIDxwYXRoIGQ9XCJNNzQgNzRoNTR2NTRINzRcIiAvPjwvc3ZnPicsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkU3ZnSWNvbkZyb21UZXh0KG5hbWU6IHN0cmluZywgaWNvblRleHQ6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcgPSAnJywgc3RyaXBNZXRhID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgaWNvblRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3ZnSWNvbkNhY2hlZChuYW1lLCBmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNhY2hlU3ZnSWNvbihuYW1lLCBpY29uVGV4dCwgZmFtaWx5LCBzdHJpcE1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYG5hbWVgIGFuZCBgaWNvblRleHRgIHRvIHJlZ2lzdGVyIGFuIHN2ZyBpY29uLicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgd2hldGhlciBhIGdpdmVuIFNWRyBpbWFnZSBpcyBwcmVzZW50IGluIHRoZSBjYWNoZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBpc1N2Z0NhY2hlZCA9IHRoaXMuaWNvblNlcnZpY2UuaXNTdmdJY29uQ2FjaGVkKCdhcnViYScsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTdmdJY29uQ2FjaGVkKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcgPSAnJyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmYW1pbHlDbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShmYW1pbHkpO1xuICAgICAgICBpZiAodGhpcy5fY2FjaGVkU3ZnSWNvbnMuaGFzKGZhbWlseUNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZhbWlseVJlZ2lzdHJ5ID0gdGhpcy5fY2FjaGVkU3ZnSWNvbnMuZ2V0KGZhbWlseUNsYXNzTmFtZSkgYXMgTWFwPHN0cmluZywgU2FmZUh0bWw+O1xuICAgICAgICAgICAgcmV0dXJuIGZhbWlseVJlZ2lzdHJ5LmhhcyhuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgY2FjaGVkIFNWRyBpbWFnZSBhcyBzdHJpbmcuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0U3ZnSWNvbignYXJ1YmEnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFN2Z0ljb24obmFtZTogc3RyaW5nLCBmYW1pbHk6IHN0cmluZyA9ICcnKSB7XG4gICAgICAgIGNvbnN0IGZhbWlseUNsYXNzTmFtZSA9IHRoaXMuZmFtaWx5Q2xhc3NOYW1lKGZhbWlseSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRTdmdJY29ucy5nZXQoZmFtaWx5Q2xhc3NOYW1lKT8uZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoU3ZnKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVxID0gdGhpcy5faHR0cENsaWVudC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xuICAgICAgICByZXR1cm4gcmVxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNhY2hlU3ZnSWNvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGZhbWlseSA9IHRoaXMuX2ZhbWlseSwgc3RyaXBNZXRhOiBib29sZWFuKSB7XG4gICAgICAgIGZhbWlseSA9ICEhZmFtaWx5ID8gZmFtaWx5IDogdGhpcy5fZmFtaWx5O1xuXG4gICAgICAgIGlmIChuYW1lICYmIHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSB0aGlzLl9kb21QYXJzZXIucGFyc2VGcm9tU3RyaW5nKHZhbHVlLCAnaW1hZ2Uvc3ZnK3htbCcpO1xuICAgICAgICAgICAgY29uc3Qgc3ZnID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpIGFzIFNWR0VsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkU3ZnSWNvbnMuaGFzKGZhbWlseSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRTdmdJY29ucy5zZXQoZmFtaWx5LCBuZXcgTWFwPHN0cmluZywgU2FmZUh0bWw+KCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3ZnKSB7XG4gICAgICAgICAgICAgICAgc3ZnLnNldEF0dHJpYnV0ZSgnZml0JywgJycpO1xuICAgICAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAneE1pZFlNaWQgbWVldCcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0cmlwTWV0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IHN2Zy5xdWVyeVNlbGVjdG9yKCd0aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0gc3ZnLnF1ZXJ5U2VsZWN0b3IoJ2Rlc2MnKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Zy5yZW1vdmVDaGlsZCh0aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnLnJlbW92ZUNoaWxkKGRlc2MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2FmZVN2ZyA9IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdmcub3V0ZXJIVE1MKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRTdmdJY29ucy5nZXQoZmFtaWx5KS5zZXQobmFtZSwgc2FmZVN2Zyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFlN0M7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQWtCdkIsWUFDd0IsVUFBd0IsRUFDeEIsV0FBdUIsRUFDdkIsYUFBMkIsRUFDVCxTQUFjOztRQUhoQyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQ1QsY0FBUyxHQUFULFNBQVMsQ0FBSztRQVZoRCxZQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQzNELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7UUFTcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWxELElBQUcsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxTQUFTLEVBQUU7WUFD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YWJsZSwgU2VjdXJpdHlDb250ZXh0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgU1ZHIGljb24gaXMgbG9hZGVkIHRocm91Z2hcbiAqIGEgSFRUUCByZXF1ZXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElneEljb25Mb2FkZWRFdmVudCB7XG4gICAgLyoqIE5hbWUgb2YgdGhlIGljb24gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBhY3R1YWwgU1ZHIHRleHQgKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgZm9udC1mYW1pbHkgZm9yIHRoZSBpY29uLiBEZWZhdWx0cyB0byBtYXRlcmlhbC4gKi9cbiAgICBmYW1pbHk6IHN0cmluZztcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBJY29uIFNlcnZpY2UqKiAtXG4gKlxuICogVGhlIElnbml0ZSBVSSBJY29uIFNlcnZpY2UgbWFrZXMgaXQgZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBpbmNsdWRlIGN1c3RvbSBTVkcgaW1hZ2VzIGFuZCB1c2UgdGhlbSB3aXRoIElneEljb25Db21wb25lbnQuXG4gKiBJbiBhZGRpdGlvbiBpdCBjb3VsZCBiZSB1c2VkIHRvIGFzc29jaWF0ZSBhIGN1c3RvbSBjbGFzcyB0byBiZSBhcHBsaWVkIG9uIElneEljb25Db21wb25lbnQgYWNjb3JkaW5nIHRvIGdpdmVuIGZvbnQtZmFtaWx5LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRmFtaWx5QWxpYXMoJ21hdGVyaWFsJywgJ21hdGVyaWFsLWljb25zJyk7XG4gKiB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4SWNvblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGljb24gaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuICAgICAqIHRocm91Z2ggYSBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnNlcnZpY2UuaWNvbkxvYWRlZC5zdWJzY3JpYmUoKGV2OiBJZ3hJY29uTG9hZGVkRXZlbnQpID0+IC4uLik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGljb25Mb2FkZWQ6IE9ic2VydmFibGU8SWd4SWNvbkxvYWRlZEV2ZW50PjtcblxuICAgIHByaXZhdGUgX2ZhbWlseSA9ICdtYXRlcmlhbC1pY29ucyc7XG4gICAgcHJpdmF0ZSBfZmFtaWx5QWxpYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBfY2FjaGVkU3ZnSWNvbnMgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgU2FmZUh0bWw+PigpO1xuICAgIHByaXZhdGUgX2ljb25Mb2FkZWQgPSBuZXcgU3ViamVjdDxJZ3hJY29uTG9hZGVkRXZlbnQ+KCk7XG4gICAgcHJpdmF0ZSBfZG9tUGFyc2VyOiBET01QYXJzZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BsYXRmb3JtVXRpbDogUGxhdGZvcm1VdGlsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LFxuICAgICkge1xuICAgICAgICB0aGlzLmljb25Mb2FkZWQgPSB0aGlzLl9pY29uTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgICAgIGlmKHRoaXMuX3BsYXRmb3JtVXRpbD8uaXNCcm93c2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9kb21QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgZGVmYXVsdCBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBkZWZhdWx0RmFtaWx5ID0gdGhpcy5pY29uU2VydmljZS5kZWZhdWx0RmFtaWx5O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGVmYXVsdEZhbWlseSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmFtaWx5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBTZXRzIHRoZSBkZWZhdWx0IGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuZGVmYXVsdEZhbWlseSA9ICdzdmctZmxhZ3MnO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgZGVmYXVsdEZhbWlseShjbGFzc05hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9mYW1pbHkgPSBjbGFzc05hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJlZ2lzdGVycyBhIGN1c3RvbSBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIElneEljb25Db21wb25lbnQgZm9yIGEgZ2l2ZW4gZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckZhbWlseUFsaWFzKCdtYXRlcmlhbCcsICdtYXRlcmlhbC1pY29ucycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlckZhbWlseUFsaWFzKGFsaWFzOiBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nID0gYWxpYXMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmFtaWx5QWxpYXNlcy5zZXQoYWxpYXMsIGNsYXNzTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBjdXN0b20gY2xhc3MsIGlmIGFueSwgYXNzb2NpYXRlZCB0byBhIGdpdmVuIGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGZhbWlseUNsYXNzID0gdGhpcy5pY29uU2VydmljZS5mYW1pbHlDbGFzc05hbWUoJ21hdGVyaWFsJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGZhbWlseUNsYXNzTmFtZShhbGlhczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlseUFsaWFzZXMuZ2V0KGFsaWFzKSB8fCBhbGlhcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGFuIHVybC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdmdJY29uKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcsIGZhbWlseSA9IHRoaXMuX2ZhbWlseSwgc3RyaXBNZXRhID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgdXJsKSB7XG4gICAgICAgICAgICBjb25zdCBzYWZlVXJsID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xuICAgICAgICAgICAgaWYgKCFzYWZlVXJsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgVVJMIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQgYXMgdHJ1c3RlZCByZXNvdXJjZSBVUkwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplcjogXCIke3VybH1cIi5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2FuaXRpemVkVXJsID0gdGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5SRVNPVVJDRV9VUkwsIHNhZmVVcmwpO1xuICAgICAgICAgICAgaWYgKCFzYW5pdGl6ZWRVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBVUkwgcHJvdmlkZWQgd2FzIG5vdCB0cnVzdGVkIGFzIGEgcmVzb3VyY2UgVVJMOiBcIiR7dXJsfVwiLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTdmdJY29uQ2FjaGVkKG5hbWUsIGZhbWlseSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoU3ZnKHVybCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgcmVzLCBmYW1pbHksIHN0cmlwTWV0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ljb25Mb2FkZWQubmV4dCh7IG5hbWUsIHZhbHVlOiByZXMsIGZhbWlseSB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IHNob3VsZCBwcm92aWRlIGF0IGxlYXN0IGBuYW1lYCBhbmQgYHVybGAgdG8gcmVnaXN0ZXIgYW4gc3ZnIGljb24uJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGl0cyB0ZXh0LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbkZyb21UZXh0KCdzaW1wbGUnLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMDAgMjAwXCI+XG4gICAgICogICA8cGF0aCBkPVwiTTc0IDc0aDU0djU0SDc0XCIgLz48L3N2Zz4nLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb25Gcm9tVGV4dChuYW1lOiBzdHJpbmcsIGljb25UZXh0OiBzdHJpbmcsIGZhbWlseTogc3RyaW5nID0gJycsIHN0cmlwTWV0YSA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChuYW1lICYmIGljb25UZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1N2Z0ljb25DYWNoZWQobmFtZSwgZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgaWNvblRleHQsIGZhbWlseSwgc3RyaXBNZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IHNob3VsZCBwcm92aWRlIGF0IGxlYXN0IGBuYW1lYCBhbmQgYGljb25UZXh0YCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBTVkcgaW1hZ2UgaXMgcHJlc2VudCBpbiB0aGUgY2FjaGUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3QgaXNTdmdDYWNoZWQgPSB0aGlzLmljb25TZXJ2aWNlLmlzU3ZnSWNvbkNhY2hlZCgnYXJ1YmEnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGlzU3ZnSWNvbkNhY2hlZChuYW1lOiBzdHJpbmcsIGZhbWlseTogc3RyaW5nID0gJycpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZmFtaWx5Q2xhc3NOYW1lID0gdGhpcy5mYW1pbHlDbGFzc05hbWUoZmFtaWx5KTtcbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlZFN2Z0ljb25zLmhhcyhmYW1pbHlDbGFzc05hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCBmYW1pbHlSZWdpc3RyeSA9IHRoaXMuX2NhY2hlZFN2Z0ljb25zLmdldChmYW1pbHlDbGFzc05hbWUpIGFzIE1hcDxzdHJpbmcsIFNhZmVIdG1sPjtcbiAgICAgICAgICAgIHJldHVybiBmYW1pbHlSZWdpc3RyeS5oYXMobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIGNhY2hlZCBTVkcgaW1hZ2UgYXMgc3RyaW5nLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IHN2Z0ljb24gPSB0aGlzLmljb25TZXJ2aWNlLmdldFN2Z0ljb24oJ2FydWJhJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdmdJY29uKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcgPSAnJykge1xuICAgICAgICBjb25zdCBmYW1pbHlDbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShmYW1pbHkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkU3ZnSWNvbnMuZ2V0KGZhbWlseUNsYXNzTmFtZSk/LmdldChuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmZXRjaFN2Zyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlcSA9IHRoaXMuX2h0dHBDbGllbnQuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KTtcbiAgICAgICAgcmV0dXJuIHJlcTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYWNoZVN2Z0ljb24obmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBmYW1pbHkgPSB0aGlzLl9mYW1pbHksIHN0cmlwTWV0YTogYm9vbGVhbikge1xuICAgICAgICBmYW1pbHkgPSAhIWZhbWlseSA/IGZhbWlseSA6IHRoaXMuX2ZhbWlseTtcblxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm1VdGlsPy5pc0Jyb3dzZXIgJiYgbmFtZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZG9jID0gdGhpcy5fZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyh2YWx1ZSwgJ2ltYWdlL3N2Zyt4bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IGRvYy5xdWVyeVNlbGVjdG9yKCdzdmcnKSBhcyBTVkdFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFN2Z0ljb25zLmhhcyhmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkU3ZnSWNvbnMuc2V0KGZhbWlseSwgbmV3IE1hcDxzdHJpbmcsIFNhZmVIdG1sPigpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN2Zykge1xuICAgICAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoJ2ZpdCcsICcnKTtcbiAgICAgICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ3hNaWRZTWlkIG1lZXQnKTtcblxuICAgICAgICAgICAgICAgIGlmIChzdHJpcE1ldGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBzdmcucXVlcnlTZWxlY3RvcigndGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHN2Zy5xdWVyeVNlbGVjdG9yKCdkZXNjJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcucmVtb3ZlQ2hpbGQodGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Zy5yZW1vdmVDaGlsZChkZXNjKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVTdmcgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnLm91dGVySFRNTCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkU3ZnSWNvbnMuZ2V0KGZhbWlseSkuc2V0KG5hbWUsIHNhZmVTdmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -157,7 +157,9 @@ export class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
|
157
157
|
}
|
|
158
158
|
/** @hidden @internal */
|
|
159
159
|
handleInputChange(event) {
|
|
160
|
-
|
|
160
|
+
if (event !== undefined) {
|
|
161
|
+
this.searchValue = typeof event === 'string' ? event : event.target.value;
|
|
162
|
+
}
|
|
161
163
|
this._onChangeCallback(this.searchValue);
|
|
162
164
|
if (this.collapsed && this.comboInput.focused) {
|
|
163
165
|
this.open();
|
|
@@ -303,10 +305,11 @@ export class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
|
303
305
|
};
|
|
304
306
|
this.selectionChanging.emit(args);
|
|
305
307
|
if (!args.cancel) {
|
|
306
|
-
|
|
308
|
+
let argsSelection = args.newSelection !== undefined
|
|
307
309
|
&& args.newSelection !== null
|
|
308
|
-
?
|
|
310
|
+
? args.newSelection
|
|
309
311
|
: [];
|
|
312
|
+
argsSelection = Array.isArray(argsSelection) ? argsSelection : [argsSelection];
|
|
310
313
|
this.selectionService.select_items(this.id, argsSelection, true);
|
|
311
314
|
if (this._updateInput) {
|
|
312
315
|
this.comboInput.value = this._value = displayText !== args.displayText
|
|
@@ -387,4 +390,4 @@ IgxSimpleComboModule.decorators = [
|
|
|
387
390
|
exports: [IgxSimpleComboComponent, IgxComboModule]
|
|
388
391
|
},] }
|
|
389
392
|
];
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWNvbWJvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zaW1wbGUtY29tYm8vc2ltcGxlLWNvbWJvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNZLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUNyRyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQ3hDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUF3RSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7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QUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0JBSXJELFNBQVMsU0FBQyx3QkFBd0I7Z0NBVWxDLE1BQU07NEJBR04sU0FBUyxTQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTswQkFpQ3JELFlBQVksU0FBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUM1QyxZQUFZLFNBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBZ1RyRCxNQUFNLE9BQU8sb0JBQW9COzs7WUFYaEMsUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN2QyxPQUFPLEVBQUU7b0JBQ0wsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZO29CQUM3QyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsbUJBQW1CO29CQUNyRCxjQUFjLEVBQUUsZUFBZSxFQUFFLGlCQUFpQjtvQkFDbEQsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGFBQWE7b0JBQ2pELHNCQUFzQjtpQkFDekI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsY0FBYyxDQUFDO2FBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5qZWN0b3IsXG4gICAgTmdNb2R1bGUsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hDaGVja2JveE1vZHVsZSB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9jb21iby9jb21iby1hZGQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbWJvL2NvbWJvLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0l0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9jb21iby9jb21iby1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FQSVNlcnZpY2UgfSBmcm9tICcuLi9jb21iby9jb21iby5hcGknO1xuaW1wb3J0IHsgSWd4Q29tYm9CYXNlRGlyZWN0aXZlLCBJR1hfQ09NQk9fQ09NUE9ORU5UIH0gZnJvbSAnLi4vY29tYm8vY29tYm8uY29tbW9uJztcbmltcG9ydCB7IElneENvbWJvTW9kdWxlIH0gZnJvbSAnLi4vY29tYm8vY29tYm8uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5VG9rZW4sIElEaXNwbGF5RGVuc2l0eU9wdGlvbnMgfSBmcm9tICcuLi9jb3JlL2Rpc3BsYXlEZW5zaXR5JztcbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncywgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEZvck9mTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9mb3Itb2YvZm9yX29mLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRleHRTZWxlY3Rpb25EaXJlY3RpdmUsIElneFRleHRTZWxlY3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RleHQtc2VsZWN0aW9uL3RleHQtc2VsZWN0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneERyb3BEb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcC1kb3duL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4SWNvbk1vZHVsZSwgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cE1vZHVsZSwgSWd4SW5wdXRHcm91cFR5cGUsIElHWF9JTlBVVF9HUk9VUF9UWVBFIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvcHVibGljX2FwaSc7XG5cbi8qKiBFbWl0dGVkIHdoZW4gYW4gaWd4LXNpbXBsZS1jb21ibydzIHNlbGVjdGlvbiBpcyBjaGFuZ2luZy4gICovXG5leHBvcnQgaW50ZXJmYWNlIElTaW1wbGVDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBBbiBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyB0aGUgdmFsdWUgdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgKi9cbiAgICBvbGRTZWxlY3Rpb246IGFueTtcbiAgICAvKiogQW4gb2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3U2VsZWN0aW9uOiBhbnk7XG4gICAgLyoqIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvbWJvIHRleHQgYm94ICovXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZHJvcC1kb3duIGxpc3QgdGhhdCBwcm92aWRlcyBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eSwgYWxsb3dpbmcgdXNlcnMgdG8gY2hvb3NlIGEgc2luZ2xlIG9wdGlvbiBmcm9tIGEgcHJlZGVmaW5lZCBsaXN0LlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4U2ltcGxlQ29tYm9Nb2R1bGVcbiAqIEBpZ3hUaGVtZSBpZ3gtY29tYm8tdGhlbWVcbiAqIEBpZ3hLZXl3b3JkcyBjb21ib2JveCwgc2luZ2xlIGNvbWJvIHNlbGVjdGlvblxuICogQGlneEdyb3VwIEdyaWRzICYgTGlzdHNcbiAqXG4gKiBAcmVtYXJrc1xuICogSXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIGl0ZW1zIGFzIHdlbGwgYXMgcGVyZm9ybSBzaW5nbGUgc2VsZWN0aW9uIG9uIHRoZSBwcm92aWRlZCBkYXRhLlxuICogQWRkaXRpb25hbGx5LCBpdCBleHBvc2VzIGtleWJvYXJkIG5hdmlnYXRpb24gYW5kIGN1c3RvbSBzdHlsaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LXNpbXBsZS1jb21ibyBbaXRlbXNNYXhIZWlnaHRdPVwiMjUwXCIgW2RhdGFdPVwibG9jYXRpb25EYXRhXCJcbiAqICBbZGlzcGxheUtleV09XCInZmllbGQnXCIgW3ZhbHVlS2V5XT1cIidmaWVsZCdcIlxuICogIHBsYWNlaG9sZGVyPVwiTG9jYXRpb25cIiBzZWFyY2hQbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiPlxuICogPC9pZ3gtc2ltcGxlLWNvbWJvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXNpbXBsZS1jb21ibycsXG4gICAgdGVtcGxhdGVVcmw6ICdzaW1wbGUtY29tYm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHsgcHJvdmlkZTogSUdYX0NPTUJPX0NPTVBPTkVOVCwgdXNlRXhpc3Rpbmc6IElneFNpbXBsZUNvbWJvQ29tcG9uZW50IH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJZ3hTaW1wbGVDb21ib0NvbXBvbmVudCwgbXVsdGk6IHRydWUgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4U2ltcGxlQ29tYm9Db21wb25lbnQgZXh0ZW5kcyBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkcm9wZG93bjogSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4Q29tYm9BZGRJdGVtQ29tcG9uZW50KVxuICAgIHB1YmxpYyBhZGRJdGVtOiBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gaXRlbSBzZWxlY3Rpb24gaXMgY2hhbmdpbmcsIGJlZm9yZSB0aGUgc2VsZWN0aW9uIGNvbXBsZXRlc1xuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc2ltcGxlLWNvbWJvIChzZWxlY3Rpb25DaGFuZ2luZyk9J2hhbmRsZVNlbGVjdGlvbigpJz48L2lneC1zaW1wbGUtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGlvbkNoYW5naW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJU2ltcGxlQ29tYm9TZWxlY3Rpb25DaGFuZ2luZ0V2ZW50QXJncz4oKTtcblxuICAgIEBWaWV3Q2hpbGQoSWd4VGV4dFNlbGVjdGlvbkRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHRleHRTZWxlY3Rpb246IElneFRleHRTZWxlY3Rpb25EaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgY29tcG9zaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF91cGRhdGVJbnB1dCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGZpbHRlcmVkRGF0YSgpOiBhbnlbXSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWREYXRhO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0IGZpbHRlcmVkRGF0YSh2YWw6IGFueVtdIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJlZERhdGEgPSB0aGlzLmdyb3VwS2V5ID8gKHZhbCB8fCBbXSkuZmlsdGVyKChlKSA9PiBlLmlzSGVhZGVyICE9PSB0cnVlKSA6IHZhbDtcbiAgICAgICAgdGhpcy5jaGVja01hdGNoKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZTogSWd4U2VsZWN0aW9uQVBJU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbWJvQVBJOiBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfaWNvblNlcnZpY2U6IElneEljb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHBsYXRmb3JtVXRpbDogUGxhdGZvcm1VdGlsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIHByb3RlY3RlZCBfZGlzcGxheURlbnNpdHlPcHRpb25zOiBJRGlzcGxheURlbnNpdHlPcHRpb25zLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElHWF9JTlBVVF9HUk9VUF9UWVBFKSBwcm90ZWN0ZWQgX2lucHV0R3JvdXBUeXBlOiBJZ3hJbnB1dEdyb3VwVHlwZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSxcbiAgICAgICAgICAgIF9pY29uU2VydmljZSwgX2Rpc3BsYXlEZW5zaXR5T3B0aW9ucywgX2lucHV0R3JvdXBUeXBlLCBfaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmNvbWJvQVBJLnJlZ2lzdGVyKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkFycm93RG93bihldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpcnREaXIuaWd4Rm9yT2YubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ubmF2aWdhdGVGaXJzdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFsbG93Q3VzdG9tVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGEgZGVmaW5lZCBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbSB0byBiZSBzZWxlY3RlZFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnNlbGVjdChcIk5ldyBZb3JrXCIpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3QoaXRlbTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmFkZF9pdGVtcyh0aGlzLmlkLCBpdGVtIGluc3RhbmNlb2YgQXJyYXkgPyBpdGVtIDogW2l0ZW1dLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlbGVjdCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtcyB0byBiZSBkZXNlbGVjdGVkXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uZGVzZWxlY3QoXCJOZXcgWW9ya1wiKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIHZhbHVlID8gW3ZhbHVlXSA6IFtdLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dCh0aGlzLnNlbGVjdGlvbiwgb2xkU2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnZpcnREaXIuY29udGVudFNpemVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy52aXJ0RGlyLmlneEZvck9mLmZpbmRJbmRleChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSBlW3RoaXMudmFsdWVLZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUtleSA9PT0gbnVsbCB8fCB0aGlzLnZhbHVlS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50ID09PSB0aGlzLnNlbGVjdGlvblswXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm5hdmlnYXRlSXRlbShpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLm9wZW5lZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEVkaXRFbGVtZW50KCkgJiYgIWFyZ3MuZXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhck9uQmx1cigpO1xuICAgICAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVJbnB1dENoYW5nZShldmVudD86IGFueSkge1xuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHRoaXMuc2VhcmNoVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5jb21ib0lucHV0LmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5uYXZpZ2F0ZUZpcnN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbWJvSW5wdXQudmFsdWUudHJpbSgpKSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgY2xlYXJpbmcgb2YgaW5wdXQgYnkgc3BhY2VcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQpO1xuICAgICAgICB0aGlzLmNvbXBvc2luZyA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLkVOVEVSKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyZWREYXRhLmZpbmQodGhpcy5maW5kTWF0Y2gpO1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSBudWxsIHx8IGZpbHRlcmVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtLml0ZW1JRCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAvLyBtYW51YWxseSB0cmlnZ2VyIHRleHQgc2VsZWN0aW9uIGFzIGl0IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBkdXJpbmcgZWRpdGluZ1xuICAgICAgICAgICAgdGhpcy50ZXh0U2VsZWN0aW9uLnRyaWdnZXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuQkFDS1NQQUNFXG4gICAgICAgICAgICB8fCBldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5ERUxFVEUpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiBldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5UQUIpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJPbkJsdXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICBzdXBlci5oYW5kbGVLZXlEb3duKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLkFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5maXJzdF9pdGVtKHRoaXMuaWQpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5mb2N1c2VkSXRlbSA9IGZpcnN0SXRlbSAmJiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmRyb3Bkb3duLml0ZW1zLmZpbmQoaSA9PiBpLml0ZW1JRCA9PT0gZmlyc3RJdGVtKVxuICAgICAgICAgICAgICAgIDogdGhpcy5kcm9wZG93bi5pdGVtc1swXTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUl0ZW1LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5BUlJPV19VUCAmJiBldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5FTlRFUikge1xuICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlSXRlbUNsaWNrKCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhck9uQmx1cigpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uQmx1cigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXRFZGl0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlQ2xlYXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbih0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ubmF2aWdhdGVGaXJzdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuY29tYm9JbnB1dC52YWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmNvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbWJvSW5wdXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlT3BlbmVkKCkge1xuICAgICAgICB0aGlzLnRyaWdnZXJDaGVjaygpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCh7IG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbG9zaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGUuY2FuY2VsIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoZS5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcG9zaW5nID0gZmFsc2U7XG4gICAgICAgIC8vIGV4cGxpY2l0bHkgdXBkYXRlIHNlbGVjdGlvbiBhbmQgdHJpZ2dlciB0ZXh0IHNlbGVjdGlvbiBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZm9yY2UgQ0RcbiAgICAgICAgdGhpcy50ZXh0U2VsZWN0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50ZXh0U2VsZWN0aW9uLnRyaWdnZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZm9jdXNTZWFyY2hJbnB1dChvcGVuaW5nPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAob3BlbmluZykge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBzdXBlci5vbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuY29tYm9JbnB1dC52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMudmlydERpci5zY3JvbGxUbygwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kTWF0Y2ggPSAoZWxlbWVudDogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kaXNwbGF5S2V5ID8gZWxlbWVudFt0aGlzLmRpc3BsYXlLZXldIDogZWxlbWVudDtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb246IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb25Bc0FycmF5ID0gbmV3U2VsZWN0aW9uID8gQXJyYXkuZnJvbShuZXdTZWxlY3Rpb24pIGFzIElneENvbWJvSXRlbUNvbXBvbmVudFtdIDogW107XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbkFzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5pZCkgfHwgW10pO1xuICAgICAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uQXNBcnJheSwgb2xkU2VsZWN0aW9uQXNBcnJheSk7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElTaW1wbGVDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uOiBuZXdTZWxlY3Rpb25Bc0FycmF5WzBdLFxuICAgICAgICAgICAgb2xkU2VsZWN0aW9uOiBvbGRTZWxlY3Rpb25Bc0FycmF5WzBdLFxuICAgICAgICAgICAgZGlzcGxheVRleHQsXG4gICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzU2VsZWN0aW9uID0gYXJncy5uZXdTZWxlY3Rpb24gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICYmIGFyZ3MubmV3U2VsZWN0aW9uICE9PSBudWxsXG4gICAgICAgICAgICAgICAgPyBbYXJncy5uZXdTZWxlY3Rpb25dXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgYXJnc1NlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5fdXBkYXRlSW5wdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQudmFsdWUgPSB0aGlzLl92YWx1ZSA9IGRpc3BsYXlUZXh0ICE9PSBhcmdzLmRpc3BsYXlUZXh0XG4gICAgICAgICAgICAgICAgICAgID8gYXJncy5kaXNwbGF5VGV4dFxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuY3JlYXRlRGlzcGxheVRleHQoYXJnc1NlbGVjdGlvbiwgW2FyZ3Mub2xkU2VsZWN0aW9uXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGFyZ3MubmV3U2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlucHV0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVEaXNwbGF5VGV4dChuZXdTZWxlY3Rpb246IGFueVtdLCBvbGRTZWxlY3Rpb246IGFueVtdKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVtb3RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSZW1vdGVTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUtleSAhPT0gbnVsbCAmJiB0aGlzLmRpc3BsYXlLZXkgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgJiYgbmV3U2VsZWN0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhuZXdTZWxlY3Rpb24pLm1hcChlID0+IGVbdGhpcy5kaXNwbGF5S2V5XSlbMF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3U2VsZWN0aW9uWzBdIHx8ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTZWxlY3Rpb24oaWdub3JlRmlsdGVyPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldF9lbXB0eSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoICE9PSB0aGlzLmRhdGEubGVuZ3RoICYmICFpZ25vcmVGaWx0ZXIpIHtcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZWxldGVfaXRlbXModGhpcy5pZCwgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldF9hbGxfaWRzKHRoaXMuZmlsdGVyZWREYXRhLCB0aGlzLnZhbHVlS2V5KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyT25CbHVyKCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyZWREYXRhLmZpbmQodGhpcy5maW5kTWF0Y2gpO1xuICAgICAgICBpZiAoKGZpbHRlcmVkID09PSB1bmRlZmluZWQgfHwgZmlsdGVyZWQgPT09IG51bGwpKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbSWd4U2ltcGxlQ29tYm9Db21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgSWd4Q29tYm9Nb2R1bGUsIElneFJpcHBsZU1vZHVsZSwgQ29tbW9uTW9kdWxlLFxuICAgICAgICBJZ3hJbnB1dEdyb3VwTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgSWd4Rm9yT2ZNb2R1bGUsIElneFRvZ2dsZU1vZHVsZSwgSWd4Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIElneERyb3BEb3duTW9kdWxlLCBJZ3hCdXR0b25Nb2R1bGUsIElneEljb25Nb2R1bGUsXG4gICAgICAgIElneFRleHRTZWxlY3Rpb25Nb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtJZ3hTaW1wbGVDb21ib0NvbXBvbmVudCwgSWd4Q29tYm9Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIElneFNpbXBsZUNvbWJvTW9kdWxlIHsgfVxuIl19
|
|
393
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWNvbWJvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zaW1wbGUtY29tYm8vc2ltcGxlLWNvbWJvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNZLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUNyRyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQ3hDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUF3RSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7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QyxpQkFBaUI7WUFhM0Isc0JBQXNCO1lBSnRCLGtCQUFrQjtZQVlILGNBQWM7WUFQeUMsWUFBWTs0Q0EyRmxGLFFBQVEsWUFBSSxNQUFNLFNBQUMsbUJBQW1COzRDQUN0QyxRQUFRLFlBQUksTUFBTSxTQUFDLG9CQUFvQjtZQTFHaUQsUUFBUSx1QkEyR2hHLFFBQVE7Ozt1QkEzQ1osU0FBUyxTQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtzQkFJckQsU0FBUyxTQUFDLHdCQUF3QjtnQ0FVbEMsTUFBTTs0QkFHTixTQUFTLFNBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzBCQWlDckQsWUFBWSxTQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQzVDLFlBQVksU0FBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFtVHJELE1BQU0sT0FBTyxvQkFBb0I7OztZQVhoQyxRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3ZDLE9BQU8sRUFBRTtvQkFDTCxjQUFjLEVBQUUsZUFBZSxFQUFFLFlBQVk7b0JBQzdDLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxtQkFBbUI7b0JBQ3JELGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCO29CQUNsRCxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsYUFBYTtvQkFDakQsc0JBQXNCO2lCQUN6QjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxjQUFjLENBQUM7YUFDckQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbmplY3RvcixcbiAgICBOZ01vZHVsZSwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElneENoZWNrYm94TW9kdWxlIH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvQWRkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbWJvL2NvbWJvLWFkZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm8vY29tYm8tZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbWJvL2NvbWJvLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvQVBJU2VydmljZSB9IGZyb20gJy4uL2NvbWJvL2NvbWJvLmFwaSc7XG5pbXBvcnQgeyBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUsIElHWF9DT01CT19DT01QT05FTlQgfSBmcm9tICcuLi9jb21iby9jb21iby5jb21tb24nO1xuaW1wb3J0IHsgSWd4Q29tYm9Nb2R1bGUgfSBmcm9tICcuLi9jb21iby9jb21iby5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHlUb2tlbiwgSURpc3BsYXlEZW5zaXR5T3B0aW9ucyB9IGZyb20gJy4uL2NvcmUvZGlzcGxheURlbnNpdHknO1xuaW1wb3J0IHsgSWd4U2VsZWN0aW9uQVBJU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VsZWN0aW9uJztcbmltcG9ydCB7IENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzLCBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4Rm9yT2ZNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2YuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFJpcHBsZU1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4VGV4dFNlbGVjdGlvbkRpcmVjdGl2ZSwgSWd4VGV4dFNlbGVjdGlvbk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdGV4dC1zZWxlY3Rpb24vdGV4dC1zZWxlY3Rpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvZ2dsZU1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25Nb2R1bGUgfSBmcm9tICcuLi9kcm9wLWRvd24vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hJY29uTW9kdWxlLCBJZ3hJY29uU2VydmljZSB9IGZyb20gJy4uL2ljb24vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwTW9kdWxlLCBJZ3hJbnB1dEdyb3VwVHlwZSwgSUdYX0lOUFVUX0dST1VQX1RZUEUgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9wdWJsaWNfYXBpJztcblxuLyoqIEVtaXR0ZWQgd2hlbiBhbiBpZ3gtc2ltcGxlLWNvbWJvJ3Mgc2VsZWN0aW9uIGlzIGNoYW5naW5nLiAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNpbXBsZUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIEFuIG9iamVjdCB3aGljaCByZXByZXNlbnRzIHRoZSB2YWx1ZSB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZCAqL1xuICAgIG9sZFNlbGVjdGlvbjogYW55O1xuICAgIC8qKiBBbiBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHNlbGVjdGVkIGFmdGVyIHRoaXMgZXZlbnQgKi9cbiAgICBuZXdTZWxlY3Rpb246IGFueTtcbiAgICAvKiogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgY29tYm8gdGV4dCBib3ggKi9cbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBkcm9wLWRvd24gbGlzdCB0aGF0IHByb3ZpZGVzIGZpbHRlcmluZyBmdW5jdGlvbmFsaXR5LCBhbGxvd2luZyB1c2VycyB0byBjaG9vc2UgYSBzaW5nbGUgb3B0aW9uIGZyb20gYSBwcmVkZWZpbmVkIGxpc3QuXG4gKlxuICogQGlneE1vZHVsZSBJZ3hTaW1wbGVDb21ib01vZHVsZVxuICogQGlneFRoZW1lIGlneC1jb21iby10aGVtZVxuICogQGlneEtleXdvcmRzIGNvbWJvYm94LCBzaW5nbGUgY29tYm8gc2VsZWN0aW9uXG4gKiBAaWd4R3JvdXAgR3JpZHMgJiBMaXN0c1xuICpcbiAqIEByZW1hcmtzXG4gKiBJdCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBmaWx0ZXIgaXRlbXMgYXMgd2VsbCBhcyBwZXJmb3JtIHNpbmdsZSBzZWxlY3Rpb24gb24gdGhlIHByb3ZpZGVkIGRhdGEuXG4gKiBBZGRpdGlvbmFsbHksIGl0IGV4cG9zZXMga2V5Ym9hcmQgbmF2aWdhdGlvbiBhbmQgY3VzdG9tIHN0eWxpbmcgY2FwYWJpbGl0aWVzLlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtc2ltcGxlLWNvbWJvIFtpdGVtc01heEhlaWdodF09XCIyNTBcIiBbZGF0YV09XCJsb2NhdGlvbkRhdGFcIlxuICogIFtkaXNwbGF5S2V5XT1cIidmaWVsZCdcIiBbdmFsdWVLZXldPVwiJ2ZpZWxkJ1wiXG4gKiAgcGxhY2Vob2xkZXI9XCJMb2NhdGlvblwiIHNlYXJjaFBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCI+XG4gKiA8L2lneC1zaW1wbGUtY29tYm8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtc2ltcGxlLWNvbWJvJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3NpbXBsZS1jb21iby5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBJR1hfQ09NQk9fQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogSWd4U2ltcGxlQ29tYm9Db21wb25lbnQgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElneFNpbXBsZUNvbWJvQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTaW1wbGVDb21ib0NvbXBvbmVudCBleHRlbmRzIElneENvbWJvQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKElneENvbWJvRHJvcERvd25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGRyb3Bkb3duOiBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQpXG4gICAgcHVibGljIGFkZEl0ZW06IElneENvbWJvQWRkSXRlbUNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBpdGVtIHNlbGVjdGlvbiBpcyBjaGFuZ2luZywgYmVmb3JlIHRoZSBzZWxlY3Rpb24gY29tcGxldGVzXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zaW1wbGUtY29tYm8gKHNlbGVjdGlvbkNoYW5naW5nKT0naGFuZGxlU2VsZWN0aW9uKCknPjwvaWd4LXNpbXBsZS1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElTaW1wbGVDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgQFZpZXdDaGlsZChJZ3hUZXh0U2VsZWN0aW9uRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgdGV4dFNlbGVjdGlvbjogSWd4VGV4dFNlbGVjdGlvbkRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBjb21wb3NpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX3VwZGF0ZUlucHV0ID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyZWREYXRhKCk6IGFueVtdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZERhdGE7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXQgZmlsdGVyZWREYXRhKHZhbDogYW55W10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkRGF0YSA9IHRoaXMuZ3JvdXBLZXkgPyAodmFsIHx8IFtdKS5maWx0ZXIoKGUpID0+IGUuaXNIZWFkZXIgIT09IHRydWUpIDogdmFsO1xuICAgICAgICB0aGlzLmNoZWNrTWF0Y2goKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgY29tYm9BUEk6IElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF9pY29uU2VydmljZTogSWd4SWNvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcGxhdGZvcm1VdGlsOiBQbGF0Zm9ybVV0aWwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRGlzcGxheURlbnNpdHlUb2tlbikgcHJvdGVjdGVkIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUdYX0lOUFVUX0dST1VQX1RZUEUpIHByb3RlY3RlZCBfaW5wdXRHcm91cFR5cGU6IElneElucHV0R3JvdXBUeXBlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIsIHNlbGVjdGlvblNlcnZpY2UsIGNvbWJvQVBJLFxuICAgICAgICAgICAgX2ljb25TZXJ2aWNlLCBfZGlzcGxheURlbnNpdHlPcHRpb25zLCBfaW5wdXRHcm91cFR5cGUsIF9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tYm9BUEkucmVnaXN0ZXIodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQXJyb3dEb3duKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlydERpci5pZ3hGb3JPZi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5uYXZpZ2F0ZUZpcnN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWxsb3dDdXN0b21WYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYSBkZWZpbmVkIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIGJlIHNlbGVjdGVkXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uc2VsZWN0KFwiTmV3IFlvcmtcIik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdChpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuYWRkX2l0ZW1zKHRoaXMuaWQsIGl0ZW0gaW5zdGFuY2VvZiBBcnJheSA/IGl0ZW0gOiBbaXRlbV0sIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbVxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW1zIHRvIGJlIGRlc2VsZWN0ZWRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5kZXNlbGVjdChcIk5ldyBZb3JrXCIpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgdmFsdWUgPyBbdmFsdWVdIDogW10sIHRydWUpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KHRoaXMuc2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMudmlydERpci5jb250ZW50U2l6ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZpcnREaXIuaWd4Rm9yT2YuZmluZEluZGV4KGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IGVbdGhpcy52YWx1ZUtleV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlS2V5ID09PSBudWxsIHx8IHRoaXMudmFsdWVLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgPT09IHRoaXMuc2VsZWN0aW9uWzBdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ubmF2aWdhdGVJdGVtKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd24ub3BlbmVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0RWRpdEVsZW1lbnQoKSAmJiAhYXJncy5ldmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyT25CbHVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUlucHV0Q2hhbmdlKGV2ZW50PzogYW55KSB7XG4gICAgICAgIGlmIChldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gdHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50IDogZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5zZWFyY2hWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmNvbWJvSW5wdXQuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm5hdmlnYXRlRmlyc3QoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29tYm9JbnB1dC52YWx1ZS50cmltKCkpIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBjbGVhcmluZyBvZiBpbnB1dCBieSBzcGFjZVxuICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5oYW5kbGVJbnB1dENoYW5nZShldmVudCk7XG4gICAgICAgIHRoaXMuY29tcG9zaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuRU5URVIpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZCh0aGlzLmZpbmRNYXRjaCk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyZWQgPT09IG51bGwgfHwgZmlsdGVyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0uaXRlbUlEKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIC8vIG1hbnVhbGx5IHRyaWdnZXIgdGV4dCBzZWxlY3Rpb24gYXMgaXQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIGR1cmluZyBlZGl0aW5nXG4gICAgICAgICAgICB0aGlzLnRleHRTZWxlY3Rpb24udHJpZ2dlcigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5CQUNLU1BBQ0VcbiAgICAgICAgICAgIHx8IGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLkRFTEVURSkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29sbGFwc2VkICYmIGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLlRBQikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5jbGVhck9uQmx1cigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9zaW5nID0gZmFsc2U7XG4gICAgICAgIHN1cGVyLmhhbmRsZUtleURvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSB0aGlzLnBsYXRmb3JtVXRpbC5LRVlNQVAuQVJST1dfRE9XTikge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RJdGVtID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmZpcnN0X2l0ZW0odGhpcy5pZCk7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtID0gZmlyc3RJdGVtICYmIHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IHRoaXMuZHJvcGRvd24uaXRlbXMuZmluZChpID0+IGkuaXRlbUlEID09PSBmaXJzdEl0ZW0pXG4gICAgICAgICAgICAgICAgOiB0aGlzLmRyb3Bkb3duLml0ZW1zWzBdO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlSXRlbUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLkFSUk9XX1VQICYmIGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybVV0aWwuS0VZTUFQLkVOVEVSKSB7XG4gICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVJdGVtQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5jb21ib0lucHV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG9uQmx1cigpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyT25CbHVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIub25CbHVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldEVkaXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbGVhcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKHRydWUpO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5uYXZpZ2F0ZUZpcnN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5jb21ib0lucHV0LnZhbHVlID0gdGhpcy5maWx0ZXJWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy5kcm9wZG93bi5mb2N1c2VkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuY29tcG9zaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29tYm9JbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVPcGVuZWQoKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlckNoZWNrKCk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KHsgb3duZXI6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUNsb3NpbmcoZTogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncykge1xuICAgICAgICBjb25zdCBhcmdzOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzID0geyBvd25lcjogdGhpcywgZXZlbnQ6IGUuZXZlbnQsIGNhbmNlbDogZS5jYW5jZWwgfTtcbiAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGUuY2FuY2VsID0gYXJncy5jYW5jZWw7XG4gICAgICAgIGlmIChlLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gZXhwbGljaXRseSB1cGRhdGUgc2VsZWN0aW9uIGFuZCB0cmlnZ2VyIHRleHQgc2VsZWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBmb3JjZSBDRFxuICAgICAgICB0aGlzLnRleHRTZWxlY3Rpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRleHRTZWxlY3Rpb24udHJpZ2dlcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBmb2N1c1NlYXJjaElucHV0KG9wZW5pbmc/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChvcGVuaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHN1cGVyLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5jb21ib0lucHV0LnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy52aXJ0RGlyLnNjcm9sbFRvKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbmRNYXRjaCA9IChlbGVtZW50OiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRpc3BsYXlLZXkgPyBlbGVtZW50W3RoaXMuZGlzcGxheUtleV0gOiBlbGVtZW50O1xuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbkFzQXJyYXkgPSBuZXdTZWxlY3Rpb24gPyBBcnJheS5mcm9tKG5ld1NlbGVjdGlvbikgYXMgSWd4Q29tYm9JdGVtQ29tcG9uZW50W10gOiBbXTtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uQXNBcnJheSA9IEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKSB8fCBbXSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dChuZXdTZWxlY3Rpb25Bc0FycmF5LCBvbGRTZWxlY3Rpb25Bc0FycmF5KTtcbiAgICAgICAgY29uc3QgYXJnczogSVNpbXBsZUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb246IG5ld1NlbGVjdGlvbkFzQXJyYXlbMF0sXG4gICAgICAgICAgICBvbGRTZWxlY3Rpb246IG9sZFNlbGVjdGlvbkFzQXJyYXlbMF0sXG4gICAgICAgICAgICBkaXNwbGF5VGV4dCxcbiAgICAgICAgICAgIG93bmVyOiB0aGlzLFxuICAgICAgICAgICAgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIGxldCBhcmdzU2VsZWN0aW9uID0gYXJncy5uZXdTZWxlY3Rpb24gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICYmIGFyZ3MubmV3U2VsZWN0aW9uICE9PSBudWxsXG4gICAgICAgICAgICAgICAgPyBhcmdzLm5ld1NlbGVjdGlvblxuICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICBhcmdzU2VsZWN0aW9uID0gQXJyYXkuaXNBcnJheShhcmdzU2VsZWN0aW9uKSA/IGFyZ3NTZWxlY3Rpb24gOiBbYXJnc1NlbGVjdGlvbl07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIGFyZ3NTZWxlY3Rpb24sIHRydWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUlucHV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0LnZhbHVlID0gdGhpcy5fdmFsdWUgPSBkaXNwbGF5VGV4dCAhPT0gYXJncy5kaXNwbGF5VGV4dFxuICAgICAgICAgICAgICAgICAgICA/IGFyZ3MuZGlzcGxheVRleHRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KGFyZ3NTZWxlY3Rpb24sIFthcmdzLm9sZFNlbGVjdGlvbl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhhcmdzLm5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVJbnB1dCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uOiBhbnlbXSwgb2xkU2VsZWN0aW9uOiBhbnlbXSkge1xuICAgICAgICBpZiAodGhpcy5pc1JlbW90ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVtb3RlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgb2xkU2VsZWN0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlLZXkgIT09IG51bGwgJiYgdGhpcy5kaXNwbGF5S2V5ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICYmIG5ld1NlbGVjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMobmV3U2VsZWN0aW9uKS5tYXAoZSA9PiBlW3RoaXMuZGlzcGxheUtleV0pWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld1NlbGVjdGlvblswXSB8fCAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyU2VsZWN0aW9uKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfZW1wdHkoKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCAhPT0gdGhpcy5kYXRhLmxlbmd0aCAmJiAhaWdub3JlRmlsdGVyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlX2l0ZW1zKHRoaXMuaWQsIHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyh0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhck9uQmx1cigpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLmZpbHRlcmVkRGF0YS5maW5kKHRoaXMuZmluZE1hdGNoKTtcbiAgICAgICAgaWYgKChmaWx0ZXJlZCA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcmVkID09PSBudWxsKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneFNpbXBsZUNvbWJvQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIElneENvbWJvTW9kdWxlLCBJZ3hSaXBwbGVNb2R1bGUsIENvbW1vbk1vZHVsZSxcbiAgICAgICAgSWd4SW5wdXRHcm91cE1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIElneEZvck9mTW9kdWxlLCBJZ3hUb2dnbGVNb2R1bGUsIElneENoZWNrYm94TW9kdWxlLFxuICAgICAgICBJZ3hEcm9wRG93bk1vZHVsZSwgSWd4QnV0dG9uTW9kdWxlLCBJZ3hJY29uTW9kdWxlLFxuICAgICAgICBJZ3hUZXh0U2VsZWN0aW9uTW9kdWxlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbSWd4U2ltcGxlQ29tYm9Db21wb25lbnQsIElneENvbWJvTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTaW1wbGVDb21ib01vZHVsZSB7IH1cbiJdfQ==
|