@schneideress/dashboardframework 0.0.78 → 0.0.80
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/README.md +24 -24
- package/bundles/schneideress-dashboardframework.umd.js +7061 -7033
- package/bundles/schneideress-dashboardframework.umd.js.map +1 -1
- package/bundles/schneideress-dashboardframework.umd.min.js +1 -1
- package/bundles/schneideress-dashboardframework.umd.min.js.map +1 -1
- package/esm2015/gridster/index.js +19 -18
- package/esm2015/gridster/lib/gridster.component.js +701 -700
- package/esm2015/gridster/lib/gridster.interface.js +85 -84
- package/esm2015/gridster/lib/gridster.module.js +28 -27
- package/esm2015/gridster/lib/gridsterCompact.service.js +224 -223
- package/esm2015/gridster/lib/gridsterConfig.constant.js +180 -179
- package/esm2015/gridster/lib/gridsterConfig.interface.js +220 -219
- package/esm2015/gridster/lib/gridsterConfigS.interface.js +162 -161
- package/esm2015/gridster/lib/gridsterDraggable.service.js +511 -510
- package/esm2015/gridster/lib/gridsterEmptyCell.service.js +318 -317
- package/esm2015/gridster/lib/gridsterItem.component.js +214 -213
- package/esm2015/gridster/lib/gridsterItem.interface.js +47 -46
- package/esm2015/gridster/lib/gridsterItemComponent.interface.js +49 -48
- package/esm2015/gridster/lib/gridsterPreview.component.js +67 -66
- package/esm2015/gridster/lib/gridsterPush.service.js +468 -467
- package/esm2015/gridster/lib/gridsterPushResize.service.js +359 -358
- package/esm2015/gridster/lib/gridsterRenderer.service.js +278 -277
- package/esm2015/gridster/lib/gridsterResizable.service.js +553 -552
- package/esm2015/gridster/lib/gridsterResizeEventType.interface.js +20 -19
- package/esm2015/gridster/lib/gridsterScroll.service.js +196 -195
- package/esm2015/gridster/lib/gridsterSwap.service.js +135 -134
- package/esm2015/gridster/lib/gridsterUtils.service.js +138 -137
- package/esm2015/lib/custom.notifier.options.js +47 -46
- package/esm2015/lib/ra-dashboard-area/ra.dashboard.area.js +497 -496
- package/esm2015/lib/ra-widget-container/ra.widget.container.component.js +472 -471
- package/esm2015/lib/ra.base.dashboard.filter.js +76 -75
- package/esm2015/lib/ra.base.dashboard.template.js +72 -71
- package/esm2015/lib/ra.dashbard.event.bus.js +86 -85
- package/esm2015/lib/ra.dashboard.module.js +52 -51
- package/esm2015/lib/ra.dashboard.service.js +145 -144
- package/esm2015/lib/ra.event.enum.js +52 -51
- package/esm2015/lib/ra.gridster.config.js +68 -67
- package/esm2015/public-api.js +17 -16
- package/esm2015/schneideress-dashboardframework.js +15 -14
- package/esm5/gridster/index.js +19 -18
- package/esm5/gridster/lib/gridster.component.js +804 -803
- package/esm5/gridster/lib/gridster.interface.js +95 -94
- package/esm5/gridster/lib/gridster.module.js +32 -31
- package/esm5/gridster/lib/gridsterCompact.service.js +254 -253
- package/esm5/gridster/lib/gridsterConfig.constant.js +180 -179
- package/esm5/gridster/lib/gridsterConfig.interface.js +220 -219
- package/esm5/gridster/lib/gridsterConfigS.interface.js +162 -161
- package/esm5/gridster/lib/gridsterDraggable.service.js +550 -549
- package/esm5/gridster/lib/gridsterEmptyCell.service.js +359 -358
- package/esm5/gridster/lib/gridsterItem.component.js +239 -238
- package/esm5/gridster/lib/gridsterItem.interface.js +47 -46
- package/esm5/gridster/lib/gridsterItemComponent.interface.js +59 -58
- package/esm5/gridster/lib/gridsterPreview.component.js +71 -70
- package/esm5/gridster/lib/gridsterPush.service.js +548 -547
- package/esm5/gridster/lib/gridsterPushResize.service.js +424 -423
- package/esm5/gridster/lib/gridsterRenderer.service.js +324 -323
- package/esm5/gridster/lib/gridsterResizable.service.js +630 -629
- package/esm5/gridster/lib/gridsterResizeEventType.interface.js +20 -19
- package/esm5/gridster/lib/gridsterScroll.service.js +196 -195
- package/esm5/gridster/lib/gridsterSwap.service.js +153 -152
- package/esm5/gridster/lib/gridsterUtils.service.js +178 -177
- package/esm5/lib/custom.notifier.options.js +47 -46
- package/esm5/lib/ra-dashboard-area/ra.dashboard.area.js +589 -588
- package/esm5/lib/ra-widget-container/ra.widget.container.component.js +585 -584
- package/esm5/lib/ra.base.dashboard.filter.js +82 -81
- package/esm5/lib/ra.base.dashboard.template.js +75 -74
- package/esm5/lib/ra.dashbard.event.bus.js +126 -125
- package/esm5/lib/ra.dashboard.module.js +56 -55
- package/esm5/lib/ra.dashboard.service.js +222 -221
- package/esm5/lib/ra.event.enum.js +52 -51
- package/esm5/lib/ra.gridster.config.js +68 -67
- package/esm5/public-api.js +17 -16
- package/esm5/schneideress-dashboardframework.js +15 -14
- package/fesm2015/schneideress-dashboardframework.js +6147 -6117
- package/fesm2015/schneideress-dashboardframework.js.map +1 -1
- package/fesm5/schneideress-dashboardframework.js +7044 -7014
- package/fesm5/schneideress-dashboardframework.js.map +1 -1
- package/gridster/index.d.ts +11 -11
- package/gridster/lib/gridster.component.d.ts +67 -67
- package/gridster/lib/gridster.interface.d.ts +46 -46
- package/gridster/lib/gridster.module.d.ts +2 -2
- package/gridster/lib/gridsterCompact.service.d.ts +15 -15
- package/gridster/lib/gridsterConfig.constant.d.ts +2 -2
- package/gridster/lib/gridsterConfig.interface.d.ts +133 -133
- package/gridster/lib/gridsterConfigS.interface.d.ts +93 -93
- package/gridster/lib/gridsterDraggable.service.d.ts +59 -59
- package/gridster/lib/gridsterEmptyCell.service.d.ts +29 -29
- package/gridster/lib/gridsterItem.component.d.ts +32 -32
- package/gridster/lib/gridsterItem.interface.d.ts +21 -21
- package/gridster/lib/gridsterItemComponent.interface.d.ts +25 -25
- package/gridster/lib/gridsterPreview.component.d.ts +10 -10
- package/gridster/lib/gridsterPush.service.d.ts +33 -33
- package/gridster/lib/gridsterPushResize.service.d.ts +26 -26
- package/gridster/lib/gridsterRenderer.service.d.ts +38 -38
- package/gridster/lib/gridsterResizable.service.d.ts +67 -67
- package/gridster/lib/gridsterResizeEventType.interface.d.ts +6 -6
- package/gridster/lib/gridsterScroll.service.d.ts +4 -4
- package/gridster/lib/gridsterSwap.service.d.ts +13 -13
- package/gridster/lib/gridsterUtils.service.d.ts +16 -16
- package/lib/custom.notifier.options.d.ts +2 -2
- package/lib/ra-dashboard-area/ra.dashboard.area.d.ts +64 -64
- package/lib/ra-widget-container/ra.widget.container.component.d.ts +64 -64
- package/lib/ra.base.dashboard.filter.d.ts +10 -10
- package/lib/ra.base.dashboard.template.d.ts +15 -15
- package/lib/ra.dashbard.event.bus.d.ts +20 -20
- package/lib/ra.dashboard.module.d.ts +2 -2
- package/lib/ra.dashboard.service.d.ts +22 -22
- package/lib/ra.event.enum.d.ts +42 -42
- package/lib/ra.gridster.config.d.ts +2 -2
- package/package.json +1 -1
- package/public-api.d.ts +8 -8
- package/schneideress-dashboardframework.d.ts +9 -9
- package/schneideress-dashboardframework.metadata.json +1 -1
|
@@ -1,549 +1,550 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
delete this.
|
|
36
|
-
delete this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
* @
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
* @
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
case
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
e.
|
|
66
|
-
|
|
67
|
-
this.
|
|
68
|
-
this.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
_this.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.
|
|
77
|
-
this.
|
|
78
|
-
this.
|
|
79
|
-
this.
|
|
80
|
-
this.gridsterItem.renderer.
|
|
81
|
-
this.
|
|
82
|
-
this.
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
85
|
-
this.
|
|
86
|
-
this.
|
|
87
|
-
this.
|
|
88
|
-
this.
|
|
89
|
-
this.
|
|
90
|
-
this.
|
|
91
|
-
this.gridster.
|
|
92
|
-
this.
|
|
93
|
-
this.
|
|
94
|
-
this.
|
|
95
|
-
this.gridster.
|
|
96
|
-
this.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
* @
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
* @
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
e.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
this.
|
|
112
|
-
|
|
113
|
-
this.calculateItemPositionFromMousePosition(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
* @
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
* @
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
this.
|
|
127
|
-
this.
|
|
128
|
-
this.
|
|
129
|
-
this.lastMouse.
|
|
130
|
-
this.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
* @
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
* @
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
e.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
this.
|
|
152
|
-
this.
|
|
153
|
-
this.
|
|
154
|
-
this.
|
|
155
|
-
this.
|
|
156
|
-
this.
|
|
157
|
-
this.
|
|
158
|
-
this.
|
|
159
|
-
this.gridster.
|
|
160
|
-
this.
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
_this.gridster.
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
this.gridsterItem.$item.
|
|
187
|
-
this.gridsterItem.
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
&& this.
|
|
213
|
-
this.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
this.
|
|
217
|
-
this.gridsterItem.
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
this.gridsterItem.$item.
|
|
245
|
-
this.gridsterItem.$item.
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
*
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
*
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
this.gridsterItem.$item.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
this.gridsterItem.$item.
|
|
311
|
-
this.gridsterItem.$item.
|
|
312
|
-
this.gridsterItem.$item.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
// this.gridsterItem.item.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
this.
|
|
329
|
-
this.
|
|
330
|
-
this.
|
|
331
|
-
this.
|
|
332
|
-
this.
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
this.gridsterItem.
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
this.
|
|
364
|
-
this.
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
this.gridsterItem.$item.
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
this.
|
|
391
|
-
this.
|
|
392
|
-
this.
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
this.
|
|
397
|
-
this.
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
* @
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
* @
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
* @
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
{ type:
|
|
471
|
-
{ type:
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
* @
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZHN0ZXJEcmFnZ2FibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsiZ3JpZHN0ZXIvbGliL2dyaWRzdGVyRHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEU7SUF1Q0UsMkJBQVksWUFBNEMsRUFBRSxRQUFvQyxFQUFVLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBRnBILGNBQVMsR0FBNkMsS0FBSyxDQUFDO1FBRzFELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLENBQUM7Ozs7SUFFRCxtQ0FBTzs7O0lBQVA7UUFDRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElB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SUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN6RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxZQUFZ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aUJBQWlCLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQzs7Z0JBMVlGLFVBQVU7Ozs7Z0JBSEYsOEJBQThCO2dCQUM5QiwwQkFBMEI7Z0JBUGQsTUFBTTs7SUFvWjNCLHdCQUFDO0NBQUEsQUEzWUQsSUEyWUM7U0ExWVksaUJBQWlCOzs7SUFDNUIseUNBQTZDOztJQUM3QyxxQ0FBcUM7O0lBQ3JDLHNDQUdFOztJQUNGLHVDQUFtQjs7SUFDbkIsc0NBQWtCOztJQUNsQixtQ0FBZTs7SUFDZixvQ0FBZ0I7O0lBQ2hCLHFDQUFpQjs7SUFDakIsZ0NBQVk7O0lBQ1osaUNBQWE7O0lBQ2IsbUNBQWU7O0lBQ2Ysa0NBQWM7O0lBQ2Qsc0NBQWtCOztJQUNsQixzQ0FBa0I7O0lBQ2xCLDRDQUF3Qjs7SUFDeEIsNENBQXdCOztJQUN4QixvQ0FBaUI7O0lBQ2pCLDhDQUF3Qzs7SUFDeEMseUNBQW1DOztJQUNuQyw2Q0FBdUM7O0lBQ3ZDLHNDQUFvQjs7SUFDcEIsb0NBQWtCOztJQUNsQix1Q0FBcUI7O0lBQ3JCLHlDQUF1Qjs7SUFDdkIsc0NBQW9COztJQUNwQixxQ0FBbUI7O0lBQ25CLHdDQUFzQjs7SUFDdEIsc0NBQW9COztJQUNwQix1Q0FBcUI7O0lBQ3JCLGlDQUFtQjs7SUFDbkIsaUNBQW1COztJQUNuQixpQ0FBc0M7O0lBQ3RDLHNDQUE0RDs7Ozs7SUFFb0MsaUNBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEdyaWRzdGVyU3dhcCB9IGZyb20gJy4vZ3JpZHN0ZXJTd2FwLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2FuY2VsU2Nyb2xsLCBzY3JvbGwgfSBmcm9tICcuL2dyaWRzdGVyU2Nyb2xsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZHN0ZXJQdXNoIH0gZnJvbSAnLi9ncmlkc3RlclB1c2guc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkc3RlclV0aWxzIH0gZnJvbSAnLi9ncmlkc3RlclV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZHN0ZXJJdGVtQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi9ncmlkc3Rlckl0ZW1Db21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRzdGVyQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi9ncmlkc3Rlci5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR3JpZHN0ZXJEcmFnZ2FibGUge1xuICBncmlkc3Rlckl0ZW06IEdyaWRzdGVySXRlbUNvbXBvbmVudEludGVyZmFjZTtcbiAgZ3JpZHN0ZXI6IEdyaWRzdGVyQ29tcG9uZW50SW50ZXJmYWNlO1xuICBsYXN0TW91c2U6IHtcbiAgICBjbGllbnRYOiBudW1iZXIsXG4gICAgY2xpZW50WTogbnVtYmVyXG4gIH07XG4gIG9mZnNldExlZnQ6IG51bWJlcjtcbiAgb2Zmc2V0VG9wOiBudW1iZXI7XG4gIG1hcmdpbjogbnVtYmVyO1xuICBkaWZmVG9wOiBudW1iZXI7XG4gIGRpZmZMZWZ0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBwb3NpdGlvblg6IG51bWJlcjtcbiAgcG9zaXRpb25ZOiBudW1iZXI7XG4gIHBvc2l0aW9uWEJhY2t1cDogbnVtYmVyO1xuICBwb3NpdGlvbllCYWNrdXA6IG51bWJlcjtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgZHJhZ1N0YXJ0RnVuY3Rpb246IChldmVudDogYW55KSA9PiB2b2lkO1xuICBkcmFnRnVuY3Rpb246IChldmVudDogYW55KSA9PiB2b2lkO1xuICBkcmFnU3RvcEZ1bmN0aW9uOiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgbW91c2Vtb3ZlOiBGdW5jdGlvbjtcbiAgbW91c2V1cDogRnVuY3Rpb247XG4gIG1vdXNlbGVhdmU6IEZ1bmN0aW9uO1xuICBjYW5jZWxPbkJsdXI6IEZ1bmN0aW9uO1xuICB0b3VjaG1vdmU6IEZ1bmN0aW9uO1xuICB0b3VjaGVuZDogRnVuY3Rpb247XG4gIHRvdWNoY2FuY2VsOiBGdW5jdGlvbjtcbiAgbW91c2Vkb3duOiBGdW5jdGlvbjtcbiAgdG91Y2hzdGFydDogRnVuY3Rpb247XG4gIHB1c2g6IEdyaWRzdGVyUHVzaDtcbiAgc3dhcDogR3JpZHN0ZXJTd2FwO1xuICBwYXRoOiBBcnJheTx7IHg6IG51bWJlciwgeTogbnVtYmVyIH0+O1xuICBjb2xsaXNpb246IEdyaWRzdGVySXRlbUNvbXBvbmVudEludGVyZmFjZSB8IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihncmlkc3Rlckl0ZW06IEdyaWRzdGVySXRlbUNvbXBvbmVudEludGVyZmFjZSwgZ3JpZHN0ZXI6IEdyaWRzdGVyQ29tcG9uZW50SW50ZXJmYWNlLCBwcml2YXRlIHpvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtID0gZ3JpZHN0ZXJJdGVtO1xuICAgIHRoaXMuZ3JpZHN0ZXIgPSBncmlkc3RlcjtcbiAgICB0aGlzLmxhc3RNb3VzZSA9IHtcbiAgICAgIGNsaWVudFg6IDAsXG4gICAgICBjbGllbnRZOiAwXG4gICAgfTtcbiAgICB0aGlzLnBhdGggPSBbXTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ3JpZHN0ZXIucHJldmlld1N0eWxlKSB7XG4gICAgICB0aGlzLmdyaWRzdGVyLnByZXZpZXdTdHlsZSh0cnVlKTtcbiAgICB9XG4gICAgZGVsZXRlIHRoaXMuZ3JpZHN0ZXJJdGVtO1xuICAgIGRlbGV0ZSB0aGlzLmdyaWRzdGVyO1xuICAgIGRlbGV0ZSB0aGlzLmNvbGxpc2lvbjtcbiAgICBpZiAodGhpcy5tb3VzZWRvd24pIHtcbiAgICAgIHRoaXMubW91c2Vkb3duKCk7XG4gICAgICB0aGlzLnRvdWNoc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBkcmFnU3RhcnQoZTogYW55KTogdm9pZCB7XG4gICAgc3dpdGNoIChlLndoaWNoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIC8vIGxlZnQgbW91c2UgYnV0dG9uXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgY2FzZSAzOlxuICAgICAgICAvLyByaWdodCBvciBtaWRkbGUgbW91c2UgYnV0dG9uXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ncmlkc3Rlci5vcHRpb25zLmRyYWdnYWJsZSAmJiB0aGlzLmdyaWRzdGVyLm9wdGlvbnMuZHJhZ2dhYmxlLnN0YXJ0KSB7XG4gICAgICB0aGlzLmdyaWRzdGVyLm9wdGlvbnMuZHJhZ2dhYmxlLnN0YXJ0KHRoaXMuZ3JpZHN0ZXJJdGVtLml0ZW0sIHRoaXMuZ3JpZHN0ZXJJdGVtLCBlKTtcbiAgICB9XG5cbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmRyYWdGdW5jdGlvbiA9IHRoaXMuZHJhZ01vdmUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmRyYWdTdG9wRnVuY3Rpb24gPSB0aGlzLmRyYWdTdG9wLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5tb3VzZW1vdmUgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlbW92ZScsIHRoaXMuZHJhZ0Z1bmN0aW9uKTtcbiAgICAgIHRoaXMudG91Y2htb3ZlID0gdGhpcy5ncmlkc3Rlci5yZW5kZXJlci5saXN0ZW4odGhpcy5ncmlkc3Rlci5lbCwgJ3RvdWNobW92ZScsIHRoaXMuZHJhZ0Z1bmN0aW9uKTtcbiAgICB9KTtcbiAgICB0aGlzLm1vdXNldXAgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCB0aGlzLmRyYWdTdG9wRnVuY3Rpb24pO1xuICAgIHRoaXMubW91c2VsZWF2ZSA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2VsZWF2ZScsIHRoaXMuZHJhZ1N0b3BGdW5jdGlvbik7XG4gICAgdGhpcy5jYW5jZWxPbkJsdXIgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdibHVyJywgdGhpcy5kcmFnU3RvcEZ1bmN0aW9uKTtcbiAgICB0aGlzLnRvdWNoZW5kID0gdGhpcy5ncmlkc3Rlckl0ZW0ucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICd0b3VjaGVuZCcsIHRoaXMuZHJhZ1N0b3BGdW5jdGlvbik7XG4gICAgdGhpcy50b3VjaGNhbmNlbCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hjYW5jZWwnLCB0aGlzLmRyYWdTdG9wRnVuY3Rpb24pO1xuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZ3JpZHN0ZXJJdGVtLmVsLCAnZ3JpZHN0ZXItaXRlbS1tb3ZpbmcnKTtcbiAgICB0aGlzLm1hcmdpbiA9IHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMubWFyZ2luO1xuICAgIHRoaXMub2Zmc2V0TGVmdCA9IHRoaXMuZ3JpZHN0ZXIuZWwuc2Nyb2xsTGVmdCAtIHRoaXMuZ3JpZHN0ZXIuZWwub2Zmc2V0TGVmdDtcbiAgICB0aGlzLm9mZnNldFRvcCA9IHRoaXMuZ3JpZHN0ZXIuZWwuc2Nyb2xsVG9wIC0gdGhpcy5ncmlkc3Rlci5lbC5vZmZzZXRUb3A7XG4gICAgdGhpcy5sZWZ0ID0gdGhpcy5ncmlkc3Rlckl0ZW0ubGVmdCAtIHRoaXMubWFyZ2luO1xuICAgIHRoaXMudG9wID0gdGhpcy5ncmlkc3Rlckl0ZW0udG9wIC0gdGhpcy5tYXJnaW47XG4gICAgdGhpcy53aWR0aCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLndpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5ncmlkc3Rlckl0ZW0uaGVpZ2h0O1xuICAgIHRoaXMuZGlmZkxlZnQgPSBlLmNsaWVudFggKyB0aGlzLm9mZnNldExlZnQgLSB0aGlzLm1hcmdpbiAtIHRoaXMubGVmdDtcbiAgICB0aGlzLmRpZmZUb3AgPSBlLmNsaWVudFkgKyB0aGlzLm9mZnNldFRvcCAtIHRoaXMubWFyZ2luIC0gdGhpcy50b3A7XG4gICAgdGhpcy5ncmlkc3Rlci5tb3ZpbmdJdGVtID0gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW07XG4gICAgdGhpcy5ncmlkc3Rlci5wcmV2aWV3U3R5bGUodHJ1ZSk7XG4gICAgdGhpcy5wdXNoID0gbmV3IEdyaWRzdGVyUHVzaCh0aGlzLmdyaWRzdGVySXRlbSk7XG4gICAgdGhpcy5zd2FwID0gbmV3IEdyaWRzdGVyU3dhcCh0aGlzLmdyaWRzdGVySXRlbSk7XG4gICAgdGhpcy5ncmlkc3Rlci5kcmFnSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgdGhpcy5ncmlkc3Rlci51cGRhdGVHcmlkKCk7XG4gICAgdGhpcy5wYXRoLnB1c2goeyB4OiB0aGlzLmdyaWRzdGVySXRlbS5pdGVtLnggfHwgMCwgeTogdGhpcy5ncmlkc3Rlckl0ZW0uaXRlbS55IHx8IDAgfSk7XG4gIH1cblxuICBkcmFnTW92ZShlOiBhbnkpOiB2b2lkIHtcblxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIEdyaWRzdGVyVXRpbHMuY2hlY2tUb3VjaEV2ZW50KGUpO1xuICAgIHRoaXMub2Zmc2V0TGVmdCA9IHRoaXMuZ3JpZHN0ZXIuZWwuc2Nyb2xsTGVmdCAtIHRoaXMuZ3JpZHN0ZXIuZWwub2Zmc2V0TGVmdDtcbiAgICB0aGlzLm9mZnNldFRvcCA9IHRoaXMuZ3JpZHN0ZXIuZWwuc2Nyb2xsVG9wIC0gdGhpcy5ncmlkc3Rlci5lbC5vZmZzZXRUb3A7XG4gICAgc2Nyb2xsKHRoaXMuZ3JpZHN0ZXIsIHRoaXMubGVmdCwgdGhpcy50b3AsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCBlLCB0aGlzLmxhc3RNb3VzZSxcbiAgICAgIHRoaXMuY2FsY3VsYXRlSXRlbVBvc2l0aW9uRnJvbU1vdXNlUG9zaXRpb24uYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLmNhbGN1bGF0ZUl0ZW1Qb3NpdGlvbkZyb21Nb3VzZVBvc2l0aW9uKGUpO1xuICB9XG5cbiAgY2FsY3VsYXRlSXRlbVBvc2l0aW9uRnJvbU1vdXNlUG9zaXRpb24oZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5sZWZ0ID0gZS5jbGllbnRYICsgdGhpcy5vZmZzZXRMZWZ0IC0gdGhpcy5kaWZmTGVmdDtcbiAgICB0aGlzLnRvcCA9IGUuY2xpZW50WSArIHRoaXMub2Zmc2V0VG9wIC0gdGhpcy5kaWZmVG9wO1xuICAgIHRoaXMuY2FsY3VsYXRlSXRlbVBvc2l0aW9uKCk7XG4gICAgdGhpcy5sYXN0TW91c2UuY2xpZW50WCA9IGUuY2xpZW50WDtcbiAgICB0aGlzLmxhc3RNb3VzZS5jbGllbnRZID0gZS5jbGllbnRZO1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5ncmlkc3Rlci51cGRhdGVHcmlkKCk7XG4gICAgfSk7XG4gIH1cblxuICBkcmFnU3RvcChlOiBhbnkpOiB2b2lkIHtcblxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY2FuY2VsU2Nyb2xsKCk7XG4gICAgdGhpcy5jYW5jZWxPbkJsdXIoKTtcbiAgICB0aGlzLm1vdXNlbW92ZSgpO1xuICAgIHRoaXMubW91c2V1cCgpO1xuICAgIHRoaXMubW91c2VsZWF2ZSgpO1xuICAgIHRoaXMudG91Y2htb3ZlKCk7XG4gICAgdGhpcy50b3VjaGVuZCgpO1xuICAgIHRoaXMudG91Y2hjYW5jZWwoKTtcbiAgICB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmdyaWRzdGVySXRlbS5lbCwgJ2dyaWRzdGVyLWl0ZW0tbW92aW5nJyk7XG4gICAgdGhpcy5ncmlkc3Rlci5kcmFnSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuZ3JpZHN0ZXIudXBkYXRlR3JpZCgpO1xuICAgIHRoaXMucGF0aCA9IFtdO1xuICAgIGlmICh0aGlzLmdyaWRzdGVyLm9wdGlvbnMuZHJhZ2dhYmxlICYmIHRoaXMuZ3JpZHN0ZXIub3B0aW9ucy5kcmFnZ2FibGUuc3RvcCkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKHRoaXMuZ3JpZHN0ZXIub3B0aW9ucy5kcmFnZ2FibGUuc3RvcCh0aGlzLmdyaWRzdGVySXRlbS5pdGVtLCB0aGlzLmdyaWRzdGVySXRlbSwgZSkpXG4gICAgICAgIC50aGVuKHRoaXMubWFrZURyYWcuYmluZCh0aGlzKSwgdGhpcy5jYW5jZWxEcmFnLmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ha2VEcmFnKCk7XG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ3JpZHN0ZXIpIHtcbiAgICAgICAgdGhpcy5ncmlkc3Rlci5tb3ZpbmdJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5ncmlkc3Rlci5wcmV2aWV3U3R5bGUodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxEcmFnKCkge1xuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggPSB0aGlzLmdyaWRzdGVySXRlbS5pdGVtLnggfHwgMDtcbiAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS55ID0gdGhpcy5ncmlkc3Rlckl0ZW0uaXRlbS55IHx8IDA7XG4gICAgdGhpcy5ncmlkc3Rlckl0ZW0uc2V0U2l6ZSgpO1xuICAgIGlmICh0aGlzLnB1c2gpIHtcbiAgICAgIHRoaXMucHVzaC5yZXN0b3JlSXRlbXMoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3dhcCkge1xuICAgICAgdGhpcy5zd2FwLnJlc3RvcmVTd2FwSXRlbSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wdXNoKSB7XG4gICAgICB0aGlzLnB1c2guZGVzdHJveSgpO1xuICAgICAgZGVsZXRlIHRoaXMucHVzaDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3dhcCkge1xuICAgICAgdGhpcy5zd2FwLmRlc3Ryb3koKTtcbiAgICAgIGRlbGV0ZSB0aGlzLnN3YXA7XG4gICAgfVxuICB9XG5cbiAgbWFrZURyYWcoKSB7XG4gICAgaWYgKHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuZHJhZ2dhYmxlLmRyb3BPdmVySXRlbXMgJiYgdGhpcy5ncmlkc3Rlci5vcHRpb25zLmRyYWdnYWJsZVxuICAgICAgJiYgdGhpcy5ncmlkc3Rlci5vcHRpb25zLmRyYWdnYWJsZS5kcm9wT3Zlckl0ZW1zQ2FsbGJhY2tcbiAgICAgICYmIHRoaXMuY29sbGlzaW9uICYmIHRoaXMuY29sbGlzaW9uICE9PSB0cnVlICYmIHRoaXMuY29sbGlzaW9uLiRpdGVtKSB7XG4gICAgICB0aGlzLmdyaWRzdGVyLm9wdGlvbnMuZHJhZ2dhYmxlLmRyb3BPdmVySXRlbXNDYWxsYmFjayh0aGlzLmdyaWRzdGVySXRlbS5pdGVtLCB0aGlzLmNvbGxpc2lvbi5pdGVtLCB0aGlzLmdyaWRzdGVyKTtcbiAgICB9XG4gICAgdGhpcy5jb2xsaXNpb24gPSBmYWxzZTtcbiAgICB0aGlzLmdyaWRzdGVySXRlbS5zZXRTaXplKCk7XG4gICAgdGhpcy5ncmlkc3Rlckl0ZW0uY2hlY2tJdGVtQ2hhbmdlcyh0aGlzLmdyaWRzdGVySXRlbS4kaXRlbSwgdGhpcy5ncmlkc3Rlckl0ZW0uaXRlbSk7XG4gICAgaWYgKHRoaXMucHVzaCkge1xuICAgICAgdGhpcy5wdXNoLnNldFB1c2hlZEl0ZW1zKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN3YXApIHtcbiAgICAgIHRoaXMuc3dhcC5zZXRTd2FwSXRlbSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wdXNoKSB7XG4gICAgICB0aGlzLnB1c2guZGVzdHJveSgpO1xuICAgICAgZGVsZXRlIHRoaXMucHVzaDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3dhcCkge1xuICAgICAgdGhpcy5zd2FwLmRlc3Ryb3koKTtcbiAgICAgIGRlbGV0ZSB0aGlzLnN3YXA7XG4gICAgfVxuICB9XG4gIGNoZWNrZm9yYXZhaWxhYmxlU3BhY2VpbnRoZUFyZWEoKSB7XG4gICAgbGV0IGl0ZW1Sb3dzYmFja3VwID0gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ucm93cztcbiAgICBsZXQgaXRlbUNvbHNiYWNrdXAgPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzO1xuXG4gICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueCA9IHRoaXMucG9zaXRpb25YO1xuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgPSB0aGlzLnBvc2l0aW9uWTtcbiAgICAvKiogaXNDb2xsaWRlID0gMiAtIG5vIGNvbGxpc2lvbiAgKi9cbiAgICB2YXIgaXNDb2xsaWRlID0gMTtcblxuICAgIC8qKiBUbyBpdGVyYXRlIG92ZXIgdGhlIHdpZHRoIG9mIHRoZSBncmlkc3RlciBpVGVtIGFuZCB0byBjaGVjayBmb3IgY29sbGlzaW9uICovXG4gICAgZG8ge1xuXG4gICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5yb3dzID0gaXRlbVJvd3NiYWNrdXA7XG5cbiAgICAgIC8qKiBUbyBpdGVyYXRlIG92ZXIgdGhlIGhlaWdodCBvZiB0aGUgZ3JpZHN0ZXIgSXRlbSBhbmQgY2hlY2sgZm9yIGNvbGxpc2lvbiAqL1xuICAgICAgZm9yIChsZXQgcm93Y291bnQgPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5yb3dzOyByb3djb3VudCA+PSAxNTsgcm93Y291bnQtLSkge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZHN0ZXIuY2hlY2tDb2xsaXNpb24odGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0pKSB7XG4gICAgICAgICAgaXNDb2xsaWRlID0gMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgLyoqIGhhcyBjb2xsaXNpb24gLSAgY2hlY2sgd2l0aCB4LTEgcG9zaXRpb24gYW5kKi9cbiAgICAgICAgICBsZXQgcm93Ymt1cCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLng7XG4gICAgICAgICAgXG4gICAgICAgICAgbGV0IGxhc3RQb3NzaWJsZVBvc2l0aW9uWD10aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54O1xuICAgICAgICAgIGRve1xuICAgICAgICAgICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggLSAxO1xuICAgICAgICAgICAgaWYoIXRoaXMuZ3JpZHN0ZXIuY2hlY2tDb2xsaXNpb24odGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0pKXtcbiAgICAgICAgICAgICAgbGFzdFBvc3NpYmxlUG9zaXRpb25YPXRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLng7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54PWxhc3RQb3NzaWJsZVBvc2l0aW9uWDtcbiAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsQ29scz10aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzO1xuICAgICAgICAgICAgICBsZXQgbGFzdFBvc3NpYmxlQ29scz10aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzO1xuICAgICAgICAgICAgICBkb3tcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzPXRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHMrMTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmdyaWRzdGVyLmNoZWNrQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKSl7XG4gICAgICAgICAgICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzPWxhc3RQb3NzaWJsZUNvbHM7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICAgIGxhc3RQb3NzaWJsZUNvbHM9dGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0uY29scztcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHdoaWxlKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHMtb3JpZ2luYWxDb2xzIDwxNSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSh0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54PjApXG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKHRoaXMuZ3JpZHN0ZXIuY2hlY2tDb2xsaXNpb24odGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0pKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5yb3dzID0gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ucm93cyAtIDE7XG4gICAgICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54ID0gcm93Ymt1cDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGlzQ29sbGlkZSA9IDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbGxpZGUgPT0gMikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHMgPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzIC0gMTtcblxuICAgIH1cbiAgICB3aGlsZSAodGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0uY29scyA+PSAxNSk7XG4gICAgLy8gd2hpbGUgKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnJvd3M+PTE1IHx8IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHM+PTE1KTtcbiAgICBpZiAoaXNDb2xsaWRlID09IDEpIHtcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggPSB0aGlzLnBvc2l0aW9uWEJhY2t1cDtcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgPSB0aGlzLnBvc2l0aW9uWUJhY2t1cDtcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHMgPSBpdGVtQ29sc2JhY2t1cDtcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnJvd3MgPSBpdGVtUm93c2JhY2t1cDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyB0aGlzLmdyaWRzdGVySXRlbS5pdGVtLnJvd3M9dGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ucm93cztcbiAgICAgIC8vIHRoaXMuZ3JpZHN0ZXJJdGVtLml0ZW0uY29scz10aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW07XG4gIH1cblxuICBjYWxjdWxhdGVJdGVtUG9zaXRpb24oKSB7XG4gICAgdGhpcy5ncmlkc3Rlci5tb3ZpbmdJdGVtID0gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW07XG4gICAgdGhpcy5wb3NpdGlvblggPSB0aGlzLmdyaWRzdGVyLnBpeGVsc1RvUG9zaXRpb25YKHRoaXMubGVmdCwgTWF0aC5yb3VuZCk7XG4gICAgdGhpcy5wb3NpdGlvblkgPSB0aGlzLmdyaWRzdGVyLnBpeGVsc1RvUG9zaXRpb25ZKHRoaXMudG9wLCBNYXRoLnJvdW5kKTtcblxuICAgIHRoaXMucG9zaXRpb25YQmFja3VwID0gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueDtcbiAgICB0aGlzLnBvc2l0aW9uWUJhY2t1cCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnk7XG4gICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueCA9IHRoaXMucG9zaXRpb25YO1xuXG4gICAgaWYgKHRoaXMuZ3JpZHN0ZXIuY2hlY2tHcmlkQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKSkge1xuICAgICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueCA9IHRoaXMucG9zaXRpb25YQmFja3VwO1xuICAgIH1cbiAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS55ID0gdGhpcy5wb3NpdGlvblk7XG4gICAgaWYgKHRoaXMuZ3JpZHN0ZXIuY2hlY2tHcmlkQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKSkge1xuICAgICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueSA9IHRoaXMucG9zaXRpb25ZQmFja3VwO1xuICAgIH1cbiAgICBpZiAodGhpcy5ncmlkc3Rlci5vcHRpb25zLmF1dG9SZXNpemVvbkRyYWcpIHtcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtID0gdGhpcy5jaGVja2ZvcmF2YWlsYWJsZVNwYWNlaW50aGVBcmVhKCk7XG4gICAgICB0aGlzLmdyaWRzdGVySXRlbS5zZXRTaXplKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ncmlkc3Rlci5ncmlkUmVuZGVyZXIuc2V0Q2VsbFBvc2l0aW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLCB0aGlzLmdyaWRzdGVySXRlbS5lbCwgdGhpcy5sZWZ0LCB0aGlzLnRvcCk7XG5cbiAgICBpZiAodGhpcy5wb3NpdGlvblhCYWNrdXAgIT09IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggfHwgdGhpcy5wb3NpdGlvbllCYWNrdXAgIT09IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkpIHtcbiAgICAgIGNvbnN0IGxhc3RQb3NpdGlvbiA9IHRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoIC0gMV07XG4gICAgICBsZXQgZGlyZWN0aW9uID0gJyc7XG4gICAgICBpZiAobGFzdFBvc2l0aW9uLnggPCB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54KSB7XG4gICAgICAgIGRpcmVjdGlvbiA9IHRoaXMucHVzaC5mcm9tV2VzdDtcbiAgICAgIH0gZWxzZSBpZiAobGFzdFBvc2l0aW9uLnggPiB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54KSB7XG4gICAgICAgIGRpcmVjdGlvbiA9IHRoaXMucHVzaC5mcm9tRWFzdDtcbiAgICAgIH0gZWxzZSBpZiAobGFzdFBvc2l0aW9uLnkgPCB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS55KSB7XG4gICAgICAgIGRpcmVjdGlvbiA9IHRoaXMucHVzaC5mcm9tTm9ydGg7XG4gICAgICB9IGVsc2UgaWYgKGxhc3RQb3NpdGlvbi55ID4gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueSkge1xuICAgICAgICBkaXJlY3Rpb24gPSB0aGlzLnB1c2guZnJvbVNvdXRoO1xuICAgICAgfVxuICAgICAgdGhpcy5wdXNoLnB1c2hJdGVtcyhkaXJlY3Rpb24sIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuZGlzYWJsZVB1c2hPbkRyYWcpO1xuICAgICAgdGhpcy5zd2FwLnN3YXBJdGVtcygpO1xuICAgICAgdGhpcy5jb2xsaXNpb24gPSB0aGlzLmdyaWRzdGVyLmNoZWNrQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKTtcbiAgICAgIGlmICh0aGlzLmNvbGxpc2lvbikge1xuICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54ID0gdGhpcy5wb3NpdGlvblhCYWNrdXA7XG4gICAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgPSB0aGlzLnBvc2l0aW9uWUJhY2t1cDtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuZHJhZ2dhYmxlLmRyb3BPdmVySXRlbXMgJiYgdGhpcy5jb2xsaXNpb24gIT09IHRydWUgJiYgdGhpcy5jb2xsaXNpb24uJGl0ZW0pIHtcbiAgICAgICAgICB0aGlzLmdyaWRzdGVyLm1vdmluZ0l0ZW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhdGgucHVzaCh7IHg6IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLngsIHk6IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnB1c2guY2hlY2tQdXNoQmFjaygpO1xuICAgIH1cbiAgICB0aGlzLmdyaWRzdGVyLnByZXZpZXdTdHlsZSh0cnVlKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBjb25zdCBlbmFibGVEcmFnID0gdGhpcy5ncmlkc3Rlckl0ZW0uY2FuQmVEcmFnZ2VkKCk7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQgJiYgZW5hYmxlRHJhZykge1xuICAgICAgdGhpcy5lbmFibGVkID0gIXRoaXMuZW5hYmxlZDtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0RnVuY3Rpb24gPSB0aGlzLmRyYWdTdGFydERlbGF5LmJpbmQodGhpcyk7XG4gICAgICB0aGlzLm1vdXNlZG93biA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmdyaWRzdGVySXRlbS5lbCwgJ21vdXNlZG93bicsIHRoaXMuZHJhZ1N0YXJ0RnVuY3Rpb24pO1xuICAgICAgdGhpcy50b3VjaHN0YXJ0ID0gdGhpcy5ncmlkc3Rlckl0ZW0ucmVuZGVyZXIubGlzdGVuKHRoaXMuZ3JpZHN0ZXJJdGVtLmVsLCAndG91Y2hzdGFydCcsIHRoaXMuZHJhZ1N0YXJ0RnVuY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5lbmFibGVkICYmICFlbmFibGVEcmFnKSB7XG4gICAgICB0aGlzLmVuYWJsZWQgPSAhdGhpcy5lbmFibGVkO1xuICAgICAgdGhpcy5tb3VzZWRvd24oKTtcbiAgICAgIHRoaXMudG91Y2hzdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdTdGFydERlbGF5KGU6IGFueSk6IHZvaWQge1xuICAgIGlmIChlLnRhcmdldC5oYXNBdHRyaWJ1dGUoJ2NsYXNzJykgJiYgZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdjbGFzcycpLnNwbGl0KCcgJykuaW5kZXhPZignZ3JpZHN0ZXItaXRlbS1yZXNpemFibGUtaGFuZGxlcicpID4gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKEdyaWRzdGVyVXRpbHMuY2hlY2tDb250ZW50Q2xhc3NGb3JFdmVudCh0aGlzLmdyaWRzdGVyLCBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBHcmlkc3RlclV0aWxzLmNoZWNrVG91Y2hFdmVudChlKTtcbiAgICBpZiAoIXRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMuZHJhZ2dhYmxlLmRlbGF5U3RhcnQpIHtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0KGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRyYWdTdGFydChlKTtcbiAgICAgIGNhbmNlbERyYWcoKTtcbiAgICB9LCB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmRyYWdnYWJsZS5kZWxheVN0YXJ0KTtcbiAgICBjb25zdCBjYW5jZWxNb3VzZSA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2V1cCcsIGNhbmNlbERyYWcpO1xuICAgIGNvbnN0IGNhbmNlbE1vdXNlTGVhdmUgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlbGVhdmUnLCBjYW5jZWxEcmFnKTtcbiAgICBjb25zdCBjYW5jZWxPbkJsdXIgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdibHVyJywgY2FuY2VsRHJhZyk7XG4gICAgY29uc3QgY2FuY2VsVG91Y2hNb3ZlID0gdGhpcy5ncmlkc3Rlckl0ZW0ucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICd0b3VjaG1vdmUnLCBjYW5jZWxNb3ZlKTtcbiAgICBjb25zdCBjYW5jZWxUb3VjaEVuZCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hlbmQnLCBjYW5jZWxEcmFnKTtcbiAgICBjb25zdCBjYW5jZWxUb3VjaENhbmNlbCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hjYW5jZWwnLCBjYW5jZWxEcmFnKTtcblxuICAgIGZ1bmN0aW9uIGNhbmNlbE1vdmUoZXZlbnRNb3ZlOiBhbnkpIHtcbiAgICAgIEdyaWRzdGVyVXRpbHMuY2hlY2tUb3VjaEV2ZW50KGV2ZW50TW92ZSk7XG4gICAgICBpZiAoTWF0aC5hYnMoZXZlbnRNb3ZlLmNsaWVudFggLSBlLmNsaWVudFgpID4gOSB8fCBNYXRoLmFicyhldmVudE1vdmUuY2xpZW50WSAtIGUuY2xpZW50WSkgPiA5KSB7XG4gICAgICAgIGNhbmNlbERyYWcoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYW5jZWxEcmFnKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgY2FuY2VsT25CbHVyKCk7XG4gICAgICBjYW5jZWxNb3VzZSgpO1xuICAgICAgY2FuY2VsTW91c2VMZWF2ZSgpO1xuICAgICAgY2FuY2VsVG91Y2hNb3ZlKCk7XG4gICAgICBjYW5jZWxUb3VjaEVuZCgpO1xuICAgICAgY2FuY2VsVG91Y2hDYW5jZWwoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* Generated from: gridster/lib/gridsterDraggable.service.ts
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
+
*/
|
|
6
|
+
import { Injectable, NgZone } from '@angular/core';
|
|
7
|
+
import { GridsterSwap } from './gridsterSwap.service';
|
|
8
|
+
import { cancelScroll, scroll } from './gridsterScroll.service';
|
|
9
|
+
import { GridsterPush } from './gridsterPush.service';
|
|
10
|
+
import { GridsterUtils } from './gridsterUtils.service';
|
|
11
|
+
import { GridsterItemComponentInterface } from './gridsterItemComponent.interface';
|
|
12
|
+
import { GridsterComponentInterface } from './gridster.interface';
|
|
13
|
+
var GridsterDraggable = /** @class */ (function () {
|
|
14
|
+
function GridsterDraggable(gridsterItem, gridster, zone) {
|
|
15
|
+
this.zone = zone;
|
|
16
|
+
this.collision = false;
|
|
17
|
+
this.gridsterItem = gridsterItem;
|
|
18
|
+
this.gridster = gridster;
|
|
19
|
+
this.lastMouse = {
|
|
20
|
+
clientX: 0,
|
|
21
|
+
clientY: 0
|
|
22
|
+
};
|
|
23
|
+
this.path = [];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @return {?}
|
|
27
|
+
*/
|
|
28
|
+
GridsterDraggable.prototype.destroy = /**
|
|
29
|
+
* @return {?}
|
|
30
|
+
*/
|
|
31
|
+
function () {
|
|
32
|
+
if (this.gridster.previewStyle) {
|
|
33
|
+
this.gridster.previewStyle(true);
|
|
34
|
+
}
|
|
35
|
+
delete this.gridsterItem;
|
|
36
|
+
delete this.gridster;
|
|
37
|
+
delete this.collision;
|
|
38
|
+
if (this.mousedown) {
|
|
39
|
+
this.mousedown();
|
|
40
|
+
this.touchstart();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* @param {?} e
|
|
45
|
+
* @return {?}
|
|
46
|
+
*/
|
|
47
|
+
GridsterDraggable.prototype.dragStart = /**
|
|
48
|
+
* @param {?} e
|
|
49
|
+
* @return {?}
|
|
50
|
+
*/
|
|
51
|
+
function (e) {
|
|
52
|
+
var _this = this;
|
|
53
|
+
switch (e.which) {
|
|
54
|
+
case 1:
|
|
55
|
+
// left mouse button
|
|
56
|
+
break;
|
|
57
|
+
case 2:
|
|
58
|
+
case 3:
|
|
59
|
+
// right or middle mouse button
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (this.gridster.options.draggable && this.gridster.options.draggable.start) {
|
|
63
|
+
this.gridster.options.draggable.start(this.gridsterItem.item, this.gridsterItem, e);
|
|
64
|
+
}
|
|
65
|
+
e.stopPropagation();
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
this.dragFunction = this.dragMove.bind(this);
|
|
68
|
+
this.dragStopFunction = this.dragStop.bind(this);
|
|
69
|
+
this.zone.runOutsideAngular((/**
|
|
70
|
+
* @return {?}
|
|
71
|
+
*/
|
|
72
|
+
function () {
|
|
73
|
+
_this.mousemove = _this.gridsterItem.renderer.listen('document', 'mousemove', _this.dragFunction);
|
|
74
|
+
_this.touchmove = _this.gridster.renderer.listen(_this.gridster.el, 'touchmove', _this.dragFunction);
|
|
75
|
+
}));
|
|
76
|
+
this.mouseup = this.gridsterItem.renderer.listen('document', 'mouseup', this.dragStopFunction);
|
|
77
|
+
this.mouseleave = this.gridsterItem.renderer.listen('document', 'mouseleave', this.dragStopFunction);
|
|
78
|
+
this.cancelOnBlur = this.gridsterItem.renderer.listen('window', 'blur', this.dragStopFunction);
|
|
79
|
+
this.touchend = this.gridsterItem.renderer.listen('document', 'touchend', this.dragStopFunction);
|
|
80
|
+
this.touchcancel = this.gridsterItem.renderer.listen('document', 'touchcancel', this.dragStopFunction);
|
|
81
|
+
this.gridsterItem.renderer.addClass(this.gridsterItem.el, 'gridster-item-moving');
|
|
82
|
+
this.margin = this.gridster.$options.margin;
|
|
83
|
+
this.offsetLeft = this.gridster.el.scrollLeft - this.gridster.el.offsetLeft;
|
|
84
|
+
this.offsetTop = this.gridster.el.scrollTop - this.gridster.el.offsetTop;
|
|
85
|
+
this.left = this.gridsterItem.left - this.margin;
|
|
86
|
+
this.top = this.gridsterItem.top - this.margin;
|
|
87
|
+
this.width = this.gridsterItem.width;
|
|
88
|
+
this.height = this.gridsterItem.height;
|
|
89
|
+
this.diffLeft = e.clientX + this.offsetLeft - this.margin - this.left;
|
|
90
|
+
this.diffTop = e.clientY + this.offsetTop - this.margin - this.top;
|
|
91
|
+
this.gridster.movingItem = this.gridsterItem.$item;
|
|
92
|
+
this.gridster.previewStyle(true);
|
|
93
|
+
this.push = new GridsterPush(this.gridsterItem);
|
|
94
|
+
this.swap = new GridsterSwap(this.gridsterItem);
|
|
95
|
+
this.gridster.dragInProgress = true;
|
|
96
|
+
this.gridster.updateGrid();
|
|
97
|
+
this.path.push({ x: this.gridsterItem.item.x || 0, y: this.gridsterItem.item.y || 0 });
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* @param {?} e
|
|
101
|
+
* @return {?}
|
|
102
|
+
*/
|
|
103
|
+
GridsterDraggable.prototype.dragMove = /**
|
|
104
|
+
* @param {?} e
|
|
105
|
+
* @return {?}
|
|
106
|
+
*/
|
|
107
|
+
function (e) {
|
|
108
|
+
e.stopPropagation();
|
|
109
|
+
e.preventDefault();
|
|
110
|
+
GridsterUtils.checkTouchEvent(e);
|
|
111
|
+
this.offsetLeft = this.gridster.el.scrollLeft - this.gridster.el.offsetLeft;
|
|
112
|
+
this.offsetTop = this.gridster.el.scrollTop - this.gridster.el.offsetTop;
|
|
113
|
+
scroll(this.gridster, this.left, this.top, this.width, this.height, e, this.lastMouse, this.calculateItemPositionFromMousePosition.bind(this));
|
|
114
|
+
this.calculateItemPositionFromMousePosition(e);
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* @param {?} e
|
|
118
|
+
* @return {?}
|
|
119
|
+
*/
|
|
120
|
+
GridsterDraggable.prototype.calculateItemPositionFromMousePosition = /**
|
|
121
|
+
* @param {?} e
|
|
122
|
+
* @return {?}
|
|
123
|
+
*/
|
|
124
|
+
function (e) {
|
|
125
|
+
var _this = this;
|
|
126
|
+
this.left = e.clientX + this.offsetLeft - this.diffLeft;
|
|
127
|
+
this.top = e.clientY + this.offsetTop - this.diffTop;
|
|
128
|
+
this.calculateItemPosition();
|
|
129
|
+
this.lastMouse.clientX = e.clientX;
|
|
130
|
+
this.lastMouse.clientY = e.clientY;
|
|
131
|
+
this.zone.run((/**
|
|
132
|
+
* @return {?}
|
|
133
|
+
*/
|
|
134
|
+
function () {
|
|
135
|
+
_this.gridster.updateGrid();
|
|
136
|
+
}));
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* @param {?} e
|
|
140
|
+
* @return {?}
|
|
141
|
+
*/
|
|
142
|
+
GridsterDraggable.prototype.dragStop = /**
|
|
143
|
+
* @param {?} e
|
|
144
|
+
* @return {?}
|
|
145
|
+
*/
|
|
146
|
+
function (e) {
|
|
147
|
+
var _this = this;
|
|
148
|
+
e.stopPropagation();
|
|
149
|
+
e.preventDefault();
|
|
150
|
+
cancelScroll();
|
|
151
|
+
this.cancelOnBlur();
|
|
152
|
+
this.mousemove();
|
|
153
|
+
this.mouseup();
|
|
154
|
+
this.mouseleave();
|
|
155
|
+
this.touchmove();
|
|
156
|
+
this.touchend();
|
|
157
|
+
this.touchcancel();
|
|
158
|
+
this.gridsterItem.renderer.removeClass(this.gridsterItem.el, 'gridster-item-moving');
|
|
159
|
+
this.gridster.dragInProgress = false;
|
|
160
|
+
this.gridster.updateGrid();
|
|
161
|
+
this.path = [];
|
|
162
|
+
if (this.gridster.options.draggable && this.gridster.options.draggable.stop) {
|
|
163
|
+
Promise.resolve(this.gridster.options.draggable.stop(this.gridsterItem.item, this.gridsterItem, e))
|
|
164
|
+
.then(this.makeDrag.bind(this), this.cancelDrag.bind(this));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
this.makeDrag();
|
|
168
|
+
}
|
|
169
|
+
setTimeout((/**
|
|
170
|
+
* @return {?}
|
|
171
|
+
*/
|
|
172
|
+
function () {
|
|
173
|
+
if (_this.gridster) {
|
|
174
|
+
_this.gridster.movingItem = null;
|
|
175
|
+
_this.gridster.previewStyle(true);
|
|
176
|
+
}
|
|
177
|
+
}));
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* @return {?}
|
|
181
|
+
*/
|
|
182
|
+
GridsterDraggable.prototype.cancelDrag = /**
|
|
183
|
+
* @return {?}
|
|
184
|
+
*/
|
|
185
|
+
function () {
|
|
186
|
+
this.gridsterItem.$item.x = this.gridsterItem.item.x || 0;
|
|
187
|
+
this.gridsterItem.$item.y = this.gridsterItem.item.y || 0;
|
|
188
|
+
this.gridsterItem.setSize();
|
|
189
|
+
if (this.push) {
|
|
190
|
+
this.push.restoreItems();
|
|
191
|
+
}
|
|
192
|
+
if (this.swap) {
|
|
193
|
+
this.swap.restoreSwapItem();
|
|
194
|
+
}
|
|
195
|
+
if (this.push) {
|
|
196
|
+
this.push.destroy();
|
|
197
|
+
delete this.push;
|
|
198
|
+
}
|
|
199
|
+
if (this.swap) {
|
|
200
|
+
this.swap.destroy();
|
|
201
|
+
delete this.swap;
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* @return {?}
|
|
206
|
+
*/
|
|
207
|
+
GridsterDraggable.prototype.makeDrag = /**
|
|
208
|
+
* @return {?}
|
|
209
|
+
*/
|
|
210
|
+
function () {
|
|
211
|
+
if (this.gridster.$options.draggable.dropOverItems && this.gridster.options.draggable
|
|
212
|
+
&& this.gridster.options.draggable.dropOverItemsCallback
|
|
213
|
+
&& this.collision && this.collision !== true && this.collision.$item) {
|
|
214
|
+
this.gridster.options.draggable.dropOverItemsCallback(this.gridsterItem.item, this.collision.item, this.gridster);
|
|
215
|
+
}
|
|
216
|
+
this.collision = false;
|
|
217
|
+
this.gridsterItem.setSize();
|
|
218
|
+
this.gridsterItem.checkItemChanges(this.gridsterItem.$item, this.gridsterItem.item);
|
|
219
|
+
if (this.push) {
|
|
220
|
+
this.push.setPushedItems();
|
|
221
|
+
}
|
|
222
|
+
if (this.swap) {
|
|
223
|
+
this.swap.setSwapItem();
|
|
224
|
+
}
|
|
225
|
+
if (this.push) {
|
|
226
|
+
this.push.destroy();
|
|
227
|
+
delete this.push;
|
|
228
|
+
}
|
|
229
|
+
if (this.swap) {
|
|
230
|
+
this.swap.destroy();
|
|
231
|
+
delete this.swap;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* @return {?}
|
|
236
|
+
*/
|
|
237
|
+
GridsterDraggable.prototype.checkforavailableSpaceintheArea = /**
|
|
238
|
+
* @return {?}
|
|
239
|
+
*/
|
|
240
|
+
function () {
|
|
241
|
+
/** @type {?} */
|
|
242
|
+
var itemRowsbackup = this.gridsterItem.$item.rows;
|
|
243
|
+
/** @type {?} */
|
|
244
|
+
var itemColsbackup = this.gridsterItem.$item.cols;
|
|
245
|
+
this.gridsterItem.$item.x = this.positionX;
|
|
246
|
+
this.gridsterItem.$item.y = this.positionY;
|
|
247
|
+
/**
|
|
248
|
+
* isCollide = 2 - no collision
|
|
249
|
+
* @type {?}
|
|
250
|
+
*/
|
|
251
|
+
var isCollide = 1;
|
|
252
|
+
/** To iterate over the width of the gridster iTem and to check for collision */
|
|
253
|
+
do {
|
|
254
|
+
this.gridsterItem.$item.rows = itemRowsbackup;
|
|
255
|
+
/** To iterate over the height of the gridster Item and check for collision */
|
|
256
|
+
for (var rowcount = this.gridsterItem.$item.rows; rowcount >= 15; rowcount--) {
|
|
257
|
+
if (!this.gridster.checkCollision(this.gridsterItem.$item)) {
|
|
258
|
+
isCollide = 2;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
else { /** has collision - check with x-1 position and*/
|
|
262
|
+
/**
|
|
263
|
+
* has collision - check with x-1 position and
|
|
264
|
+
* @type {?}
|
|
265
|
+
*/
|
|
266
|
+
var rowbkup = this.gridsterItem.$item.x;
|
|
267
|
+
/** @type {?} */
|
|
268
|
+
var lastPossiblePositionX = this.gridsterItem.$item.x;
|
|
269
|
+
do {
|
|
270
|
+
this.gridsterItem.$item.x = this.gridsterItem.$item.x - 1;
|
|
271
|
+
if (!this.gridster.checkCollision(this.gridsterItem.$item)) {
|
|
272
|
+
lastPossiblePositionX = this.gridsterItem.$item.x;
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
this.gridsterItem.$item.x = lastPossiblePositionX;
|
|
276
|
+
/** @type {?} */
|
|
277
|
+
var originalCols = this.gridsterItem.$item.cols;
|
|
278
|
+
/** @type {?} */
|
|
279
|
+
var lastPossibleCols = this.gridsterItem.$item.cols;
|
|
280
|
+
do {
|
|
281
|
+
this.gridsterItem.$item.cols = this.gridsterItem.$item.cols + 1;
|
|
282
|
+
if (this.gridster.checkCollision(this.gridsterItem.$item)) {
|
|
283
|
+
this.gridsterItem.$item.cols = lastPossibleCols;
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
lastPossibleCols = this.gridsterItem.$item.cols;
|
|
288
|
+
}
|
|
289
|
+
} while (this.gridsterItem.$item.cols - originalCols < 15);
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
292
|
+
} while (this.gridsterItem.$item.x > 0);
|
|
293
|
+
if (this.gridster.checkCollision(this.gridsterItem.$item)) {
|
|
294
|
+
this.gridsterItem.$item.rows = this.gridsterItem.$item.rows - 1;
|
|
295
|
+
this.gridsterItem.$item.x = rowbkup;
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
isCollide = 2;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (isCollide == 2) {
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
this.gridsterItem.$item.cols = this.gridsterItem.$item.cols - 1;
|
|
307
|
+
} while (this.gridsterItem.$item.cols >= 15);
|
|
308
|
+
// while (this.gridsterItem.$item.rows>=15 || this.gridsterItem.$item.cols>=15);
|
|
309
|
+
if (isCollide == 1) {
|
|
310
|
+
this.gridsterItem.$item.x = this.positionXBackup;
|
|
311
|
+
this.gridsterItem.$item.y = this.positionYBackup;
|
|
312
|
+
this.gridsterItem.$item.cols = itemColsbackup;
|
|
313
|
+
this.gridsterItem.$item.rows = itemRowsbackup;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// this.gridsterItem.item.rows=this.gridsterItem.$item.rows;
|
|
317
|
+
// this.gridsterItem.item.cols=this.gridsterItem.$item.cols;
|
|
318
|
+
}
|
|
319
|
+
return this.gridsterItem.$item;
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* @return {?}
|
|
323
|
+
*/
|
|
324
|
+
GridsterDraggable.prototype.calculateItemPosition = /**
|
|
325
|
+
* @return {?}
|
|
326
|
+
*/
|
|
327
|
+
function () {
|
|
328
|
+
this.gridster.movingItem = this.gridsterItem.$item;
|
|
329
|
+
this.positionX = this.gridster.pixelsToPositionX(this.left, Math.round);
|
|
330
|
+
this.positionY = this.gridster.pixelsToPositionY(this.top, Math.round);
|
|
331
|
+
this.positionXBackup = this.gridsterItem.$item.x;
|
|
332
|
+
this.positionYBackup = this.gridsterItem.$item.y;
|
|
333
|
+
this.gridsterItem.$item.x = this.positionX;
|
|
334
|
+
if (this.gridster.checkGridCollision(this.gridsterItem.$item)) {
|
|
335
|
+
this.gridsterItem.$item.x = this.positionXBackup;
|
|
336
|
+
}
|
|
337
|
+
this.gridsterItem.$item.y = this.positionY;
|
|
338
|
+
if (this.gridster.checkGridCollision(this.gridsterItem.$item)) {
|
|
339
|
+
this.gridsterItem.$item.y = this.positionYBackup;
|
|
340
|
+
}
|
|
341
|
+
if (this.gridster.options.autoResizeonDrag) {
|
|
342
|
+
this.gridsterItem.$item = this.checkforavailableSpaceintheArea();
|
|
343
|
+
this.gridsterItem.setSize();
|
|
344
|
+
}
|
|
345
|
+
this.gridster.gridRenderer.setCellPosition(this.gridsterItem.renderer, this.gridsterItem.el, this.left, this.top);
|
|
346
|
+
if (this.positionXBackup !== this.gridsterItem.$item.x || this.positionYBackup !== this.gridsterItem.$item.y) {
|
|
347
|
+
/** @type {?} */
|
|
348
|
+
var lastPosition = this.path[this.path.length - 1];
|
|
349
|
+
/** @type {?} */
|
|
350
|
+
var direction = '';
|
|
351
|
+
if (lastPosition.x < this.gridsterItem.$item.x) {
|
|
352
|
+
direction = this.push.fromWest;
|
|
353
|
+
}
|
|
354
|
+
else if (lastPosition.x > this.gridsterItem.$item.x) {
|
|
355
|
+
direction = this.push.fromEast;
|
|
356
|
+
}
|
|
357
|
+
else if (lastPosition.y < this.gridsterItem.$item.y) {
|
|
358
|
+
direction = this.push.fromNorth;
|
|
359
|
+
}
|
|
360
|
+
else if (lastPosition.y > this.gridsterItem.$item.y) {
|
|
361
|
+
direction = this.push.fromSouth;
|
|
362
|
+
}
|
|
363
|
+
this.push.pushItems(direction, this.gridster.$options.disablePushOnDrag);
|
|
364
|
+
this.swap.swapItems();
|
|
365
|
+
this.collision = this.gridster.checkCollision(this.gridsterItem.$item);
|
|
366
|
+
if (this.collision) {
|
|
367
|
+
this.gridsterItem.$item.x = this.positionXBackup;
|
|
368
|
+
this.gridsterItem.$item.y = this.positionYBackup;
|
|
369
|
+
if (this.gridster.$options.draggable.dropOverItems && this.collision !== true && this.collision.$item) {
|
|
370
|
+
this.gridster.movingItem = null;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
this.path.push({ x: this.gridsterItem.$item.x, y: this.gridsterItem.$item.y });
|
|
375
|
+
}
|
|
376
|
+
this.push.checkPushBack();
|
|
377
|
+
}
|
|
378
|
+
this.gridster.previewStyle(true);
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* @return {?}
|
|
382
|
+
*/
|
|
383
|
+
GridsterDraggable.prototype.toggle = /**
|
|
384
|
+
* @return {?}
|
|
385
|
+
*/
|
|
386
|
+
function () {
|
|
387
|
+
/** @type {?} */
|
|
388
|
+
var enableDrag = this.gridsterItem.canBeDragged();
|
|
389
|
+
if (!this.enabled && enableDrag) {
|
|
390
|
+
this.enabled = !this.enabled;
|
|
391
|
+
this.dragStartFunction = this.dragStartDelay.bind(this);
|
|
392
|
+
this.mousedown = this.gridsterItem.renderer.listen(this.gridsterItem.el, 'mousedown', this.dragStartFunction);
|
|
393
|
+
this.touchstart = this.gridsterItem.renderer.listen(this.gridsterItem.el, 'touchstart', this.dragStartFunction);
|
|
394
|
+
}
|
|
395
|
+
else if (this.enabled && !enableDrag) {
|
|
396
|
+
this.enabled = !this.enabled;
|
|
397
|
+
this.mousedown();
|
|
398
|
+
this.touchstart();
|
|
399
|
+
}
|
|
400
|
+
};
|
|
401
|
+
/**
|
|
402
|
+
* @param {?} e
|
|
403
|
+
* @return {?}
|
|
404
|
+
*/
|
|
405
|
+
GridsterDraggable.prototype.dragStartDelay = /**
|
|
406
|
+
* @param {?} e
|
|
407
|
+
* @return {?}
|
|
408
|
+
*/
|
|
409
|
+
function (e) {
|
|
410
|
+
var _this = this;
|
|
411
|
+
if (e.target.hasAttribute('class') && e.target.getAttribute('class').split(' ').indexOf('gridster-item-resizable-handler') > -1) {
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
if (GridsterUtils.checkContentClassForEvent(this.gridster, e)) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
GridsterUtils.checkTouchEvent(e);
|
|
418
|
+
if (!this.gridster.$options.draggable.delayStart) {
|
|
419
|
+
this.dragStart(e);
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
/** @type {?} */
|
|
423
|
+
var timeout = setTimeout((/**
|
|
424
|
+
* @return {?}
|
|
425
|
+
*/
|
|
426
|
+
function () {
|
|
427
|
+
_this.dragStart(e);
|
|
428
|
+
cancelDrag();
|
|
429
|
+
}), this.gridster.$options.draggable.delayStart);
|
|
430
|
+
/** @type {?} */
|
|
431
|
+
var cancelMouse = this.gridsterItem.renderer.listen('document', 'mouseup', cancelDrag);
|
|
432
|
+
/** @type {?} */
|
|
433
|
+
var cancelMouseLeave = this.gridsterItem.renderer.listen('document', 'mouseleave', cancelDrag);
|
|
434
|
+
/** @type {?} */
|
|
435
|
+
var cancelOnBlur = this.gridsterItem.renderer.listen('window', 'blur', cancelDrag);
|
|
436
|
+
/** @type {?} */
|
|
437
|
+
var cancelTouchMove = this.gridsterItem.renderer.listen('document', 'touchmove', cancelMove);
|
|
438
|
+
/** @type {?} */
|
|
439
|
+
var cancelTouchEnd = this.gridsterItem.renderer.listen('document', 'touchend', cancelDrag);
|
|
440
|
+
/** @type {?} */
|
|
441
|
+
var cancelTouchCancel = this.gridsterItem.renderer.listen('document', 'touchcancel', cancelDrag);
|
|
442
|
+
/**
|
|
443
|
+
* @param {?} eventMove
|
|
444
|
+
* @return {?}
|
|
445
|
+
*/
|
|
446
|
+
function cancelMove(eventMove) {
|
|
447
|
+
GridsterUtils.checkTouchEvent(eventMove);
|
|
448
|
+
if (Math.abs(eventMove.clientX - e.clientX) > 9 || Math.abs(eventMove.clientY - e.clientY) > 9) {
|
|
449
|
+
cancelDrag();
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* @return {?}
|
|
454
|
+
*/
|
|
455
|
+
function cancelDrag() {
|
|
456
|
+
clearTimeout(timeout);
|
|
457
|
+
cancelOnBlur();
|
|
458
|
+
cancelMouse();
|
|
459
|
+
cancelMouseLeave();
|
|
460
|
+
cancelTouchMove();
|
|
461
|
+
cancelTouchEnd();
|
|
462
|
+
cancelTouchCancel();
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
GridsterDraggable.decorators = [
|
|
466
|
+
{ type: Injectable }
|
|
467
|
+
];
|
|
468
|
+
/** @nocollapse */
|
|
469
|
+
GridsterDraggable.ctorParameters = function () { return [
|
|
470
|
+
{ type: GridsterItemComponentInterface },
|
|
471
|
+
{ type: GridsterComponentInterface },
|
|
472
|
+
{ type: NgZone }
|
|
473
|
+
]; };
|
|
474
|
+
return GridsterDraggable;
|
|
475
|
+
}());
|
|
476
|
+
export { GridsterDraggable };
|
|
477
|
+
if (false) {
|
|
478
|
+
/** @type {?} */
|
|
479
|
+
GridsterDraggable.prototype.gridsterItem;
|
|
480
|
+
/** @type {?} */
|
|
481
|
+
GridsterDraggable.prototype.gridster;
|
|
482
|
+
/** @type {?} */
|
|
483
|
+
GridsterDraggable.prototype.lastMouse;
|
|
484
|
+
/** @type {?} */
|
|
485
|
+
GridsterDraggable.prototype.offsetLeft;
|
|
486
|
+
/** @type {?} */
|
|
487
|
+
GridsterDraggable.prototype.offsetTop;
|
|
488
|
+
/** @type {?} */
|
|
489
|
+
GridsterDraggable.prototype.margin;
|
|
490
|
+
/** @type {?} */
|
|
491
|
+
GridsterDraggable.prototype.diffTop;
|
|
492
|
+
/** @type {?} */
|
|
493
|
+
GridsterDraggable.prototype.diffLeft;
|
|
494
|
+
/** @type {?} */
|
|
495
|
+
GridsterDraggable.prototype.top;
|
|
496
|
+
/** @type {?} */
|
|
497
|
+
GridsterDraggable.prototype.left;
|
|
498
|
+
/** @type {?} */
|
|
499
|
+
GridsterDraggable.prototype.height;
|
|
500
|
+
/** @type {?} */
|
|
501
|
+
GridsterDraggable.prototype.width;
|
|
502
|
+
/** @type {?} */
|
|
503
|
+
GridsterDraggable.prototype.positionX;
|
|
504
|
+
/** @type {?} */
|
|
505
|
+
GridsterDraggable.prototype.positionY;
|
|
506
|
+
/** @type {?} */
|
|
507
|
+
GridsterDraggable.prototype.positionXBackup;
|
|
508
|
+
/** @type {?} */
|
|
509
|
+
GridsterDraggable.prototype.positionYBackup;
|
|
510
|
+
/** @type {?} */
|
|
511
|
+
GridsterDraggable.prototype.enabled;
|
|
512
|
+
/** @type {?} */
|
|
513
|
+
GridsterDraggable.prototype.dragStartFunction;
|
|
514
|
+
/** @type {?} */
|
|
515
|
+
GridsterDraggable.prototype.dragFunction;
|
|
516
|
+
/** @type {?} */
|
|
517
|
+
GridsterDraggable.prototype.dragStopFunction;
|
|
518
|
+
/** @type {?} */
|
|
519
|
+
GridsterDraggable.prototype.mousemove;
|
|
520
|
+
/** @type {?} */
|
|
521
|
+
GridsterDraggable.prototype.mouseup;
|
|
522
|
+
/** @type {?} */
|
|
523
|
+
GridsterDraggable.prototype.mouseleave;
|
|
524
|
+
/** @type {?} */
|
|
525
|
+
GridsterDraggable.prototype.cancelOnBlur;
|
|
526
|
+
/** @type {?} */
|
|
527
|
+
GridsterDraggable.prototype.touchmove;
|
|
528
|
+
/** @type {?} */
|
|
529
|
+
GridsterDraggable.prototype.touchend;
|
|
530
|
+
/** @type {?} */
|
|
531
|
+
GridsterDraggable.prototype.touchcancel;
|
|
532
|
+
/** @type {?} */
|
|
533
|
+
GridsterDraggable.prototype.mousedown;
|
|
534
|
+
/** @type {?} */
|
|
535
|
+
GridsterDraggable.prototype.touchstart;
|
|
536
|
+
/** @type {?} */
|
|
537
|
+
GridsterDraggable.prototype.push;
|
|
538
|
+
/** @type {?} */
|
|
539
|
+
GridsterDraggable.prototype.swap;
|
|
540
|
+
/** @type {?} */
|
|
541
|
+
GridsterDraggable.prototype.path;
|
|
542
|
+
/** @type {?} */
|
|
543
|
+
GridsterDraggable.prototype.collision;
|
|
544
|
+
/**
|
|
545
|
+
* @type {?}
|
|
546
|
+
* @private
|
|
547
|
+
*/
|
|
548
|
+
GridsterDraggable.prototype.zone;
|
|
549
|
+
}
|
|
550
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZHN0ZXJEcmFnZ2FibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsiZ3JpZHN0ZXIvbGliL2dyaWRzdGVyRHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxFO0lBdUNFLDJCQUFZLFlBQTRDLEVBQUUsUUFBb0MsRUFBVSxJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQUZwSCxjQUFTLEdBQTZDLEtBQUssQ0FBQztRQUcxRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7O0lBRUQsbUNBQU87OztJQUFQO1FBQ0UsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJ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LGlCQUFpQixFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7O2dCQTFZRixVQUFVOzs7O2dCQUhGLDhCQUE4QjtnQkFDOUIsMEJBQTBCO2dCQVBkLE1BQU07O0lBb1ozQix3QkFBQztDQUFBLEFBM1lELElBMllDO1NBMVlZLGlCQUFpQjs7O0lBQzVCLHlDQUE2Qzs7SUFDN0MscUNBQXFDOztJQUNyQyxzQ0FHRTs7SUFDRix1Q0FBbUI7O0lBQ25CLHNDQUFrQjs7SUFDbEIsbUNBQWU7O0lBQ2Ysb0NBQWdCOztJQUNoQixxQ0FBaUI7O0lBQ2pCLGdDQUFZOztJQUNaLGlDQUFhOztJQUNiLG1DQUFlOztJQUNmLGtDQUFjOztJQUNkLHNDQUFrQjs7SUFDbEIsc0NBQWtCOztJQUNsQiw0Q0FBd0I7O0lBQ3hCLDRDQUF3Qjs7SUFDeEIsb0NBQWlCOztJQUNqQiw4Q0FBd0M7O0lBQ3hDLHlDQUFtQzs7SUFDbkMsNkNBQXVDOztJQUN2QyxzQ0FBb0I7O0lBQ3BCLG9DQUFrQjs7SUFDbEIsdUNBQXFCOztJQUNyQix5Q0FBdUI7O0lBQ3ZCLHNDQUFvQjs7SUFDcEIscUNBQW1COztJQUNuQix3Q0FBc0I7O0lBQ3RCLHNDQUFvQjs7SUFDcEIsdUNBQXFCOztJQUNyQixpQ0FBbUI7O0lBQ25CLGlDQUFtQjs7SUFDbkIsaUNBQXNDOztJQUN0QyxzQ0FBNEQ7Ozs7O0lBRW9DLGlDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgR3JpZHN0ZXJTd2FwIH0gZnJvbSAnLi9ncmlkc3RlclN3YXAuc2VydmljZSc7XHJcbmltcG9ydCB7IGNhbmNlbFNjcm9sbCwgc2Nyb2xsIH0gZnJvbSAnLi9ncmlkc3RlclNjcm9sbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3JpZHN0ZXJQdXNoIH0gZnJvbSAnLi9ncmlkc3RlclB1c2guc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRzdGVyVXRpbHMgfSBmcm9tICcuL2dyaWRzdGVyVXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRzdGVySXRlbUNvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vZ3JpZHN0ZXJJdGVtQ29tcG9uZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEdyaWRzdGVyQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi9ncmlkc3Rlci5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgR3JpZHN0ZXJEcmFnZ2FibGUge1xyXG4gIGdyaWRzdGVySXRlbTogR3JpZHN0ZXJJdGVtQ29tcG9uZW50SW50ZXJmYWNlO1xyXG4gIGdyaWRzdGVyOiBHcmlkc3RlckNvbXBvbmVudEludGVyZmFjZTtcclxuICBsYXN0TW91c2U6IHtcclxuICAgIGNsaWVudFg6IG51bWJlcixcclxuICAgIGNsaWVudFk6IG51bWJlclxyXG4gIH07XHJcbiAgb2Zmc2V0TGVmdDogbnVtYmVyO1xyXG4gIG9mZnNldFRvcDogbnVtYmVyO1xyXG4gIG1hcmdpbjogbnVtYmVyO1xyXG4gIGRpZmZUb3A6IG51bWJlcjtcclxuICBkaWZmTGVmdDogbnVtYmVyO1xyXG4gIHRvcDogbnVtYmVyO1xyXG4gIGxlZnQ6IG51bWJlcjtcclxuICBoZWlnaHQ6IG51bWJlcjtcclxuICB3aWR0aDogbnVtYmVyO1xyXG4gIHBvc2l0aW9uWDogbnVtYmVyO1xyXG4gIHBvc2l0aW9uWTogbnVtYmVyO1xyXG4gIHBvc2l0aW9uWEJhY2t1cDogbnVtYmVyO1xyXG4gIHBvc2l0aW9uWUJhY2t1cDogbnVtYmVyO1xyXG4gIGVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgZHJhZ1N0YXJ0RnVuY3Rpb246IChldmVudDogYW55KSA9PiB2b2lkO1xyXG4gIGRyYWdGdW5jdGlvbjogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XHJcbiAgZHJhZ1N0b3BGdW5jdGlvbjogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XHJcbiAgbW91c2Vtb3ZlOiBGdW5jdGlvbjtcclxuICBtb3VzZXVwOiBGdW5jdGlvbjtcclxuICBtb3VzZWxlYXZlOiBGdW5jdGlvbjtcclxuICBjYW5jZWxPbkJsdXI6IEZ1bmN0aW9uO1xyXG4gIHRvdWNobW92ZTogRnVuY3Rpb247XHJcbiAgdG91Y2hlbmQ6IEZ1bmN0aW9uO1xyXG4gIHRvdWNoY2FuY2VsOiBGdW5jdGlvbjtcclxuICBtb3VzZWRvd246IEZ1bmN0aW9uO1xyXG4gIHRvdWNoc3RhcnQ6IEZ1bmN0aW9uO1xyXG4gIHB1c2g6IEdyaWRzdGVyUHVzaDtcclxuICBzd2FwOiBHcmlkc3RlclN3YXA7XHJcbiAgcGF0aDogQXJyYXk8eyB4OiBudW1iZXIsIHk6IG51bWJlciB9PjtcclxuICBjb2xsaXNpb246IEdyaWRzdGVySXRlbUNvbXBvbmVudEludGVyZmFjZSB8IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoZ3JpZHN0ZXJJdGVtOiBHcmlkc3Rlckl0ZW1Db21wb25lbnRJbnRlcmZhY2UsIGdyaWRzdGVyOiBHcmlkc3RlckNvbXBvbmVudEludGVyZmFjZSwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcclxuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtID0gZ3JpZHN0ZXJJdGVtO1xyXG4gICAgdGhpcy5ncmlkc3RlciA9IGdyaWRzdGVyO1xyXG4gICAgdGhpcy5sYXN0TW91c2UgPSB7XHJcbiAgICAgIGNsaWVudFg6IDAsXHJcbiAgICAgIGNsaWVudFk6IDBcclxuICAgIH07XHJcbiAgICB0aGlzLnBhdGggPSBbXTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5ncmlkc3Rlci5wcmV2aWV3U3R5bGUpIHtcclxuICAgICAgdGhpcy5ncmlkc3Rlci5wcmV2aWV3U3R5bGUodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBkZWxldGUgdGhpcy5ncmlkc3Rlckl0ZW07XHJcbiAgICBkZWxldGUgdGhpcy5ncmlkc3RlcjtcclxuICAgIGRlbGV0ZSB0aGlzLmNvbGxpc2lvbjtcclxuICAgIGlmICh0aGlzLm1vdXNlZG93bikge1xyXG4gICAgICB0aGlzLm1vdXNlZG93bigpO1xyXG4gICAgICB0aGlzLnRvdWNoc3RhcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYWdTdGFydChlOiBhbnkpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZS53aGljaCkge1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgLy8gbGVmdCBtb3VzZSBidXR0b25cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgLy8gcmlnaHQgb3IgbWlkZGxlIG1vdXNlIGJ1dHRvblxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5ncmlkc3Rlci5vcHRpb25zLmRyYWdnYWJsZSAmJiB0aGlzLmdyaWRzdGVyLm9wdGlvbnMuZHJhZ2dhYmxlLnN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuZ3JpZHN0ZXIub3B0aW9ucy5kcmFnZ2FibGUuc3RhcnQodGhpcy5ncmlkc3Rlckl0ZW0uaXRlbSwgdGhpcy5ncmlkc3Rlckl0ZW0sIGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmRyYWdGdW5jdGlvbiA9IHRoaXMuZHJhZ01vdmUuYmluZCh0aGlzKTtcclxuICAgIHRoaXMuZHJhZ1N0b3BGdW5jdGlvbiA9IHRoaXMuZHJhZ1N0b3AuYmluZCh0aGlzKTtcclxuXHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLm1vdXNlbW92ZSA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2Vtb3ZlJywgdGhpcy5kcmFnRnVuY3Rpb24pO1xyXG4gICAgICB0aGlzLnRvdWNobW92ZSA9IHRoaXMuZ3JpZHN0ZXIucmVuZGVyZXIubGlzdGVuKHRoaXMuZ3JpZHN0ZXIuZWwsICd0b3VjaG1vdmUnLCB0aGlzLmRyYWdGdW5jdGlvbik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubW91c2V1cCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2V1cCcsIHRoaXMuZHJhZ1N0b3BGdW5jdGlvbik7XHJcbiAgICB0aGlzLm1vdXNlbGVhdmUgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlbGVhdmUnLCB0aGlzLmRyYWdTdG9wRnVuY3Rpb24pO1xyXG4gICAgdGhpcy5jYW5jZWxPbkJsdXIgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdibHVyJywgdGhpcy5kcmFnU3RvcEZ1bmN0aW9uKTtcclxuICAgIHRoaXMudG91Y2hlbmQgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3RvdWNoZW5kJywgdGhpcy5kcmFnU3RvcEZ1bmN0aW9uKTtcclxuICAgIHRoaXMudG91Y2hjYW5jZWwgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3RvdWNoY2FuY2VsJywgdGhpcy5kcmFnU3RvcEZ1bmN0aW9uKTtcclxuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZ3JpZHN0ZXJJdGVtLmVsLCAnZ3JpZHN0ZXItaXRlbS1tb3ZpbmcnKTtcclxuICAgIHRoaXMubWFyZ2luID0gdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5tYXJnaW47XHJcbiAgICB0aGlzLm9mZnNldExlZnQgPSB0aGlzLmdyaWRzdGVyLmVsLnNjcm9sbExlZnQgLSB0aGlzLmdyaWRzdGVyLmVsLm9mZnNldExlZnQ7XHJcbiAgICB0aGlzLm9mZnNldFRvcCA9IHRoaXMuZ3JpZHN0ZXIuZWwuc2Nyb2xsVG9wIC0gdGhpcy5ncmlkc3Rlci5lbC5vZmZzZXRUb3A7XHJcbiAgICB0aGlzLmxlZnQgPSB0aGlzLmdyaWRzdGVySXRlbS5sZWZ0IC0gdGhpcy5tYXJnaW47XHJcbiAgICB0aGlzLnRvcCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnRvcCAtIHRoaXMubWFyZ2luO1xyXG4gICAgdGhpcy53aWR0aCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLndpZHRoO1xyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLmdyaWRzdGVySXRlbS5oZWlnaHQ7XHJcbiAgICB0aGlzLmRpZmZMZWZ0ID0gZS5jbGllbnRYICsgdGhpcy5vZmZzZXRMZWZ0IC0gdGhpcy5tYXJnaW4gLSB0aGlzLmxlZnQ7XHJcbiAgICB0aGlzLmRpZmZUb3AgPSBlLmNsaWVudFkgKyB0aGlzLm9mZnNldFRvcCAtIHRoaXMubWFyZ2luIC0gdGhpcy50b3A7XHJcbiAgICB0aGlzLmdyaWRzdGVyLm1vdmluZ0l0ZW0gPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbTtcclxuICAgIHRoaXMuZ3JpZHN0ZXIucHJldmlld1N0eWxlKHRydWUpO1xyXG4gICAgdGhpcy5wdXNoID0gbmV3IEdyaWRzdGVyUHVzaCh0aGlzLmdyaWRzdGVySXRlbSk7XHJcbiAgICB0aGlzLnN3YXAgPSBuZXcgR3JpZHN0ZXJTd2FwKHRoaXMuZ3JpZHN0ZXJJdGVtKTtcclxuICAgIHRoaXMuZ3JpZHN0ZXIuZHJhZ0luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5ncmlkc3Rlci51cGRhdGVHcmlkKCk7XHJcbiAgICB0aGlzLnBhdGgucHVzaCh7IHg6IHRoaXMuZ3JpZHN0ZXJJdGVtLml0ZW0ueCB8fCAwLCB5OiB0aGlzLmdyaWRzdGVySXRlbS5pdGVtLnkgfHwgMCB9KTtcclxuICB9XHJcblxyXG4gIGRyYWdNb3ZlKGU6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBHcmlkc3RlclV0aWxzLmNoZWNrVG91Y2hFdmVudChlKTtcclxuICAgIHRoaXMub2Zmc2V0TGVmdCA9IHRoaXMuZ3JpZHN0ZXIuZWwuc2Nyb2xsTGVmdCAtIHRoaXMuZ3JpZHN0ZXIuZWwub2Zmc2V0TGVmdDtcclxuICAgIHRoaXMub2Zmc2V0VG9wID0gdGhpcy5ncmlkc3Rlci5lbC5zY3JvbGxUb3AgLSB0aGlzLmdyaWRzdGVyLmVsLm9mZnNldFRvcDtcclxuICAgIHNjcm9sbCh0aGlzLmdyaWRzdGVyLCB0aGlzLmxlZnQsIHRoaXMudG9wLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgZSwgdGhpcy5sYXN0TW91c2UsXHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlSXRlbVBvc2l0aW9uRnJvbU1vdXNlUG9zaXRpb24uYmluZCh0aGlzKSk7XHJcblxyXG4gICAgdGhpcy5jYWxjdWxhdGVJdGVtUG9zaXRpb25Gcm9tTW91c2VQb3NpdGlvbihlKTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZUl0ZW1Qb3NpdGlvbkZyb21Nb3VzZVBvc2l0aW9uKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sZWZ0ID0gZS5jbGllbnRYICsgdGhpcy5vZmZzZXRMZWZ0IC0gdGhpcy5kaWZmTGVmdDtcclxuICAgIHRoaXMudG9wID0gZS5jbGllbnRZICsgdGhpcy5vZmZzZXRUb3AgLSB0aGlzLmRpZmZUb3A7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZUl0ZW1Qb3NpdGlvbigpO1xyXG4gICAgdGhpcy5sYXN0TW91c2UuY2xpZW50WCA9IGUuY2xpZW50WDtcclxuICAgIHRoaXMubGFzdE1vdXNlLmNsaWVudFkgPSBlLmNsaWVudFk7XHJcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkc3Rlci51cGRhdGVHcmlkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRyYWdTdG9wKGU6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgY2FuY2VsU2Nyb2xsKCk7XHJcbiAgICB0aGlzLmNhbmNlbE9uQmx1cigpO1xyXG4gICAgdGhpcy5tb3VzZW1vdmUoKTtcclxuICAgIHRoaXMubW91c2V1cCgpO1xyXG4gICAgdGhpcy5tb3VzZWxlYXZlKCk7XHJcbiAgICB0aGlzLnRvdWNobW92ZSgpO1xyXG4gICAgdGhpcy50b3VjaGVuZCgpO1xyXG4gICAgdGhpcy50b3VjaGNhbmNlbCgpO1xyXG4gICAgdGhpcy5ncmlkc3Rlckl0ZW0ucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ncmlkc3Rlckl0ZW0uZWwsICdncmlkc3Rlci1pdGVtLW1vdmluZycpO1xyXG4gICAgdGhpcy5ncmlkc3Rlci5kcmFnSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5ncmlkc3Rlci51cGRhdGVHcmlkKCk7XHJcbiAgICB0aGlzLnBhdGggPSBbXTtcclxuICAgIGlmICh0aGlzLmdyaWRzdGVyLm9wdGlvbnMuZHJhZ2dhYmxlICYmIHRoaXMuZ3JpZHN0ZXIub3B0aW9ucy5kcmFnZ2FibGUuc3RvcCkge1xyXG4gICAgICBQcm9taXNlLnJlc29sdmUodGhpcy5ncmlkc3Rlci5vcHRpb25zLmRyYWdnYWJsZS5zdG9wKHRoaXMuZ3JpZHN0ZXJJdGVtLml0ZW0sIHRoaXMuZ3JpZHN0ZXJJdGVtLCBlKSlcclxuICAgICAgICAudGhlbih0aGlzLm1ha2VEcmFnLmJpbmQodGhpcyksIHRoaXMuY2FuY2VsRHJhZy5iaW5kKHRoaXMpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWFrZURyYWcoKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5ncmlkc3Rlcikge1xyXG4gICAgICAgIHRoaXMuZ3JpZHN0ZXIubW92aW5nSXRlbSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ncmlkc3Rlci5wcmV2aWV3U3R5bGUodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsRHJhZygpIHtcclxuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggPSB0aGlzLmdyaWRzdGVySXRlbS5pdGVtLnggfHwgMDtcclxuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgPSB0aGlzLmdyaWRzdGVySXRlbS5pdGVtLnkgfHwgMDtcclxuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLnNldFNpemUoKTtcclxuICAgIGlmICh0aGlzLnB1c2gpIHtcclxuICAgICAgdGhpcy5wdXNoLnJlc3RvcmVJdGVtcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3dhcCkge1xyXG4gICAgICB0aGlzLnN3YXAucmVzdG9yZVN3YXBJdGVtKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wdXNoKSB7XHJcbiAgICAgIHRoaXMucHVzaC5kZXN0cm95KCk7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLnB1c2g7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zd2FwKSB7XHJcbiAgICAgIHRoaXMuc3dhcC5kZXN0cm95KCk7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLnN3YXA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYWtlRHJhZygpIHtcclxuICAgIGlmICh0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmRyYWdnYWJsZS5kcm9wT3Zlckl0ZW1zICYmIHRoaXMuZ3JpZHN0ZXIub3B0aW9ucy5kcmFnZ2FibGVcclxuICAgICAgJiYgdGhpcy5ncmlkc3Rlci5vcHRpb25zLmRyYWdnYWJsZS5kcm9wT3Zlckl0ZW1zQ2FsbGJhY2tcclxuICAgICAgJiYgdGhpcy5jb2xsaXNpb24gJiYgdGhpcy5jb2xsaXNpb24gIT09IHRydWUgJiYgdGhpcy5jb2xsaXNpb24uJGl0ZW0pIHtcclxuICAgICAgdGhpcy5ncmlkc3Rlci5vcHRpb25zLmRyYWdnYWJsZS5kcm9wT3Zlckl0ZW1zQ2FsbGJhY2sodGhpcy5ncmlkc3Rlckl0ZW0uaXRlbSwgdGhpcy5jb2xsaXNpb24uaXRlbSwgdGhpcy5ncmlkc3Rlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbGxpc2lvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5ncmlkc3Rlckl0ZW0uc2V0U2l6ZSgpO1xyXG4gICAgdGhpcy5ncmlkc3Rlckl0ZW0uY2hlY2tJdGVtQ2hhbmdlcyh0aGlzLmdyaWRzdGVySXRlbS4kaXRlbSwgdGhpcy5ncmlkc3Rlckl0ZW0uaXRlbSk7XHJcbiAgICBpZiAodGhpcy5wdXNoKSB7XHJcbiAgICAgIHRoaXMucHVzaC5zZXRQdXNoZWRJdGVtcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3dhcCkge1xyXG4gICAgICB0aGlzLnN3YXAuc2V0U3dhcEl0ZW0oKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnB1c2gpIHtcclxuICAgICAgdGhpcy5wdXNoLmRlc3Ryb3koKTtcclxuICAgICAgZGVsZXRlIHRoaXMucHVzaDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN3YXApIHtcclxuICAgICAgdGhpcy5zd2FwLmRlc3Ryb3koKTtcclxuICAgICAgZGVsZXRlIHRoaXMuc3dhcDtcclxuICAgIH1cclxuICB9XHJcbiAgY2hlY2tmb3JhdmFpbGFibGVTcGFjZWludGhlQXJlYSgpIHtcclxuICAgIGxldCBpdGVtUm93c2JhY2t1cCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnJvd3M7XHJcbiAgICBsZXQgaXRlbUNvbHNiYWNrdXAgPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzO1xyXG5cclxuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggPSB0aGlzLnBvc2l0aW9uWDtcclxuICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgPSB0aGlzLnBvc2l0aW9uWTtcclxuICAgIC8qKiBpc0NvbGxpZGUgPSAyIC0gbm8gY29sbGlzaW9uICAqL1xyXG4gICAgdmFyIGlzQ29sbGlkZSA9IDE7XHJcblxyXG4gICAgLyoqIFRvIGl0ZXJhdGUgb3ZlciB0aGUgd2lkdGggb2YgdGhlIGdyaWRzdGVyIGlUZW0gYW5kIHRvIGNoZWNrIGZvciBjb2xsaXNpb24gKi9cclxuICAgIGRvIHtcclxuXHJcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnJvd3MgPSBpdGVtUm93c2JhY2t1cDtcclxuXHJcbiAgICAgIC8qKiBUbyBpdGVyYXRlIG92ZXIgdGhlIGhlaWdodCBvZiB0aGUgZ3JpZHN0ZXIgSXRlbSBhbmQgY2hlY2sgZm9yIGNvbGxpc2lvbiAqL1xyXG4gICAgICBmb3IgKGxldCByb3djb3VudCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnJvd3M7IHJvd2NvdW50ID49IDE1OyByb3djb3VudC0tKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyaWRzdGVyLmNoZWNrQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKSkge1xyXG4gICAgICAgICAgaXNDb2xsaWRlID0gMjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHsgLyoqIGhhcyBjb2xsaXNpb24gLSAgY2hlY2sgd2l0aCB4LTEgcG9zaXRpb24gYW5kKi9cclxuICAgICAgICAgIGxldCByb3dia3VwID0gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGxhc3RQb3NzaWJsZVBvc2l0aW9uWD10aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54O1xyXG4gICAgICAgICAgZG97XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54IC0gMTtcclxuICAgICAgICAgICAgaWYoIXRoaXMuZ3JpZHN0ZXIuY2hlY2tDb2xsaXNpb24odGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0pKXtcclxuICAgICAgICAgICAgICBsYXN0UG9zc2libGVQb3NpdGlvblg9dGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLng9bGFzdFBvc3NpYmxlUG9zaXRpb25YO1xyXG4gICAgICAgICAgICAgIGxldCBvcmlnaW5hbENvbHM9dGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0uY29scztcclxuICAgICAgICAgICAgICBsZXQgbGFzdFBvc3NpYmxlQ29scz10aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzO1xyXG4gICAgICAgICAgICAgIGRve1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0uY29scz10aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzKzE7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmdyaWRzdGVyLmNoZWNrQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKSl7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHM9bGFzdFBvc3NpYmxlQ29scztcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICBsYXN0UG9zc2libGVDb2xzPXRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHM7XHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB3aGlsZSh0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzLW9yaWdpbmFsQ29scyA8MTUpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3aGlsZSh0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54PjApXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmICh0aGlzLmdyaWRzdGVyLmNoZWNrQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKSkge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5yb3dzID0gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ucm93cyAtIDE7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggPSByb3dia3VwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaXNDb2xsaWRlID0gMjtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc0NvbGxpZGUgPT0gMikge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHMgPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzIC0gMTtcclxuXHJcbiAgICB9XHJcbiAgICB3aGlsZSAodGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0uY29scyA+PSAxNSk7XHJcbiAgICAvLyB3aGlsZSAodGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ucm93cz49MTUgfHwgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0uY29scz49MTUpO1xyXG4gICAgaWYgKGlzQ29sbGlkZSA9PSAxKSB7XHJcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnggPSB0aGlzLnBvc2l0aW9uWEJhY2t1cDtcclxuICAgICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueSA9IHRoaXMucG9zaXRpb25ZQmFja3VwO1xyXG4gICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS5jb2xzID0gaXRlbUNvbHNiYWNrdXA7XHJcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnJvd3MgPSBpdGVtUm93c2JhY2t1cDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLmdyaWRzdGVySXRlbS5pdGVtLnJvd3M9dGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ucm93cztcclxuICAgICAgLy8gdGhpcy5ncmlkc3Rlckl0ZW0uaXRlbS5jb2xzPXRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLmNvbHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW07XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVJdGVtUG9zaXRpb24oKSB7XHJcbiAgICB0aGlzLmdyaWRzdGVyLm1vdmluZ0l0ZW0gPSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbTtcclxuICAgIHRoaXMucG9zaXRpb25YID0gdGhpcy5ncmlkc3Rlci5waXhlbHNUb1Bvc2l0aW9uWCh0aGlzLmxlZnQsIE1hdGgucm91bmQpO1xyXG4gICAgdGhpcy5wb3NpdGlvblkgPSB0aGlzLmdyaWRzdGVyLnBpeGVsc1RvUG9zaXRpb25ZKHRoaXMudG9wLCBNYXRoLnJvdW5kKTtcclxuXHJcbiAgICB0aGlzLnBvc2l0aW9uWEJhY2t1cCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLng7XHJcbiAgICB0aGlzLnBvc2l0aW9uWUJhY2t1cCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnk7XHJcbiAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54ID0gdGhpcy5wb3NpdGlvblg7XHJcblxyXG4gICAgaWYgKHRoaXMuZ3JpZHN0ZXIuY2hlY2tHcmlkQ29sbGlzaW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtKSkge1xyXG4gICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54ID0gdGhpcy5wb3NpdGlvblhCYWNrdXA7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS55ID0gdGhpcy5wb3NpdGlvblk7XHJcbiAgICBpZiAodGhpcy5ncmlkc3Rlci5jaGVja0dyaWRDb2xsaXNpb24odGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0pKSB7XHJcbiAgICAgIHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgPSB0aGlzLnBvc2l0aW9uWUJhY2t1cDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyaWRzdGVyLm9wdGlvbnMuYXV0b1Jlc2l6ZW9uRHJhZykge1xyXG4gICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbSA9IHRoaXMuY2hlY2tmb3JhdmFpbGFibGVTcGFjZWludGhlQXJlYSgpO1xyXG4gICAgICB0aGlzLmdyaWRzdGVySXRlbS5zZXRTaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ncmlkc3Rlci5ncmlkUmVuZGVyZXIuc2V0Q2VsbFBvc2l0aW9uKHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLCB0aGlzLmdyaWRzdGVySXRlbS5lbCwgdGhpcy5sZWZ0LCB0aGlzLnRvcCk7XHJcblxyXG4gICAgaWYgKHRoaXMucG9zaXRpb25YQmFja3VwICE9PSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54IHx8IHRoaXMucG9zaXRpb25ZQmFja3VwICE9PSB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS55KSB7XHJcbiAgICAgIGNvbnN0IGxhc3RQb3NpdGlvbiA9IHRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoIC0gMV07XHJcbiAgICAgIGxldCBkaXJlY3Rpb24gPSAnJztcclxuICAgICAgaWYgKGxhc3RQb3NpdGlvbi54IDwgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueCkge1xyXG4gICAgICAgIGRpcmVjdGlvbiA9IHRoaXMucHVzaC5mcm9tV2VzdDtcclxuICAgICAgfSBlbHNlIGlmIChsYXN0UG9zaXRpb24ueCA+IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLngpIHtcclxuICAgICAgICBkaXJlY3Rpb24gPSB0aGlzLnB1c2guZnJvbUVhc3Q7XHJcbiAgICAgIH0gZWxzZSBpZiAobGFzdFBvc2l0aW9uLnkgPCB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS55KSB7XHJcbiAgICAgICAgZGlyZWN0aW9uID0gdGhpcy5wdXNoLmZyb21Ob3J0aDtcclxuICAgICAgfSBlbHNlIGlmIChsYXN0UG9zaXRpb24ueSA+IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkpIHtcclxuICAgICAgICBkaXJlY3Rpb24gPSB0aGlzLnB1c2guZnJvbVNvdXRoO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHVzaC5wdXNoSXRlbXMoZGlyZWN0aW9uLCB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmRpc2FibGVQdXNoT25EcmFnKTtcclxuICAgICAgdGhpcy5zd2FwLnN3YXBJdGVtcygpO1xyXG4gICAgICB0aGlzLmNvbGxpc2lvbiA9IHRoaXMuZ3JpZHN0ZXIuY2hlY2tDb2xsaXNpb24odGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0pO1xyXG4gICAgICBpZiAodGhpcy5jb2xsaXNpb24pIHtcclxuICAgICAgICB0aGlzLmdyaWRzdGVySXRlbS4kaXRlbS54ID0gdGhpcy5wb3NpdGlvblhCYWNrdXA7XHJcbiAgICAgICAgdGhpcy5ncmlkc3Rlckl0ZW0uJGl0ZW0ueSA9IHRoaXMucG9zaXRpb25ZQmFja3VwO1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmRyYWdnYWJsZS5kcm9wT3Zlckl0ZW1zICYmIHRoaXMuY29sbGlzaW9uICE9PSB0cnVlICYmIHRoaXMuY29sbGlzaW9uLiRpdGVtKSB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRzdGVyLm1vdmluZ0l0ZW0gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhdGgucHVzaCh7IHg6IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLngsIHk6IHRoaXMuZ3JpZHN0ZXJJdGVtLiRpdGVtLnkgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wdXNoLmNoZWNrUHVzaEJhY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JpZHN0ZXIucHJldmlld1N0eWxlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCkge1xyXG4gICAgY29uc3QgZW5hYmxlRHJhZyA9IHRoaXMuZ3JpZHN0ZXJJdGVtLmNhbkJlRHJhZ2dlZCgpO1xyXG4gICAgaWYgKCF0aGlzLmVuYWJsZWQgJiYgZW5hYmxlRHJhZykge1xyXG4gICAgICB0aGlzLmVuYWJsZWQgPSAhdGhpcy5lbmFibGVkO1xyXG4gICAgICB0aGlzLmRyYWdTdGFydEZ1bmN0aW9uID0gdGhpcy5kcmFnU3RhcnREZWxheS5iaW5kKHRoaXMpO1xyXG4gICAgICB0aGlzLm1vdXNlZG93biA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmdyaWRzdGVySXRlbS5lbCwgJ21vdXNlZG93bicsIHRoaXMuZHJhZ1N0YXJ0RnVuY3Rpb24pO1xyXG4gICAgICB0aGlzLnRvdWNoc3RhcnQgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4odGhpcy5ncmlkc3Rlckl0ZW0uZWwsICd0b3VjaHN0YXJ0JywgdGhpcy5kcmFnU3RhcnRGdW5jdGlvbik7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZW5hYmxlZCAmJiAhZW5hYmxlRHJhZykge1xyXG4gICAgICB0aGlzLmVuYWJsZWQgPSAhdGhpcy5lbmFibGVkO1xyXG4gICAgICB0aGlzLm1vdXNlZG93bigpO1xyXG4gICAgICB0aGlzLnRvdWNoc3RhcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYWdTdGFydERlbGF5KGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGUudGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnY2xhc3MnKSAmJiBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykuc3BsaXQoJyAnKS5pbmRleE9mKCdncmlkc3Rlci1pdGVtLXJlc2l6YWJsZS1oYW5kbGVyJykgPiAtMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoR3JpZHN0ZXJVdGlscy5jaGVja0NvbnRlbnRDbGFzc0ZvckV2ZW50KHRoaXMuZ3JpZHN0ZXIsIGUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIEdyaWRzdGVyVXRpbHMuY2hlY2tUb3VjaEV2ZW50KGUpO1xyXG4gICAgaWYgKCF0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmRyYWdnYWJsZS5kZWxheVN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0KGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0KGUpO1xyXG4gICAgICBjYW5jZWxEcmFnKCk7XHJcbiAgICB9LCB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmRyYWdnYWJsZS5kZWxheVN0YXJ0KTtcclxuICAgIGNvbnN0IGNhbmNlbE1vdXNlID0gdGhpcy5ncmlkc3Rlckl0ZW0ucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZXVwJywgY2FuY2VsRHJhZyk7XHJcbiAgICBjb25zdCBjYW5jZWxNb3VzZUxlYXZlID0gdGhpcy5ncmlkc3Rlckl0ZW0ucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZWxlYXZlJywgY2FuY2VsRHJhZyk7XHJcbiAgICBjb25zdCBjYW5jZWxPbkJsdXIgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdibHVyJywgY2FuY2VsRHJhZyk7XHJcbiAgICBjb25zdCBjYW5jZWxUb3VjaE1vdmUgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3RvdWNobW92ZScsIGNhbmNlbE1vdmUpO1xyXG4gICAgY29uc3QgY2FuY2VsVG91Y2hFbmQgPSB0aGlzLmdyaWRzdGVySXRlbS5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3RvdWNoZW5kJywgY2FuY2VsRHJhZyk7XHJcbiAgICBjb25zdCBjYW5jZWxUb3VjaENhbmNlbCA9IHRoaXMuZ3JpZHN0ZXJJdGVtLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hjYW5jZWwnLCBjYW5jZWxEcmFnKTtcclxuXHJcbiAgICBmdW5jdGlvbiBjYW5jZWxNb3ZlKGV2ZW50TW92ZTogYW55KSB7XHJcbiAgICAgIEdyaWRzdGVyVXRpbHMuY2hlY2tUb3VjaEV2ZW50KGV2ZW50TW92ZSk7XHJcbiAgICAgIGlmIChNYXRoLmFicyhldmVudE1vdmUuY2xpZW50WCAtIGUuY2xpZW50WCkgPiA5IHx8IE1hdGguYWJzKGV2ZW50TW92ZS5jbGllbnRZIC0gZS5jbGllbnRZKSA+IDkpIHtcclxuICAgICAgICBjYW5jZWxEcmFnKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjYW5jZWxEcmFnKCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIGNhbmNlbE9uQmx1cigpO1xyXG4gICAgICBjYW5jZWxNb3VzZSgpO1xyXG4gICAgICBjYW5jZWxNb3VzZUxlYXZlKCk7XHJcbiAgICAgIGNhbmNlbFRvdWNoTW92ZSgpO1xyXG4gICAgICBjYW5jZWxUb3VjaEVuZCgpO1xyXG4gICAgICBjYW5jZWxUb3VjaENhbmNlbCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|