@fundamental-ngx/core 0.33.3 → 0.33.4-rc.0
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/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/upload-collection/upload-collection-item.directive.mjs +81 -8
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/esm2020/upload-collection-item.directive.mjs +81 -8
- package/upload-collection/fesm2015/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/upload-collection/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/upload-collection/fesm2020/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/upload-collection/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/upload-collection/package.json +1 -1
- package/upload-collection/upload-collection-item.directive.d.ts +32 -2
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
package/mobile-mode/package.json
CHANGED
package/multi-input/package.json
CHANGED
package/nested-list/package.json
CHANGED
package/package.json
CHANGED
package/pagination/package.json
CHANGED
package/panel/package.json
CHANGED
package/popover/package.json
CHANGED
package/quick-view/package.json
CHANGED
package/radio/package.json
CHANGED
package/scroll-spy/package.json
CHANGED
package/scrollbar/package.json
CHANGED
package/select/package.json
CHANGED
package/shared/package.json
CHANGED
package/shellbar/package.json
CHANGED
package/slider/package.json
CHANGED
package/splitter/package.json
CHANGED
package/step-input/package.json
CHANGED
package/switch/package.json
CHANGED
package/table/package.json
CHANGED
package/tabs/package.json
CHANGED
package/text/package.json
CHANGED
package/tile/package.json
CHANGED
package/time/package.json
CHANGED
package/time-picker/package.json
CHANGED
package/timeline/package.json
CHANGED
package/title/package.json
CHANGED
package/token/package.json
CHANGED
package/toolbar/package.json
CHANGED
package/tree/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { ContentChild, Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
1
|
+
import { ContentChild, Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
2
2
|
import { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';
|
|
3
3
|
import { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';
|
|
4
4
|
import { Subscription } from 'rxjs';
|
|
5
5
|
import { UploadCollectionTitleContainerDirective, UploadCollectionTitleDirective } from './upload-collection-simple.directives';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class UploadCollectionItemDirective {
|
|
8
|
-
constructor() {
|
|
8
|
+
constructor(elementRef) {
|
|
9
|
+
this.elementRef = elementRef;
|
|
9
10
|
/** Event emitted when the user changes a file name. */
|
|
10
11
|
this.fileNameChanged = new EventEmitter();
|
|
11
12
|
/** Event emitted when presses the delete button. */
|
|
@@ -15,23 +16,52 @@ export class UploadCollectionItemDirective {
|
|
|
15
16
|
}
|
|
16
17
|
/** @hidden */
|
|
17
18
|
ngAfterContentInit() {
|
|
18
|
-
this.
|
|
19
|
+
this.fileNameFull = this.fileName + '.' + this.extension;
|
|
20
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
19
21
|
this._handleDeleteClickedSubscription();
|
|
20
22
|
this._handleOkClickedSubscription();
|
|
21
23
|
this._handleEditClickedSubscription();
|
|
22
24
|
this._handleFormItemInputChangedSubscription();
|
|
23
25
|
}
|
|
24
26
|
/** @hidden */
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
this.onResize();
|
|
29
|
+
}
|
|
30
|
+
/** @hidden */
|
|
25
31
|
ngOnDestroy() {
|
|
26
32
|
this._subscriptions.unsubscribe();
|
|
27
33
|
}
|
|
28
34
|
/** @hidden */
|
|
35
|
+
onResize() {
|
|
36
|
+
if (!this.elementRef.nativeElement.parentElement) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.titleWidth = this.getTitleWidth();
|
|
40
|
+
this.containerWidth = this.getContainerWidth();
|
|
41
|
+
// if first load and no previous container width, or if container boundary is resized to smaller than before
|
|
42
|
+
if (!this.previousContainerWidth || this.containerWidth < this.previousContainerWidth) {
|
|
43
|
+
// and the title extends past the container, 1.05x padding to prevent jaggy resizing.
|
|
44
|
+
if (this.titleWidth * 1.05 >= this.containerWidth) {
|
|
45
|
+
this.resizeFileTitle(this._titleDirective.elRef.nativeElement.innerHTML);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (this.previousContainerWidth && this.containerWidth > this.previousContainerWidth) {
|
|
49
|
+
// Looks to expand file title if container width is resized to greater than before
|
|
50
|
+
// reset file title to initial
|
|
51
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
52
|
+
this.resizeFileTitle(this.fileNameFull);
|
|
53
|
+
}
|
|
54
|
+
this.previousContainerWidth = this.containerWidth;
|
|
55
|
+
}
|
|
56
|
+
/** @hidden */
|
|
29
57
|
_handleOkClickedSubscription() {
|
|
30
58
|
this._subscriptions.add(this._buttonGroupComponent.okClicked.subscribe(() => {
|
|
31
59
|
if (this._formItemComponent.fileName && this._formItemComponent.fileName !== '') {
|
|
32
60
|
this.fileName = this._formItemComponent.fileName;
|
|
33
61
|
this._titleDirective.elRef.nativeElement.style.display = 'inline-block';
|
|
34
|
-
this.
|
|
62
|
+
this.fileNameFull = this.fileName + '.' + this.extension;
|
|
63
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
64
|
+
this.resizeFileTitle(this.fileNameFull);
|
|
35
65
|
this._formItemComponent._editMode = false;
|
|
36
66
|
this._buttonGroupComponent._editMode = false;
|
|
37
67
|
this.fileNameChanged.emit(this);
|
|
@@ -72,9 +102,49 @@ export class UploadCollectionItemDirective {
|
|
|
72
102
|
this._buttonGroupComponent._okButton.buildComponentCssClass();
|
|
73
103
|
}));
|
|
74
104
|
}
|
|
105
|
+
/** @hidden */
|
|
106
|
+
getTitleWidth() {
|
|
107
|
+
return this._titleDirective.elRef.nativeElement.getBoundingClientRect().width;
|
|
108
|
+
}
|
|
109
|
+
/** @hidden */
|
|
110
|
+
getContainerWidth() {
|
|
111
|
+
return this._titleDirective.elRef.nativeElement.parentElement.getBoundingClientRect().width;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* @hidden
|
|
115
|
+
*
|
|
116
|
+
* truncates the string by cutting out excess length in the middle and replacing with '...'
|
|
117
|
+
*/
|
|
118
|
+
truncateTitle(str) {
|
|
119
|
+
const cutLength = Math.floor(str.length * 0.8);
|
|
120
|
+
if (str.length > cutLength) {
|
|
121
|
+
const stringLeftIndex = Math.floor(cutLength / 2);
|
|
122
|
+
const stringRightIndex = str.length - stringLeftIndex + 3;
|
|
123
|
+
return str.substring(0, stringLeftIndex) + '... ' + str.substring(stringRightIndex, str.length);
|
|
124
|
+
}
|
|
125
|
+
return str;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @hidden
|
|
129
|
+
*
|
|
130
|
+
* determines if file title needs to be truncated given container constraint.
|
|
131
|
+
*/
|
|
132
|
+
resizeFileTitle(titleStr) {
|
|
133
|
+
let curTitle = titleStr;
|
|
134
|
+
this.containerWidth = this.getContainerWidth();
|
|
135
|
+
this.titleWidth = this.getTitleWidth();
|
|
136
|
+
// repeatedly truncate the title until it fits inside container
|
|
137
|
+
while (this.titleWidth * 1.05 >= this.containerWidth) {
|
|
138
|
+
const truncatedTitleStr = this.truncateTitle(curTitle);
|
|
139
|
+
this._titleDirective.elRef.nativeElement.innerHTML = truncatedTitleStr;
|
|
140
|
+
curTitle = truncatedTitleStr;
|
|
141
|
+
this.titleWidth = this.getTitleWidth();
|
|
142
|
+
this.containerWidth = this.getContainerWidth();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
75
145
|
}
|
|
76
|
-
UploadCollectionItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
77
|
-
UploadCollectionItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.2", type: UploadCollectionItemDirective, selector: "[fd-upload-collection-item]", inputs: { fileName: "fileName", extension: "extension" }, outputs: { fileNameChanged: "fileNameChanged", deleteClicked: "deleteClicked" }, host: { classAttribute: "fd-upload-collection__item" }, queries: [{ propertyName: "_formItemComponent", first: true, predicate: UploadCollectionFormItemComponent, descendants: true }, { propertyName: "_titleDirective", first: true, predicate: UploadCollectionTitleDirective, descendants: true }, { propertyName: "_buttonGroupComponent", first: true, predicate: UploadCollectionButtonGroupComponent, descendants: true }, { propertyName: "_titleContainerDirective", first: true, predicate: UploadCollectionTitleContainerDirective, descendants: true }], ngImport: i0 });
|
|
146
|
+
UploadCollectionItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
147
|
+
UploadCollectionItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.2", type: UploadCollectionItemDirective, selector: "[fd-upload-collection-item]", inputs: { fileName: "fileName", extension: "extension" }, outputs: { fileNameChanged: "fileNameChanged", deleteClicked: "deleteClicked" }, host: { listeners: { "window:resize": "onResize()" }, classAttribute: "fd-upload-collection__item" }, queries: [{ propertyName: "_formItemComponent", first: true, predicate: UploadCollectionFormItemComponent, descendants: true }, { propertyName: "_titleDirective", first: true, predicate: UploadCollectionTitleDirective, descendants: true }, { propertyName: "_buttonGroupComponent", first: true, predicate: UploadCollectionButtonGroupComponent, descendants: true }, { propertyName: "_titleContainerDirective", first: true, predicate: UploadCollectionTitleContainerDirective, descendants: true }], ngImport: i0 });
|
|
78
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, decorators: [{
|
|
79
149
|
type: Directive,
|
|
80
150
|
args: [{
|
|
@@ -82,7 +152,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
82
152
|
selector: '[fd-upload-collection-item]',
|
|
83
153
|
host: { class: 'fd-upload-collection__item' }
|
|
84
154
|
}]
|
|
85
|
-
}], propDecorators: { fileName: [{
|
|
155
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fileName: [{
|
|
86
156
|
type: Input
|
|
87
157
|
}], extension: [{
|
|
88
158
|
type: Input
|
|
@@ -102,5 +172,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
102
172
|
type: Output
|
|
103
173
|
}], deleteClicked: [{
|
|
104
174
|
type: Output
|
|
175
|
+
}], onResize: [{
|
|
176
|
+
type: HostListener,
|
|
177
|
+
args: ['window:resize', []]
|
|
105
178
|
}] } });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWNvbGxlY3Rpb24taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDeEgsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDakksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQ0gsdUNBQXVDLEVBQ3ZDLDhCQUE4QixFQUNqQyxNQUFNLHVDQUF1QyxDQUFDOztBQU8vQyxNQUFNLE9BQU8sNkJBQTZCO0lBTDFDO1FBOEJJLHVEQUF1RDtRQUU5QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbkQsb0RBQW9EO1FBRTNDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVqRCxjQUFjO1FBQ04sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBMEUvQztJQXhFRyxjQUFjO0lBQ2Qsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzFGLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyx1Q0FB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QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ04sdUNBQXVDO1FBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzswSEEzR1EsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsc1RBVXhCLGlDQUFpQyxrRkFJakMsOEJBQThCLHdGQUk5QixvQ0FBb0MsMkZBSXBDLHVDQUF1QzsyRkF0QjVDLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSw0QkFBNEIsRUFBRTtpQkFDaEQ7OEJBSUcsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsaUNBQWlDO2dCQUsvQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsOEJBQThCO2dCQUs1QyxxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsb0NBQW9DO2dCQUtsRCx3QkFBd0I7c0JBRHZCLFlBQVk7dUJBQUMsdUNBQXVDO2dCQUs1QyxlQUFlO3NCQUR2QixNQUFNO2dCQUtFLGFBQWE7c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwbG9hZENvbGxlY3Rpb25Gb3JtSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLWNvbGxlY3Rpb24tZm9ybS1pdGVtL3VwbG9hZC1jb2xsZWN0aW9uLWZvcm0taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkQ29sbGVjdGlvbkJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQtY29sbGVjdGlvbi1idXR0b24tZ3JvdXAvdXBsb2FkLWNvbGxlY3Rpb24tYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgVXBsb2FkQ29sbGVjdGlvblRpdGxlQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIFVwbG9hZENvbGxlY3Rpb25UaXRsZURpcmVjdGl2ZVxufSBmcm9tICcuL3VwbG9hZC1jb2xsZWN0aW9uLXNpbXBsZS5kaXJlY3RpdmVzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZC11cGxvYWQtY29sbGVjdGlvbi1pdGVtXScsXG4gICAgaG9zdDogeyBjbGFzczogJ2ZkLXVwbG9hZC1jb2xsZWN0aW9uX19pdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbGxlY3Rpb25JdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIGZpbGUsIG5vdCBpbmNsdWRpbmcgdGhlIHR5cGUgZXh0ZW5zaW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsZU5hbWU6IHN0cmluZztcblxuICAgIC8qKiBUaGUgZmlsZSB0eXBlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGV4dGVuc2lvbjogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFVwbG9hZENvbGxlY3Rpb25Gb3JtSXRlbUNvbXBvbmVudClcbiAgICBfZm9ybUl0ZW1Db21wb25lbnQ6IFVwbG9hZENvbGxlY3Rpb25Gb3JtSXRlbUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChVcGxvYWRDb2xsZWN0aW9uVGl0bGVEaXJlY3RpdmUpXG4gICAgX3RpdGxlRGlyZWN0aXZlOiBVcGxvYWRDb2xsZWN0aW9uVGl0bGVEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVXBsb2FkQ29sbGVjdGlvbkJ1dHRvbkdyb3VwQ29tcG9uZW50KVxuICAgIF9idXR0b25Hcm91cENvbXBvbmVudDogVXBsb2FkQ29sbGVjdGlvbkJ1dHRvbkdyb3VwQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFVwbG9hZENvbGxlY3Rpb25UaXRsZUNvbnRhaW5lckRpcmVjdGl2ZSlcbiAgICBfdGl0bGVDb250YWluZXJEaXJlY3RpdmU6IFVwbG9hZENvbGxlY3Rpb25UaXRsZUNvbnRhaW5lckRpcmVjdGl2ZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2hhbmdlcyBhIGZpbGUgbmFtZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBmaWxlTmFtZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gcHJlc3NlcyB0aGUgZGVsZXRlIGJ1dHRvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBkZWxldGVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLmZpbGVOYW1lICsgJy4nICsgdGhpcy5leHRlbnNpb247XG4gICAgICAgIHRoaXMuX2hhbmRsZURlbGV0ZUNsaWNrZWRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5faGFuZGxlT2tDbGlja2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUVkaXRDbGlja2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUZvcm1JdGVtSW5wdXRDaGFuZ2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlT2tDbGlja2VkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Lm9rQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSAmJiB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50LmZpbGVOYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLmZpbGVOYW1lICsgJy4nICsgdGhpcy5leHRlbnNpb247XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50Ll9lZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25Hcm91cENvbXBvbmVudC5fZWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZUNoYW5nZWQuZW1pdCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlRWRpdENsaWNrZWRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fYnV0dG9uR3JvdXBDb21wb25lbnQuZWRpdENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50Ll9lZGl0TW9kZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90aXRsZUNvbnRhaW5lckRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aXRsZUNvbnRhaW5lckRpcmVjdGl2ZS5hcHBseUNvbnRhaW5lckNsYXNzID0gIWV2ZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBzdHlsZXMucHVzaCh0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90aXRsZUNvbnRhaW5lckRpcmVjdGl2ZT8uX29iamVjdE1hcmtlckNvbXBvbmVudHM/LmZvckVhY2goKG9iamVjdE1hcmtlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZXMucHVzaChvYmplY3RNYXJrZXIuZWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgID8gc3R5bGVzLmZvckVhY2goKHN0eWxlKSA9PiAoc3R5bGUuZGlzcGxheSA9ICdub25lJykpXG4gICAgICAgICAgICAgICAgICAgIDogc3R5bGVzLmZvckVhY2goKHN0eWxlKSA9PiAoc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snKSk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50Ll9leHRlbnNpb24gPSB0aGlzLmV4dGVuc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuZmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVEZWxldGVDbGlja2VkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50LmRlbGV0ZUNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUNsaWNrZWQuZW1pdCh0aGlzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVGb3JtSXRlbUlucHV0Q2hhbmdlZFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZUNoYW5nZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Ll9va0J1dHRvbi5kaXNhYmxlZCA9IGV2ZW50ID09PSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25Hcm91cENvbXBvbmVudC5fb2tCdXR0b24uYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWNvbGxlY3Rpb24taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNILHVDQUF1QyxFQUN2Qyw4QkFBOEIsRUFDakMsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLDZCQUE2QjtJQW9FdEMsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQTNDekMsdURBQXVEO1FBRTlDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVuRCxvREFBb0Q7UUFFM0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWpELGNBQWM7UUFDTixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFrQ0EsQ0FBQztJQXBCN0MsY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkUsSUFB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QUN2QyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsNEJBQTRCLEVBQUU7aUJBQ2hEO2lHQUlHLFFBQVE7c0JBRFAsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGlDQUFpQztnQkFLL0MsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLDhCQUE4QjtnQkFLNUMscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLG9DQUFvQztnQkFLbEQsd0JBQXdCO3NCQUR2QixZQUFZO3VCQUFDLHVDQUF1QztnQkFLNUMsZUFBZTtzQkFEdkIsTUFBTTtnQkFLRSxhQUFhO3NCQURyQixNQUFNO2dCQTBDUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXBsb2FkQ29sbGVjdGlvbkZvcm1JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQtY29sbGVjdGlvbi1mb3JtLWl0ZW0vdXBsb2FkLWNvbGxlY3Rpb24tZm9ybS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVcGxvYWRDb2xsZWN0aW9uQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3VwbG9hZC1jb2xsZWN0aW9uLWJ1dHRvbi1ncm91cC91cGxvYWQtY29sbGVjdGlvbi1idXR0b24tZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBVcGxvYWRDb2xsZWN0aW9uVGl0bGVDb250YWluZXJEaXJlY3RpdmUsXG4gICAgVXBsb2FkQ29sbGVjdGlvblRpdGxlRGlyZWN0aXZlXG59IGZyb20gJy4vdXBsb2FkLWNvbGxlY3Rpb24tc2ltcGxlLmRpcmVjdGl2ZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkLXVwbG9hZC1jb2xsZWN0aW9uLWl0ZW1dJyxcbiAgICBob3N0OiB7IGNsYXNzOiAnZmQtdXBsb2FkLWNvbGxlY3Rpb25fX2l0ZW0nIH1cbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkQ29sbGVjdGlvbkl0ZW1EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSwgbm90IGluY2x1ZGluZyB0aGUgdHlwZSBleHRlbnNpb24uICovXG4gICAgQElucHV0KClcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBmaWxlIHR5cGUgZXh0ZW5zaW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVXBsb2FkQ29sbGVjdGlvbkZvcm1JdGVtQ29tcG9uZW50KVxuICAgIF9mb3JtSXRlbUNvbXBvbmVudDogVXBsb2FkQ29sbGVjdGlvbkZvcm1JdGVtQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFVwbG9hZENvbGxlY3Rpb25UaXRsZURpcmVjdGl2ZSlcbiAgICBfdGl0bGVEaXJlY3RpdmU6IFVwbG9hZENvbGxlY3Rpb25UaXRsZURpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChVcGxvYWRDb2xsZWN0aW9uQnV0dG9uR3JvdXBDb21wb25lbnQpXG4gICAgX2J1dHRvbkdyb3VwQ29tcG9uZW50OiBVcGxvYWRDb2xsZWN0aW9uQnV0dG9uR3JvdXBDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVXBsb2FkQ29sbGVjdGlvblRpdGxlQ29udGFpbmVyRGlyZWN0aXZlKVxuICAgIF90aXRsZUNvbnRhaW5lckRpcmVjdGl2ZTogVXBsb2FkQ29sbGVjdGlvblRpdGxlQ29udGFpbmVyRGlyZWN0aXZlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIGEgZmlsZSBuYW1lLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGZpbGVOYW1lQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBwcmVzc2VzIHRoZSBkZWxldGUgYnV0dG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGRlbGV0ZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZmlsZU5hbWVGdWxsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRpdGxlV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIHVzZWQgdG8gY29tcGFyZSB0byB0aGUgY3VycmVudCB3aWR0aCB0byBrbm93IHdoZXRoZXIgdG8gY29sbGFwc2Ugb3IgZXhwYW5kIHRpdGxlICovXG4gICAgcHJldmlvdXNDb250YWluZXJXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZU5hbWVGdWxsID0gdGhpcy5maWxlTmFtZSArICcuJyArIHRoaXMuZXh0ZW5zaW9uO1xuICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuZmlsZU5hbWVGdWxsO1xuICAgICAgICB0aGlzLl9oYW5kbGVEZWxldGVDbGlja2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZU9rQ2xpY2tlZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLl9oYW5kbGVFZGl0Q2xpY2tlZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLl9oYW5kbGVGb3JtSXRlbUlucHV0Q2hhbmdlZFN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgW10pXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGl0bGVXaWR0aCA9IHRoaXMuZ2V0VGl0bGVXaWR0aCgpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gdGhpcy5nZXRDb250YWluZXJXaWR0aCgpO1xuXG4gICAgICAgIC8vIGlmIGZpcnN0IGxvYWQgYW5kIG5vIHByZXZpb3VzIGNvbnRhaW5lciB3aWR0aCwgb3IgaWYgY29udGFpbmVyIGJvdW5kYXJ5IGlzIHJlc2l6ZWQgdG8gc21hbGxlciB0aGFuIGJlZm9yZVxuICAgICAgICBpZiAoIXRoaXMucHJldmlvdXNDb250YWluZXJXaWR0aCB8fCB0aGlzLmNvbnRhaW5lcldpZHRoIDwgdGhpcy5wcmV2aW91c0NvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICAvLyBhbmQgdGhlIHRpdGxlIGV4dGVuZHMgcGFzdCB0aGUgY29udGFpbmVyLCAxLjA1eCBwYWRkaW5nIHRvIHByZXZlbnQgamFnZ3kgcmVzaXppbmcuXG4gICAgICAgICAgICBpZiAodGhpcy50aXRsZVdpZHRoICogMS4wNSA+PSB0aGlzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVGaWxlVGl0bGUodGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldmlvdXNDb250YWluZXJXaWR0aCAmJiB0aGlzLmNvbnRhaW5lcldpZHRoID4gdGhpcy5wcmV2aW91c0NvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICAvLyBMb29rcyB0byBleHBhbmQgZmlsZSB0aXRsZSBpZiBjb250YWluZXIgd2lkdGggaXMgcmVzaXplZCB0byBncmVhdGVyIHRoYW4gYmVmb3JlXG4gICAgICAgICAgICAvLyByZXNldCBmaWxlIHRpdGxlIHRvIGluaXRpYWxcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5maWxlTmFtZUZ1bGw7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUZpbGVUaXRsZSh0aGlzLmZpbGVOYW1lRnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZpb3VzQ29udGFpbmVyV2lkdGggPSB0aGlzLmNvbnRhaW5lcldpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlT2tDbGlja2VkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Lm9rQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSAmJiB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50LmZpbGVOYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZUZ1bGwgPSB0aGlzLmZpbGVOYW1lICsgJy4nICsgdGhpcy5leHRlbnNpb247XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5maWxlTmFtZUZ1bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplRmlsZVRpdGxlKHRoaXMuZmlsZU5hbWVGdWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuX2VkaXRNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Ll9lZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVOYW1lQ2hhbmdlZC5lbWl0KHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVFZGl0Q2xpY2tlZFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl9idXR0b25Hcm91cENvbXBvbmVudC5lZGl0Q2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuX2VkaXRNb2RlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RpdGxlQ29udGFpbmVyRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlQ29udGFpbmVyRGlyZWN0aXZlLmFwcGx5Q29udGFpbmVyQ2xhc3MgPSAhZXZlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHN0eWxlcy5wdXNoKHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlQ29udGFpbmVyRGlyZWN0aXZlPy5fb2JqZWN0TWFya2VyQ29tcG9uZW50cz8uZm9yRWFjaCgob2JqZWN0TWFya2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlcy5wdXNoKG9iamVjdE1hcmtlci5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5zdHlsZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgPyBzdHlsZXMuZm9yRWFjaCgoc3R5bGUpID0+IChzdHlsZS5kaXNwbGF5ID0gJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgOiBzdHlsZXMuZm9yRWFjaCgoc3R5bGUpID0+IChzdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jaycpKTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuX2V4dGVuc2lvbiA9IHRoaXMuZXh0ZW5zaW9uO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSA9IHRoaXMuZmlsZU5hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZURlbGV0ZUNsaWNrZWRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fYnV0dG9uR3JvdXBDb21wb25lbnQuZGVsZXRlQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQ2xpY2tlZC5lbWl0KHRoaXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUZvcm1JdGVtSW5wdXRDaGFuZ2VkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50LmZpbGVOYW1lQ2hhbmdlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYnV0dG9uR3JvdXBDb21wb25lbnQuX29rQnV0dG9uLmRpc2FibGVkID0gZXZlbnQgPT09ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Ll9va0J1dHRvbi5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXRUaXRsZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXRDb250YWluZXJXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKlxuICAgICAqIHRydW5jYXRlcyB0aGUgc3RyaW5nIGJ5IGN1dHRpbmcgb3V0IGV4Y2VzcyBsZW5ndGggaW4gdGhlIG1pZGRsZSBhbmQgcmVwbGFjaW5nIHdpdGggJy4uLidcbiAgICAgKi9cbiAgICBwcml2YXRlIHRydW5jYXRlVGl0bGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjdXRMZW5ndGggPSBNYXRoLmZsb29yKHN0ci5sZW5ndGggKiAwLjgpO1xuXG4gICAgICAgIGlmIChzdHIubGVuZ3RoID4gY3V0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdMZWZ0SW5kZXggPSBNYXRoLmZsb29yKGN1dExlbmd0aCAvIDIpO1xuICAgICAgICAgICAgY29uc3Qgc3RyaW5nUmlnaHRJbmRleCA9IHN0ci5sZW5ndGggLSBzdHJpbmdMZWZ0SW5kZXggKyAzO1xuICAgICAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgc3RyaW5nTGVmdEluZGV4KSArICcuLi4gJyArIHN0ci5zdWJzdHJpbmcoc3RyaW5nUmlnaHRJbmRleCwgc3RyLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICpcbiAgICAgKiBkZXRlcm1pbmVzIGlmIGZpbGUgdGl0bGUgbmVlZHMgdG8gYmUgdHJ1bmNhdGVkIGdpdmVuIGNvbnRhaW5lciBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzaXplRmlsZVRpdGxlKHRpdGxlU3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbGV0IGN1clRpdGxlID0gdGl0bGVTdHI7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSB0aGlzLmdldENvbnRhaW5lcldpZHRoKCk7XG4gICAgICAgIHRoaXMudGl0bGVXaWR0aCA9IHRoaXMuZ2V0VGl0bGVXaWR0aCgpO1xuXG4gICAgICAgIC8vIHJlcGVhdGVkbHkgdHJ1bmNhdGUgdGhlIHRpdGxlIHVudGlsIGl0IGZpdHMgaW5zaWRlIGNvbnRhaW5lclxuICAgICAgICB3aGlsZSAodGhpcy50aXRsZVdpZHRoICogMS4wNSA+PSB0aGlzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCB0cnVuY2F0ZWRUaXRsZVN0ciA9IHRoaXMudHJ1bmNhdGVUaXRsZShjdXJUaXRsZSk7XG4gICAgICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRydW5jYXRlZFRpdGxlU3RyO1xuICAgICAgICAgICAgY3VyVGl0bGUgPSB0cnVuY2F0ZWRUaXRsZVN0cjtcbiAgICAgICAgICAgIHRoaXMudGl0bGVXaWR0aCA9IHRoaXMuZ2V0VGl0bGVXaWR0aCgpO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHRoaXMuZ2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|