nxt-dropzone-wrapper 16.0.0-alpha.6 → 16.0.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/esm2022/lib/dropzone.component.mjs +173 -0
- package/esm2022/lib/dropzone.directive.mjs +332 -0
- package/{esm2020 → esm2022}/lib/dropzone.interfaces.mjs +65 -65
- package/esm2022/lib/dropzone.module.mjs +30 -0
- package/{esm2020 → esm2022}/nxt-dropzone-wrapper.mjs +4 -4
- package/{esm2020 → esm2022}/public-api.mjs +4 -4
- package/{fesm2020 → fesm2022}/nxt-dropzone-wrapper.mjs +575 -575
- package/{fesm2020 → fesm2022}/nxt-dropzone-wrapper.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/dropzone.component.d.ts +54 -54
- package/lib/dropzone.directive.d.ts +70 -70
- package/lib/dropzone.interfaces.d.ts +66 -66
- package/lib/dropzone.module.d.ts +9 -9
- package/package.json +7 -13
- package/public-api.d.ts +4 -4
- package/esm2020/lib/dropzone.component.mjs +0 -172
- package/esm2020/lib/dropzone.directive.mjs +0 -331
- package/esm2020/lib/dropzone.module.mjs +0 -29
- package/fesm2015/nxt-dropzone-wrapper.mjs +0 -570
- package/fesm2015/nxt-dropzone-wrapper.mjs.map +0 -1
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @angular-eslint/no-output-rename */
|
|
2
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
-
import { Directive, EventEmitter, HostBinding, Inject, Input, Optional, Output, PLATFORM_ID } from '@angular/core';
|
|
4
|
-
import Dropzone from 'dropzone';
|
|
5
|
-
import { DropzoneEvents, internalChanges, NXT_DROPZONE_CONFIG, NXT_DROPZONE_LISTENERS, _DropzoneConfig } from './dropzone.interfaces';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class DropzoneDirective {
|
|
8
|
-
/** Disables / detaches Dropzone from the element */
|
|
9
|
-
set disabled(val) {
|
|
10
|
-
val = !!val;
|
|
11
|
-
if (val != this._disabled && this.instance) {
|
|
12
|
-
if (val)
|
|
13
|
-
this.zone.runOutsideAngular(() => {
|
|
14
|
-
this.instance.disable();
|
|
15
|
-
});
|
|
16
|
-
else
|
|
17
|
-
this.zone.runOutsideAngular(() => {
|
|
18
|
-
this.instance.enable();
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
this._disabled = val;
|
|
22
|
-
}
|
|
23
|
-
get disabled() {
|
|
24
|
-
return this._disabled;
|
|
25
|
-
}
|
|
26
|
-
get dropzone() {
|
|
27
|
-
return this.instance;
|
|
28
|
-
}
|
|
29
|
-
/** @internal */
|
|
30
|
-
get isSingle() {
|
|
31
|
-
return this._params?.maxFiles === 1;
|
|
32
|
-
}
|
|
33
|
-
/** @internal */
|
|
34
|
-
get isMultiple() {
|
|
35
|
-
return this._params?.maxFiles !== 1;
|
|
36
|
-
}
|
|
37
|
-
constructor(zone, elementRef, differs, platformId, defaults, component) {
|
|
38
|
-
this.zone = zone;
|
|
39
|
-
this.elementRef = elementRef;
|
|
40
|
-
this.differs = differs;
|
|
41
|
-
this.platformId = platformId;
|
|
42
|
-
this.defaults = defaults;
|
|
43
|
-
this.component = component;
|
|
44
|
-
this._disabled = false;
|
|
45
|
-
this._params = this.defaults
|
|
46
|
-
? new _DropzoneConfig(this.defaults)
|
|
47
|
-
: undefined;
|
|
48
|
-
this.configDiff = this.differs.find(this.config || {}).create();
|
|
49
|
-
this.paramDiff = this.differs.find(this._params || {}).create();
|
|
50
|
-
this.DZ_INIT = this.component?.DZ_INIT
|
|
51
|
-
?? new EventEmitter();
|
|
52
|
-
this.DZ_DROP = this.component?.DZ_DROP
|
|
53
|
-
?? new EventEmitter();
|
|
54
|
-
this.DZ_DRAGSTART = this.component?.DZ_DRAGSTART
|
|
55
|
-
?? new EventEmitter();
|
|
56
|
-
this.DZ_DRAGEND = this.component?.DZ_DRAGEND
|
|
57
|
-
?? new EventEmitter();
|
|
58
|
-
this.DZ_DRAGENTER = this.component?.DZ_DRAGENTER
|
|
59
|
-
?? new EventEmitter();
|
|
60
|
-
this.DZ_DRAGOVER = this.component?.DZ_DRAGOVER
|
|
61
|
-
?? new EventEmitter();
|
|
62
|
-
this.DZ_DRAGLEAVE = this.component?.DZ_DRAGLEAVE
|
|
63
|
-
?? new EventEmitter();
|
|
64
|
-
this.DZ_PASTE = this.component?.DZ_PASTE
|
|
65
|
-
?? new EventEmitter();
|
|
66
|
-
this.DZ_RESET = this.component?.DZ_RESET
|
|
67
|
-
?? new EventEmitter();
|
|
68
|
-
this.DZ_ADDEDFILE = this.component?.DZ_ADDEDFILE
|
|
69
|
-
?? new EventEmitter();
|
|
70
|
-
this.DZ_ADDEDFILES = this.component?.DZ_ADDEDFILES
|
|
71
|
-
?? new EventEmitter();
|
|
72
|
-
this.DZ_REMOVEDFILE = this.component?.DZ_REMOVEDFILE
|
|
73
|
-
?? new EventEmitter();
|
|
74
|
-
this.DZ_THUMBNAIL = this.component?.DZ_THUMBNAIL
|
|
75
|
-
?? new EventEmitter();
|
|
76
|
-
this.DZ_ERROR = this.component?.DZ_ERROR
|
|
77
|
-
?? new EventEmitter();
|
|
78
|
-
this.DZ_ERRORMULTIPLE = this.component?.DZ_ERRORMULTIPLE
|
|
79
|
-
?? new EventEmitter();
|
|
80
|
-
this.DZ_PROCESSING = this.component?.DZ_PROCESSING
|
|
81
|
-
?? new EventEmitter();
|
|
82
|
-
this.DZ_PROCESSINGMULTIPLE = this.component?.DZ_PROCESSINGMULTIPLE
|
|
83
|
-
?? new EventEmitter();
|
|
84
|
-
this.DZ_UPLOADPROGRESS = this.component?.DZ_UPLOADPROGRESS
|
|
85
|
-
?? new EventEmitter();
|
|
86
|
-
this.DZ_TOTALUPLOADPROGRESS = this.component?.DZ_TOTALUPLOADPROGRESS
|
|
87
|
-
?? new EventEmitter();
|
|
88
|
-
this.DZ_SENDING = this.component?.DZ_SENDING
|
|
89
|
-
?? new EventEmitter();
|
|
90
|
-
this.DZ_SENDINGMULTIPLE = this.component?.DZ_SENDINGMULTIPLE
|
|
91
|
-
?? new EventEmitter();
|
|
92
|
-
this.DZ_SUCCESS = this.component?.DZ_SUCCESS
|
|
93
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
94
|
-
?? new EventEmitter();
|
|
95
|
-
this.DZ_SUCCESSMULTIPLE = this.component?.DZ_SUCCESSMULTIPLE
|
|
96
|
-
?? new EventEmitter();
|
|
97
|
-
this.DZ_CANCELED = this.component?.DZ_CANCELED
|
|
98
|
-
?? new EventEmitter();
|
|
99
|
-
this.DZ_CANCELEDMULTIPLE = this.component?.DZ_CANCELEDMULTIPLE
|
|
100
|
-
?? new EventEmitter();
|
|
101
|
-
this.DZ_COMPLETE = this.component?.DZ_COMPLETE
|
|
102
|
-
?? new EventEmitter();
|
|
103
|
-
this.DZ_COMPLETEMULTIPLE = this.component?.DZ_COMPLETEMULTIPLE
|
|
104
|
-
?? new EventEmitter();
|
|
105
|
-
this.DZ_MAXFILESEXCEEDED = this.component?.DZ_MAXFILESEXCEEDED
|
|
106
|
-
?? new EventEmitter();
|
|
107
|
-
this.DZ_MAXFILESREACHED = this.component?.DZ_MAXFILESREACHED
|
|
108
|
-
?? new EventEmitter();
|
|
109
|
-
this.DZ_QUEUECOMPLETE = this.component?.DZ_QUEUECOMPLETE
|
|
110
|
-
?? new EventEmitter();
|
|
111
|
-
}
|
|
112
|
-
/** @internal */
|
|
113
|
-
ngOnInit() {
|
|
114
|
-
this.initInstance();
|
|
115
|
-
}
|
|
116
|
-
/** @internal */
|
|
117
|
-
ngOnDestroy() {
|
|
118
|
-
this.destroyInstance();
|
|
119
|
-
}
|
|
120
|
-
/** @internal */
|
|
121
|
-
ngDoCheck() {
|
|
122
|
-
const changes = this.configDiff.diff(this.config || {});
|
|
123
|
-
if (changes) {
|
|
124
|
-
let newParams = this.defaults
|
|
125
|
-
? new _DropzoneConfig(this.defaults)
|
|
126
|
-
: undefined;
|
|
127
|
-
if (newParams && this.config)
|
|
128
|
-
newParams.assign(this.config);
|
|
129
|
-
else if (this.config)
|
|
130
|
-
newParams = new _DropzoneConfig(this.config);
|
|
131
|
-
const d = this.paramDiff.diff(newParams || {});
|
|
132
|
-
if (d) {
|
|
133
|
-
this._params = newParams;
|
|
134
|
-
let hasChanges = false;
|
|
135
|
-
d.forEachItem(r => {
|
|
136
|
-
if (!internalChanges.has(r.key) && r.currentValue !== r.previousValue)
|
|
137
|
-
hasChanges = true;
|
|
138
|
-
});
|
|
139
|
-
if (hasChanges) {
|
|
140
|
-
this.destroyInstance();
|
|
141
|
-
this.initInstance();
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/** @internal */
|
|
147
|
-
reset(cancel) {
|
|
148
|
-
if (this.instance) {
|
|
149
|
-
this.zone.runOutsideAngular(() => {
|
|
150
|
-
this.instance.removeAllFiles(cancel);
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
initInstance() {
|
|
155
|
-
if (!isPlatformBrowser(this.platformId) || !this._params) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
this.zone.runOutsideAngular(() => {
|
|
159
|
-
this.instance = new Dropzone(this.elementRef.nativeElement, this._params);
|
|
160
|
-
});
|
|
161
|
-
if (this.disabled) {
|
|
162
|
-
this.instance.disable();
|
|
163
|
-
}
|
|
164
|
-
if (this.DZ_INIT.observed) {
|
|
165
|
-
this.zone.run(() => {
|
|
166
|
-
this.DZ_INIT.emit(this.instance);
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
// Add auto reset handling for events
|
|
170
|
-
this.instance.on('success', () => {
|
|
171
|
-
if ((this._params?.autoReset ?? -1) >= 0) {
|
|
172
|
-
setTimeout(() => this.reset(), this._params?.autoReset);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
this.instance.on('error', () => {
|
|
176
|
-
if ((this._params?.errorReset ?? -1) >= 0) {
|
|
177
|
-
setTimeout(() => this.reset(), this._params?.errorReset);
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
this.instance.on('canceled', () => {
|
|
181
|
-
if ((this._params?.cancelReset ?? -1) >= 0) {
|
|
182
|
-
setTimeout(() => this.reset(), this._params?.cancelReset);
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
// Add native Dropzone event handling
|
|
186
|
-
DropzoneEvents.forEach((eventName) => {
|
|
187
|
-
this.instance.on(eventName.toLowerCase(), (...args) => {
|
|
188
|
-
args = (args.length === 1) ? args[0] : args;
|
|
189
|
-
const output = `DZ_${eventName.toUpperCase()}`;
|
|
190
|
-
const emitter = this[output];
|
|
191
|
-
if (emitter.observed) {
|
|
192
|
-
this.zone.run(() => {
|
|
193
|
-
emitter.emit(args);
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
destroyInstance() {
|
|
200
|
-
if (this.instance) {
|
|
201
|
-
this.zone.runOutsideAngular(() => {
|
|
202
|
-
this.instance.destroy();
|
|
203
|
-
});
|
|
204
|
-
this.instance = undefined;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
DropzoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: PLATFORM_ID }, { token: NXT_DROPZONE_CONFIG, optional: true }, { token: NXT_DROPZONE_LISTENERS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
209
|
-
DropzoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.4", type: DropzoneDirective, selector: "[nxtDropzone]", inputs: { disabled: "disabled", config: ["nxtDropzone", "config"] }, outputs: { DZ_INIT: "init", DZ_DROP: "drop", DZ_DRAGSTART: "dragStart", DZ_DRAGEND: "dragEnd", DZ_DRAGENTER: "dragEnter", DZ_DRAGOVER: "dragOver", DZ_DRAGLEAVE: "dragLeave", DZ_PASTE: "paste", DZ_RESET: "reset", DZ_ADDEDFILE: "addedFile", DZ_ADDEDFILES: "addedFiles", DZ_REMOVEDFILE: "removedFile", DZ_THUMBNAIL: "thumbnail", DZ_ERROR: "error", DZ_ERRORMULTIPLE: "errorMultiple", DZ_PROCESSING: "processing", DZ_PROCESSINGMULTIPLE: "processingMultiple", DZ_UPLOADPROGRESS: "uploadProgress", DZ_TOTALUPLOADPROGRESS: "totalUploadProgress", DZ_SENDING: "sending", DZ_SENDINGMULTIPLE: "sendingMultiple", DZ_SUCCESS: "success", DZ_SUCCESSMULTIPLE: "successMultiple", DZ_CANCELED: "canceled", DZ_CANCELEDMULTIPLE: "canceledMultiple", DZ_COMPLETE: "complete", DZ_COMPLETEMULTIPLE: "completeMultiple", DZ_MAXFILESEXCEEDED: "maxFilesExceeded", DZ_MAXFILESREACHED: "maxFilesReached", DZ_QUEUECOMPLETE: "queueComplete" }, host: { properties: { "class.dz-single": "this.isSingle", "class.dz-multiple": "this.isMultiple" } }, exportAs: ["nxtDropzone"], ngImport: i0 });
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DropzoneDirective, decorators: [{
|
|
211
|
-
type: Directive,
|
|
212
|
-
args: [{
|
|
213
|
-
selector: '[nxtDropzone]',
|
|
214
|
-
exportAs: 'nxtDropzone'
|
|
215
|
-
}]
|
|
216
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: Object, decorators: [{
|
|
217
|
-
type: Inject,
|
|
218
|
-
args: [PLATFORM_ID]
|
|
219
|
-
}] }, { type: undefined, decorators: [{
|
|
220
|
-
type: Optional
|
|
221
|
-
}, {
|
|
222
|
-
type: Inject,
|
|
223
|
-
args: [NXT_DROPZONE_CONFIG]
|
|
224
|
-
}] }, { type: undefined, decorators: [{
|
|
225
|
-
type: Optional
|
|
226
|
-
}, {
|
|
227
|
-
type: Inject,
|
|
228
|
-
args: [NXT_DROPZONE_LISTENERS]
|
|
229
|
-
}] }]; }, propDecorators: { disabled: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], config: [{
|
|
232
|
-
type: Input,
|
|
233
|
-
args: ['nxtDropzone']
|
|
234
|
-
}], DZ_INIT: [{
|
|
235
|
-
type: Output,
|
|
236
|
-
args: ['init']
|
|
237
|
-
}], DZ_DROP: [{
|
|
238
|
-
type: Output,
|
|
239
|
-
args: ['drop']
|
|
240
|
-
}], DZ_DRAGSTART: [{
|
|
241
|
-
type: Output,
|
|
242
|
-
args: ['dragStart']
|
|
243
|
-
}], DZ_DRAGEND: [{
|
|
244
|
-
type: Output,
|
|
245
|
-
args: ['dragEnd']
|
|
246
|
-
}], DZ_DRAGENTER: [{
|
|
247
|
-
type: Output,
|
|
248
|
-
args: ['dragEnter']
|
|
249
|
-
}], DZ_DRAGOVER: [{
|
|
250
|
-
type: Output,
|
|
251
|
-
args: ['dragOver']
|
|
252
|
-
}], DZ_DRAGLEAVE: [{
|
|
253
|
-
type: Output,
|
|
254
|
-
args: ['dragLeave']
|
|
255
|
-
}], DZ_PASTE: [{
|
|
256
|
-
type: Output,
|
|
257
|
-
args: ['paste']
|
|
258
|
-
}], DZ_RESET: [{
|
|
259
|
-
type: Output,
|
|
260
|
-
args: ['reset']
|
|
261
|
-
}], DZ_ADDEDFILE: [{
|
|
262
|
-
type: Output,
|
|
263
|
-
args: ['addedFile']
|
|
264
|
-
}], DZ_ADDEDFILES: [{
|
|
265
|
-
type: Output,
|
|
266
|
-
args: ['addedFiles']
|
|
267
|
-
}], DZ_REMOVEDFILE: [{
|
|
268
|
-
type: Output,
|
|
269
|
-
args: ['removedFile']
|
|
270
|
-
}], DZ_THUMBNAIL: [{
|
|
271
|
-
type: Output,
|
|
272
|
-
args: ['thumbnail']
|
|
273
|
-
}], DZ_ERROR: [{
|
|
274
|
-
type: Output,
|
|
275
|
-
args: ['error']
|
|
276
|
-
}], DZ_ERRORMULTIPLE: [{
|
|
277
|
-
type: Output,
|
|
278
|
-
args: ['errorMultiple']
|
|
279
|
-
}], DZ_PROCESSING: [{
|
|
280
|
-
type: Output,
|
|
281
|
-
args: ['processing']
|
|
282
|
-
}], DZ_PROCESSINGMULTIPLE: [{
|
|
283
|
-
type: Output,
|
|
284
|
-
args: ['processingMultiple']
|
|
285
|
-
}], DZ_UPLOADPROGRESS: [{
|
|
286
|
-
type: Output,
|
|
287
|
-
args: ['uploadProgress']
|
|
288
|
-
}], DZ_TOTALUPLOADPROGRESS: [{
|
|
289
|
-
type: Output,
|
|
290
|
-
args: ['totalUploadProgress']
|
|
291
|
-
}], DZ_SENDING: [{
|
|
292
|
-
type: Output,
|
|
293
|
-
args: ['sending']
|
|
294
|
-
}], DZ_SENDINGMULTIPLE: [{
|
|
295
|
-
type: Output,
|
|
296
|
-
args: ['sendingMultiple']
|
|
297
|
-
}], DZ_SUCCESS: [{
|
|
298
|
-
type: Output,
|
|
299
|
-
args: ['success']
|
|
300
|
-
}], DZ_SUCCESSMULTIPLE: [{
|
|
301
|
-
type: Output,
|
|
302
|
-
args: ['successMultiple']
|
|
303
|
-
}], DZ_CANCELED: [{
|
|
304
|
-
type: Output,
|
|
305
|
-
args: ['canceled']
|
|
306
|
-
}], DZ_CANCELEDMULTIPLE: [{
|
|
307
|
-
type: Output,
|
|
308
|
-
args: ['canceledMultiple']
|
|
309
|
-
}], DZ_COMPLETE: [{
|
|
310
|
-
type: Output,
|
|
311
|
-
args: ['complete']
|
|
312
|
-
}], DZ_COMPLETEMULTIPLE: [{
|
|
313
|
-
type: Output,
|
|
314
|
-
args: ['completeMultiple']
|
|
315
|
-
}], DZ_MAXFILESEXCEEDED: [{
|
|
316
|
-
type: Output,
|
|
317
|
-
args: ['maxFilesExceeded']
|
|
318
|
-
}], DZ_MAXFILESREACHED: [{
|
|
319
|
-
type: Output,
|
|
320
|
-
args: ['maxFilesReached']
|
|
321
|
-
}], DZ_QUEUECOMPLETE: [{
|
|
322
|
-
type: Output,
|
|
323
|
-
args: ['queueComplete']
|
|
324
|
-
}], isSingle: [{
|
|
325
|
-
type: HostBinding,
|
|
326
|
-
args: ['class.dz-single']
|
|
327
|
-
}], isMultiple: [{
|
|
328
|
-
type: HostBinding,
|
|
329
|
-
args: ['class.dz-multiple']
|
|
330
|
-
}] } });
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJvcHpvbmUtd3JhcHBlci9zcmMvbGliL2Ryb3B6b25lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBdUIsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE4QyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuTCxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxFQUFpQyxjQUFjLEVBQXFCLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTs7QUFNdkwsTUFBTSxPQUFPLGlCQUFpQjtJQUsxQixvREFBb0Q7SUFDcEQsSUFBYSxRQUFRLENBQUMsR0FBWTtRQUM5QixHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUNYLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxJQUFJLEdBQUc7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxRQUFTLENBQUMsT0FBTyxFQUFFLENBQUE7Z0JBQzVCLENBQUMsQ0FBQyxDQUFBOztnQkFFRixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtnQkFDM0IsQ0FBQyxDQUFDLENBQUE7U0FDVDtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFBO0lBQ3hC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QyxTQUFTO2dCQUVtQixrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUdHLFVBQVU7c0JBQXJDLE1BQU07dUJBQUMsU0FBUztnQkFHbUIsa0JBQWtCO3NCQUFyRCxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHSSxXQUFXO3NCQUF2QyxNQUFNO3VCQUFDLFVBQVU7Z0JBRW1CLG1CQUFtQjtzQkFBdkQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBR0csV0FBVztzQkFBdkMsTUFBTTt1QkFBQyxVQUFVO2dCQUVtQixtQkFBbUI7c0JBQXZELE1BQU07dUJBQUMsa0JBQWtCO2dCQUdXLG1CQUFtQjtzQkFBdkQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBRVUsa0JBQWtCO3NCQUFyRCxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHUyxnQkFBZ0I7c0JBQWpELE1BQU07dUJBQUMsZUFBZTtnQkFTbkIsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFPMUIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lICovXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgS2V5VmFsdWVEaWZmZXJzLCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgRHJvcHpvbmUgZnJvbSAnZHJvcHpvbmUnXG5pbXBvcnQgeyBEcm9wem9uZUNvbmZpZywgRHJvcHpvbmVFdmVudCwgRHJvcHpvbmVFdmVudHMsIERyb3B6b25lTGlzdGVuZXJzLCBpbnRlcm5hbENoYW5nZXMsIE5YVF9EUk9QWk9ORV9DT05GSUcsIE5YVF9EUk9QWk9ORV9MSVNURU5FUlMsIF9Ecm9wem9uZUNvbmZpZyB9IGZyb20gJy4vZHJvcHpvbmUuaW50ZXJmYWNlcydcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbnh0RHJvcHpvbmVdJyxcbiAgICBleHBvcnRBczogJ254dERyb3B6b25lJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wem9uZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrLCBEcm9wem9uZUxpc3RlbmVycyB7XG5cbiAgICBwcml2YXRlIGluc3RhbmNlPzogRHJvcHpvbmVcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2VcbiAgICAvKiogRGlzYWJsZXMgLyBkZXRhY2hlcyBEcm9wem9uZSBmcm9tIHRoZSBlbGVtZW50ICovXG4gICAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbikge1xuICAgICAgICB2YWwgPSAhIXZhbFxuICAgICAgICBpZiAodmFsICE9IHRoaXMuX2Rpc2FibGVkICYmIHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmICh2YWwpXG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSEuZGlzYWJsZSgpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5lbmFibGUoKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWxcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJhbXMgPSB0aGlzLmRlZmF1bHRzXG4gICAgICAgID8gbmV3IF9Ecm9wem9uZUNvbmZpZyh0aGlzLmRlZmF1bHRzKVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgIC8qKiBDYW4gYmUgdXNlZCB0byBwcm92aWRlIG9wdGlvbmFsIGN1c3RvbSBjb25maWcgKi9cbiAgICBASW5wdXQoJ254dERyb3B6b25lJykgY29uZmlnPzogRHJvcHpvbmVDb25maWdcblxuICAgIHByaXZhdGUgY29uZmlnRGlmZiA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuY29uZmlnIHx8IHt9KS5jcmVhdGUoKVxuICAgIHByaXZhdGUgcGFyYW1EaWZmID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fcGFyYW1zIHx8IHt9KS5jcmVhdGUoKVxuXG4gICAgQE91dHB1dCgnaW5pdCcpIHJlYWRvbmx5IERaX0lOSVQgPSB0aGlzLmNvbXBvbmVudD8uRFpfSU5JVFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lPigpXG5cbiAgICBAT3V0cHV0KCdkcm9wJykgcmVhZG9ubHkgRFpfRFJPUCA9IHRoaXMuY29tcG9uZW50Py5EWl9EUk9QXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgnZHJhZ1N0YXJ0JykgcmVhZG9ubHkgRFpfRFJBR1NUQVJUID0gdGhpcy5jb21wb25lbnQ/LkRaX0RSQUdTVEFSVFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdFbmQnKSByZWFkb25seSBEWl9EUkFHRU5EID0gdGhpcy5jb21wb25lbnQ/LkRaX0RSQUdFTkRcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnRW50ZXInKSByZWFkb25seSBEWl9EUkFHRU5URVIgPSB0aGlzLmNvbXBvbmVudD8uRFpfRFJBR0VOVEVSXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgnZHJhZ092ZXInKSByZWFkb25seSBEWl9EUkFHT1ZFUiA9IHRoaXMuY29tcG9uZW50Py5EWl9EUkFHT1ZFUlxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdMZWF2ZScpIHJlYWRvbmx5IERaX0RSQUdMRUFWRSA9IHRoaXMuY29tcG9uZW50Py5EWl9EUkFHTEVBVkVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdwYXN0ZScpIHJlYWRvbmx5IERaX1BBU1RFID0gdGhpcy5jb21wb25lbnQ/LkRaX1BBU1RFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG5cbiAgICBAT3V0cHV0KCdyZXNldCcpIHJlYWRvbmx5IERaX1JFU0VUID0gdGhpcy5jb21wb25lbnQ/LkRaX1JFU0VUXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gICAgQE91dHB1dCgnYWRkZWRGaWxlJykgcmVhZG9ubHkgRFpfQURERURGSUxFID0gdGhpcy5jb21wb25lbnQ/LkRaX0FEREVERklMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ2FkZGVkRmlsZXMnKSByZWFkb25seSBEWl9BRERFREZJTEVTID0gdGhpcy5jb21wb25lbnQ/LkRaX0FEREVERklMRVNcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdyZW1vdmVkRmlsZScpIHJlYWRvbmx5IERaX1JFTU9WRURGSUxFID0gdGhpcy5jb21wb25lbnQ/LkRaX1JFTU9WRURGSUxFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgndGh1bWJuYWlsJykgcmVhZG9ubHkgRFpfVEhVTUJOQUlMID0gdGhpcy5jb21wb25lbnQ/LkRaX1RIVU1CTkFJTFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIHN0cmluZ10+KClcblxuICAgIEBPdXRwdXQoJ2Vycm9yJykgcmVhZG9ubHkgRFpfRVJST1IgPSB0aGlzLmNvbXBvbmVudD8uRFpfRVJST1JcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBzdHJpbmcgfCBFcnJvcl0+KClcbiAgICBAT3V0cHV0KCdlcnJvck11bHRpcGxlJykgcmVhZG9ubHkgRFpfRVJST1JNVUxUSVBMRSA9IHRoaXMuY29tcG9uZW50Py5EWl9FUlJPUk1VTFRJUExFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8W0Ryb3B6b25lLkRyb3B6b25lRmlsZVtdLCBzdHJpbmcgfCBFcnJvcl0+KClcblxuICAgIEBPdXRwdXQoJ3Byb2Nlc3NpbmcnKSByZWFkb25seSBEWl9QUk9DRVNTSU5HID0gdGhpcy5jb21wb25lbnQ/LkRaX1BST0NFU1NJTkdcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdwcm9jZXNzaW5nTXVsdGlwbGUnKSByZWFkb25seSBEWl9QUk9DRVNTSU5HTVVMVElQTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfUFJPQ0VTU0lOR01VTFRJUExFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ3VwbG9hZFByb2dyZXNzJykgcmVhZG9ubHkgRFpfVVBMT0FEUFJPR1JFU1MgPSB0aGlzLmNvbXBvbmVudD8uRFpfVVBMT0FEUFJPR1JFU1NcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBudW1iZXIsIG51bWJlcl0+KClcbiAgICBAT3V0cHV0KCd0b3RhbFVwbG9hZFByb2dyZXNzJykgcmVhZG9ubHkgRFpfVE9UQUxVUExPQURQUk9HUkVTUyA9IHRoaXMuY29tcG9uZW50Py5EWl9UT1RBTFVQTE9BRFBST0dSRVNTXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyLCBudW1iZXJdPigpXG5cbiAgICBAT3V0cHV0KCdzZW5kaW5nJykgcmVhZG9ubHkgRFpfU0VORElORyA9IHRoaXMuY29tcG9uZW50Py5EWl9TRU5ESU5HXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8W0Ryb3B6b25lLkRyb3B6b25lRmlsZSwgWE1MSHR0cFJlcXVlc3QsIEZvcm1EYXRhXT4oKVxuICAgIEBPdXRwdXQoJ3NlbmRpbmdNdWx0aXBsZScpIHJlYWRvbmx5IERaX1NFTkRJTkdNVUxUSVBMRSA9IHRoaXMuY29tcG9uZW50Py5EWl9TRU5ESU5HTVVMVElQTEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlW10sIFhNTEh0dHBSZXF1ZXN0LCBGb3JtRGF0YV0+KClcblxuICAgIEBPdXRwdXQoJ3N1Y2Nlc3MnKSByZWFkb25seSBEWl9TVUNDRVNTID0gdGhpcy5jb21wb25lbnQ/LkRaX1NVQ0NFU1NcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBPYmplY3QgfCBzdHJpbmddPigpXG4gICAgQE91dHB1dCgnc3VjY2Vzc011bHRpcGxlJykgcmVhZG9ubHkgRFpfU1VDQ0VTU01VTFRJUExFID0gdGhpcy5jb21wb25lbnQ/LkRaX1NVQ0NFU1NNVUxUSVBMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdjYW5jZWxlZCcpIHJlYWRvbmx5IERaX0NBTkNFTEVEID0gdGhpcy5jb21wb25lbnQ/LkRaX0NBTkNFTEVEXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgnY2FuY2VsZWRNdWx0aXBsZScpIHJlYWRvbmx5IERaX0NBTkNFTEVETVVMVElQTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfQ0FOQ0VMRURNVUxUSVBMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdjb21wbGV0ZScpIHJlYWRvbmx5IERaX0NPTVBMRVRFID0gdGhpcy5jb21wb25lbnQ/LkRaX0NPTVBMRVRFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgnY29tcGxldGVNdWx0aXBsZScpIHJlYWRvbmx5IERaX0NPTVBMRVRFTVVMVElQTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfQ09NUExFVEVNVUxUSVBMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdtYXhGaWxlc0V4Y2VlZGVkJykgcmVhZG9ubHkgRFpfTUFYRklMRVNFWENFRURFRCA9IHRoaXMuY29tcG9uZW50Py5EWl9NQVhGSUxFU0VYQ0VFREVEXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgnbWF4RmlsZXNSZWFjaGVkJykgcmVhZG9ubHkgRFpfTUFYRklMRVNSRUFDSEVEID0gdGhpcy5jb21wb25lbnQ/LkRaX01BWEZJTEVTUkVBQ0hFRFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdxdWV1ZUNvbXBsZXRlJykgcmVhZG9ubHkgRFpfUVVFVUVDT01QTEVURSA9IHRoaXMuY29tcG9uZW50Py5EWl9RVUVVRUNPTVBMRVRFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gICAgZ2V0IGRyb3B6b25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZVxuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmR6LXNpbmdsZScpXG4gICAgZ2V0IGlzU2luZ2xlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1zPy5tYXhGaWxlcyA9PT0gMVxuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmR6LW11bHRpcGxlJylcbiAgICBnZXQgaXNNdWx0aXBsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmFtcz8ubWF4RmlsZXMgIT09IDFcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChOWFRfRFJPUFpPTkVfQ09ORklHKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRzPzogRHJvcHpvbmVDb25maWcsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoTlhUX0RST1BaT05FX0xJU1RFTkVSUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnQ/OiBEcm9wem9uZUxpc3RlbmVyc1xuICAgICkgeyB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdEluc3RhbmNlKClcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveUluc3RhbmNlKClcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5jb25maWdEaWZmLmRpZmYodGhpcy5jb25maWcgfHwge30gYXMgYW55KVxuXG4gICAgICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICAgICAgICBsZXQgbmV3UGFyYW1zID0gdGhpcy5kZWZhdWx0c1xuICAgICAgICAgICAgICAgID8gbmV3IF9Ecm9wem9uZUNvbmZpZyh0aGlzLmRlZmF1bHRzKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICBpZiAobmV3UGFyYW1zICYmIHRoaXMuY29uZmlnKVxuICAgICAgICAgICAgICAgIG5ld1BhcmFtcy5hc3NpZ24odGhpcy5jb25maWcpXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbmZpZylcbiAgICAgICAgICAgICAgICBuZXdQYXJhbXMgPSBuZXcgX0Ryb3B6b25lQ29uZmlnKHRoaXMuY29uZmlnKVxuICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMucGFyYW1EaWZmLmRpZmYobmV3UGFyYW1zIHx8IHt9IGFzIGFueSlcbiAgICAgICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyYW1zID0gbmV3UGFyYW1zXG4gICAgICAgICAgICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZVxuICAgICAgICAgICAgICAgIGQuZm9yRWFjaEl0ZW0ociA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaW50ZXJuYWxDaGFuZ2VzLmhhcyhyLmtleSBhcyBhbnkpICYmIHIuY3VycmVudFZhbHVlICE9PSByLnByZXZpb3VzVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95SW5zdGFuY2UoKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRJbnN0YW5jZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHJlc2V0KGNhbmNlbD86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSEucmVtb3ZlQWxsRmlsZXMoY2FuY2VsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEluc3RhbmNlKCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuX3BhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBEcm9wem9uZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fcGFyYW1zKVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5kaXNhYmxlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkRaX0lOSVQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuRFpfSU5JVC5lbWl0KHRoaXMuaW5zdGFuY2UpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIGF1dG8gcmVzZXQgaGFuZGxpbmcgZm9yIGV2ZW50c1xuICAgICAgICB0aGlzLmluc3RhbmNlIS5vbignc3VjY2VzcycsICgpID0+IHtcbiAgICAgICAgICAgIGlmICgodGhpcy5fcGFyYW1zPy5hdXRvUmVzZXQgPz8gLTEpID49IDApIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSwgdGhpcy5fcGFyYW1zPy5hdXRvUmVzZXQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZSEub24oJ2Vycm9yJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCh0aGlzLl9wYXJhbXM/LmVycm9yUmVzZXQgPz8gLTEpID49IDApIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSwgdGhpcy5fcGFyYW1zPy5lcnJvclJlc2V0KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UhLm9uKCdjYW5jZWxlZCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICgodGhpcy5fcGFyYW1zPy5jYW5jZWxSZXNldCA/PyAtMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpLCB0aGlzLl9wYXJhbXM/LmNhbmNlbFJlc2V0KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEFkZCBuYXRpdmUgRHJvcHpvbmUgZXZlbnQgaGFuZGxpbmdcbiAgICAgICAgRHJvcHpvbmVFdmVudHMuZm9yRWFjaCgoZXZlbnROYW1lOiBEcm9wem9uZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5vbihldmVudE5hbWUudG9Mb3dlckNhc2UoKSwgKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgYXJncyA9IChhcmdzLmxlbmd0aCA9PT0gMSkgPyBhcmdzWzBdIDogYXJnc1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gYERaXyR7ZXZlbnROYW1lLnRvVXBwZXJDYXNlKCl9YFxuXG4gICAgICAgICAgICAgICAgY29uc3QgZW1pdHRlciA9IHRoaXNbb3V0cHV0IGFzIGtleW9mIERyb3B6b25lRGlyZWN0aXZlXSBhcyBFdmVudEVtaXR0ZXI8YW55PlxuXG4gICAgICAgICAgICAgICAgaWYgKGVtaXR0ZXIub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoYXJncylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveUluc3RhbmNlKCkge1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5kZXN0cm95KClcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { DropzoneComponent } from './dropzone.component';
|
|
4
|
-
import { DropzoneDirective } from './dropzone.directive';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class DropzoneModule {
|
|
7
|
-
}
|
|
8
|
-
DropzoneModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DropzoneModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
-
DropzoneModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: DropzoneModule, declarations: [DropzoneComponent,
|
|
10
|
-
DropzoneDirective], imports: [CommonModule], exports: [DropzoneComponent,
|
|
11
|
-
DropzoneDirective] });
|
|
12
|
-
DropzoneModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DropzoneModule, imports: [CommonModule] });
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DropzoneModule, decorators: [{
|
|
14
|
-
type: NgModule,
|
|
15
|
-
args: [{
|
|
16
|
-
declarations: [
|
|
17
|
-
DropzoneComponent,
|
|
18
|
-
DropzoneDirective
|
|
19
|
-
],
|
|
20
|
-
imports: [
|
|
21
|
-
CommonModule
|
|
22
|
-
],
|
|
23
|
-
exports: [
|
|
24
|
-
DropzoneComponent,
|
|
25
|
-
DropzoneDirective
|
|
26
|
-
]
|
|
27
|
-
}]
|
|
28
|
-
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJvcHpvbmUtd3JhcHBlci9zcmMvbGliL2Ryb3B6b25lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTs7QUFleEQsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkFYbkIsaUJBQWlCO1FBQ2pCLGlCQUFpQixhQUdqQixZQUFZLGFBR1osaUJBQWlCO1FBQ2pCLGlCQUFpQjs0R0FHWixjQUFjLFlBUG5CLFlBQVk7MkZBT1AsY0FBYztrQkFiMUIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YsaUJBQWlCO3dCQUNqQixpQkFBaUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDTCxpQkFBaUI7d0JBQ2pCLGlCQUFpQjtxQkFDcEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBEcm9wem9uZUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcHpvbmUuY29tcG9uZW50J1xuaW1wb3J0IHsgRHJvcHpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3B6b25lLmRpcmVjdGl2ZSdcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgRHJvcHpvbmVDb21wb25lbnQsXG4gICAgICAgIERyb3B6b25lRGlyZWN0aXZlXG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBEcm9wem9uZUNvbXBvbmVudCxcbiAgICAgICAgRHJvcHpvbmVEaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERyb3B6b25lTW9kdWxlIHsgfVxuIl19
|