@ngxs/router-plugin 3.7.3-dev.master-5175b98 → 3.7.3
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 +4 -4
- package/bundles/ngxs-router-plugin.umd.js +826 -854
- package/bundles/ngxs-router-plugin.umd.js.map +1 -1
- package/bundles/ngxs-router-plugin.umd.min.js +2 -2
- package/bundles/ngxs-router-plugin.umd.min.js.map +1 -1
- package/esm2015/index.js +9 -9
- package/esm2015/ngxs-router-plugin.js +8 -8
- package/esm2015/src/public_api.js +9 -9
- package/esm2015/src/router.actions.js +172 -172
- package/esm2015/src/router.module.js +25 -25
- package/esm2015/src/router.state.js +437 -463
- package/esm2015/src/serializer.js +72 -72
- package/esm5/index.js +9 -9
- package/esm5/ngxs-router-plugin.js +8 -8
- package/esm5/src/public_api.js +9 -9
- package/esm5/src/router.actions.js +227 -227
- package/esm5/src/router.module.js +32 -32
- package/esm5/src/router.state.js +523 -552
- package/esm5/src/serializer.js +98 -98
- package/fesm2015/ngxs-router-plugin.js +689 -715
- package/fesm2015/ngxs-router-plugin.js.map +1 -1
- package/fesm5/ngxs-router-plugin.js +831 -860
- package/fesm5/ngxs-router-plugin.js.map +1 -1
- package/index.d.ts +4 -4
- package/ngxs-router-plugin.d.ts +5 -5
- package/ngxs-router-plugin.metadata.json +1 -1
- package/package.json +3 -3
- package/src/public_api.d.ts +4 -4
- package/src/router.actions.d.ts +63 -63
- package/src/router.module.d.ts +4 -4
- package/src/router.state.d.ts +58 -60
- package/src/serializer.d.ts +12 -12
package/esm5/src/router.state.js
CHANGED
|
@@ -1,552 +1,523 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import * as tslib_1 from "tslib";
|
|
6
|
-
import { NgZone, Injectable
|
|
7
|
-
import { NavigationCancel, NavigationError, Router, RouterStateSnapshot, RoutesRecognized, ResolveEnd, UrlSerializer, NavigationStart, NavigationEnd } from '@angular/router';
|
|
8
|
-
import { LocationStrategy, Location } from '@angular/common';
|
|
9
|
-
import { Action, Selector, State, StateContext, Store } from '@ngxs/store';
|
|
10
|
-
import { isAngularInTestMode } from '@ngxs/store/internals';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* @
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
33
|
-
this.
|
|
34
|
-
this.
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
* @
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
* @
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
* @return {?}
|
|
83
|
-
*/
|
|
84
|
-
RouterState.prototype.
|
|
85
|
-
* @
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
* @
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
* @
|
|
117
|
-
* @return {?}
|
|
118
|
-
*/
|
|
119
|
-
function (
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
* @
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* @private
|
|
200
|
-
* @return {?}
|
|
201
|
-
*/
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
* @
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
-
|
|
245
|
-
|
|
246
|
-
this.
|
|
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
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
* @
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
* @
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
* @
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
*
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
* @private
|
|
334
|
-
* @return {?}
|
|
335
|
-
*/
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
//
|
|
366
|
-
//
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
.
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
//
|
|
384
|
-
//
|
|
385
|
-
//
|
|
386
|
-
|
|
387
|
-
var
|
|
388
|
-
//
|
|
389
|
-
//
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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
|
-
RouterState.
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
]
|
|
442
|
-
tslib_1.__decorate([
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
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
|
-
* @private
|
|
524
|
-
*/
|
|
525
|
-
RouterState.prototype._router;
|
|
526
|
-
/**
|
|
527
|
-
* @type {?}
|
|
528
|
-
* @private
|
|
529
|
-
*/
|
|
530
|
-
RouterState.prototype._serializer;
|
|
531
|
-
/**
|
|
532
|
-
* @type {?}
|
|
533
|
-
* @private
|
|
534
|
-
*/
|
|
535
|
-
RouterState.prototype._ngZone;
|
|
536
|
-
/**
|
|
537
|
-
* @type {?}
|
|
538
|
-
* @private
|
|
539
|
-
*/
|
|
540
|
-
RouterState.prototype._urlSerializer;
|
|
541
|
-
/**
|
|
542
|
-
* @type {?}
|
|
543
|
-
* @private
|
|
544
|
-
*/
|
|
545
|
-
RouterState.prototype._locationStrategy;
|
|
546
|
-
/**
|
|
547
|
-
* @type {?}
|
|
548
|
-
* @private
|
|
549
|
-
*/
|
|
550
|
-
RouterState.prototype._location;
|
|
551
|
-
}
|
|
552
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvcm91dGVyLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9yb3V0ZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsTUFBTSxFQUNOLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGFBQWEsRUFDYixlQUFlLEVBQ2YsYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFDTCxRQUFRLEVBRVIsWUFBWSxFQUNaLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQUVyRCxzQ0FJQzs7O0lBSEMsaUNBQVU7O0lBQ1Ysd0NBQXNCOztJQUN0QixtQ0FBdUI7OztJQW1EdkIscUJBQ1UsTUFBYSxFQUNiLE9BQWUsRUFDZixXQUF1RCxFQUN2RCxPQUFlLEVBQ2YsY0FBNkIsRUFDN0IsaUJBQW1DLEVBQ25DLFNBQW1CO1FBTm5CLFdBQU0sR0FBTixNQUFNLENBQU87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QUFhO2dCQUNWLGdCQUFnQjtnQkFDeEIsUUFBUTs7O2dCQXZDOUIsVUFBVTs7OztnQkFyQ3FDLEtBQUs7Z0JBVG5ELE1BQU07Z0JBc0JDLHFCQUFxQjtnQkExQnJCLE1BQU07Z0JBUWIsYUFBYTtnQkFJTixnQkFBZ0I7Z0JBQUUsUUFBUTs7SUF5RmpDO1FBREMsTUFBTSxDQUFDLFFBQVEsQ0FBQzs7eURBQ21DLFFBQVE7OytDQU8zRDtJQUdEO1FBREMsTUFBTSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDOzs7OzBEQVd6RTtJQWhERDtRQURDLFFBQVEsRUFBRTs7OztrQ0FHVjtJQUdEO1FBREMsUUFBUSxFQUFFOzs7O2dDQUdWO0lBN0JVLFdBQVc7UUFUdkIsS0FBSyxDQUFtQjtZQUN2QixJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsU0FBUztnQkFDaEIsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLE9BQU8sRUFBRSxNQUFNO2FBQ2hCO1NBQ0YsQ0FBQztpREFrQ2tCLEtBQUs7WUFDSixNQUFNO1lBQ0YscUJBQXFCO1lBQ3pCLE1BQU07WUFDQyxhQUFhO1lBQ1YsZ0JBQWdCO1lBQ3hCLFFBQVE7T0F0Q2xCLFdBQVcsQ0F5UHZCO0lBQUQsa0JBQUM7Q0FBQSxJQUFBO1NBelBZLFdBQVc7Ozs7Ozs7O0lBS3RCLCtCQUF5Qzs7Ozs7O0lBS3pDLG1DQUF3RDs7Ozs7O0lBS3hELGtDQUFvRDs7Ozs7SUFFcEQsNENBQXdEOzs7OztJQUV4RCxvQ0FBMkM7Ozs7O0lBYXpDLDZCQUFxQjs7Ozs7SUFDckIsOEJBQXVCOzs7OztJQUN2QixrQ0FBK0Q7Ozs7O0lBQy9ELDhCQUF1Qjs7Ozs7SUFDdkIscUNBQXFDOzs7OztJQUNyQyx3Q0FBMkM7Ozs7O0lBQzNDLGdDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICBOYXZpZ2F0aW9uRXJyb3IsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgUm91dGVzUmVjb2duaXplZCxcbiAgUmVzb2x2ZUVuZCxcbiAgVXJsU2VyaWFsaXplcixcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBOYXZpZ2F0aW9uRW5kXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhdGlvblN0cmF0ZWd5LCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGlzQW5ndWxhckluVGVzdE1vZGUgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgTmF2aWdhdGUsXG4gIFJvdXRlckFjdGlvbixcbiAgUm91dGVyQ2FuY2VsLFxuICBSb3V0ZXJFcnJvcixcbiAgUm91dGVyTmF2aWdhdGlvbixcbiAgUm91dGVyRGF0YVJlc29sdmVkXG59IGZyb20gJy4vcm91dGVyLmFjdGlvbnMnO1xuaW1wb3J0IHsgUm91dGVyU3RhdGVTZXJpYWxpemVyIH0gZnJvbSAnLi9zZXJpYWxpemVyJztcblxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXJTdGF0ZU1vZGVsPFQgPSBSb3V0ZXJTdGF0ZVNuYXBzaG90PiB7XG4gIHN0YXRlPzogVDtcbiAgbmF2aWdhdGlvbklkPzogbnVtYmVyO1xuICB0cmlnZ2VyOiBSb3V0ZXJUcmlnZ2VyO1xufVxuXG5leHBvcnQgdHlwZSBSb3V0ZXJUcmlnZ2VyID0gJ25vbmUnIHwgJ3JvdXRlcicgfCAnc3RvcmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBXaWxsIGJlIHByb3ZpZGVkIHRocm91Z2ggVGVyc2VyIGdsb2JhbCBkZWZpbml0aW9ucyBieSBBbmd1bGFyIENMSVxuICogZHVyaW5nIHRoZSBwcm9kdWN0aW9uIGJ1aWxkLiBUaGlzIGlzIGhvdyBBbmd1bGFyIGRvZXMgdHJlZS1zaGFraW5nIGludGVybmFsbHkuXG4gKi9cbmRlY2xhcmUgY29uc3QgbmdEZXZNb2RlOiBib29sZWFuO1xuXG5AU3RhdGU8Um91dGVyU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAncm91dGVyJyxcbiAgZGVmYXVsdHM6IHtcbiAgICBzdGF0ZTogdW5kZWZpbmVkLFxuICAgIG5hdmlnYXRpb25JZDogdW5kZWZpbmVkLFxuICAgIHRyaWdnZXI6ICdub25lJ1xuICB9XG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJvdXRlclN0YXRlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IG5hdmlnYXRpb24gd2FzIHBlcmZvcm1lZCBieSB0aGUgYFJvdXRlclN0YXRlYCBpdHNlbGZcbiAgICogb3Igb3V0c2lkZSB2aWEgYG5ldyBOYXZpZ2F0ZSguLi4pYFxuICAgKi9cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogUm91dGVyVHJpZ2dlciA9ICdub25lJztcblxuICAvKipcbiAgICogVGhhdCdzIHRoZSBzZXJpYWxpemVkIHN0YXRlIGZyb20gdGhlIGBSb3V0ZXJgIGNsYXNzXG4gICAqL1xuICBwcml2YXRlIF9yb3V0ZXJTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGF0J3MgdGhlIHZhbHVlIG9mIHRoZSBgUm91dGVyU3RhdGVgIHN0YXRlXG4gICAqL1xuICBwcml2YXRlIF9zdG9yZVN0YXRlOiBSb3V0ZXJTdGF0ZU1vZGVsIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfbGFzdFJvdXRlc1JlY29nbml6ZWQ6IFJvdXRlc1JlY29nbml6ZWQgPSBudWxsITtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIHN0YXRlPFQgPSBSb3V0ZXJTdGF0ZVNuYXBzaG90PihzdGF0ZTogUm91dGVyU3RhdGVNb2RlbDxUPikge1xuICAgIHJldHVybiBzdGF0ZSAmJiBzdGF0ZS5zdGF0ZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyB1cmwoc3RhdGU6IFJvdXRlclN0YXRlTW9kZWwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBzdGF0ZSAmJiBzdGF0ZS5zdGF0ZSAmJiBzdGF0ZS5zdGF0ZS51cmw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfc2VyaWFsaXplcjogUm91dGVyU3RhdGVTZXJpYWxpemVyPFJvdXRlclN0YXRlU25hcHNob3Q+LFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX3VybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb25TdHJhdGVneTogTG9jYXRpb25TdHJhdGVneSxcbiAgICBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgdGhpcy5zZXRVcFN0b3JlTGlzdGVuZXIoKTtcbiAgICB0aGlzLnNldFVwUm91dGVyRXZlbnRzTGlzdGVuZXIoKTtcbiAgICB0aGlzLmNoZWNrSW5pdGlhbE5hdmlnYXRpb25PbmNlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIEBBY3Rpb24oTmF2aWdhdGUpXG4gIG5hdmlnYXRlKF86IFN0YXRlQ29udGV4dDxSb3V0ZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBOYXZpZ2F0ZSkge1xuICAgIHJldHVybiB0aGlzLl9uZ1pvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoYWN0aW9uLnBhdGgsIHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IGFjdGlvbi5xdWVyeVBhcmFtcyxcbiAgICAgICAgLi4uYWN0aW9uLmV4dHJhc1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihbUm91dGVyTmF2aWdhdGlvbiwgUm91dGVyRXJyb3IsIFJvdXRlckNhbmNlbCwgUm91dGVyRGF0YVJlc29sdmVkXSlcbiAgYW5ndWxhclJvdXRlckFjdGlvbihcbiAgICBjdHg6IFN0YXRlQ29udGV4dDxSb3V0ZXJTdGF0ZU1vZGVsPixcbiAgICBhY3Rpb246IFJvdXRlckFjdGlvbjxSb3V0ZXJTdGF0ZU1vZGVsLCBSb3V0ZXJTdGF0ZVNuYXBzaG90PlxuICApOiB2b2lkIHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICB0cmlnZ2VyOiBhY3Rpb24udHJpZ2dlcixcbiAgICAgIHN0YXRlOiBhY3Rpb24ucm91dGVyU3RhdGUsXG4gICAgICBuYXZpZ2F0aW9uSWQ6IGFjdGlvbi5ldmVudC5pZFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRVcFN0b3JlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5fc3RvcmVcbiAgICAgIC5zZWxlY3QoUm91dGVyU3RhdGUpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogUm91dGVyU3RhdGVNb2RlbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICB0aGlzLm5hdmlnYXRlSWZOZWVkZWQoc3RhdGUpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHN1YnNjcmlwdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHNldFVwUm91dGVyRXZlbnRzTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5fcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXJ0KCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCkge1xuICAgICAgICB0aGlzLl9sYXN0Um91dGVzUmVjb2duaXplZCA9IGV2ZW50O1xuICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFJlc29sdmVFbmQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaFJvdXRlckRhdGFSZXNvbHZlZChldmVudCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoUm91dGVyQ2FuY2VsKGV2ZW50KTtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLmRpc3BhdGNoUm91dGVyRXJyb3IoZXZlbnQpO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmQoKTtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChzdWJzY3JpcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5fcm91dGVyU3RhdGUgPSB0aGlzLl9zZXJpYWxpemVyLnNlcmlhbGl6ZSh0aGlzLl9yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QpO1xuXG4gICAgaWYgKHRoaXMuX3RyaWdnZXIgIT09ICdub25lJykge1xuICAgICAgdGhpcy5fc3RvcmVTdGF0ZSA9IHRoaXMuX3N0b3JlLnNlbGVjdFNuYXBzaG90KFJvdXRlclN0YXRlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRpb25FbmQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdWxkRGlzcGF0Y2hSb3V0ZXJOYXZpZ2F0aW9uKCkpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hSb3V0ZXJOYXZpZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGREaXNwYXRjaFJvdXRlck5hdmlnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLl9zdG9yZVN0YXRlKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlciAhPT0gJ3N0b3JlJztcbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGVJZk5lZWRlZChzdGF0ZTogUm91dGVyU3RhdGVNb2RlbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNhblNraXBOYXZpZ2F0aW9uID1cbiAgICAgICF0aGlzLl9zdG9yZVN0YXRlIHx8XG4gICAgICAhdGhpcy5fc3RvcmVTdGF0ZS5zdGF0ZSB8fFxuICAgICAgIXN0YXRlIHx8XG4gICAgICBzdGF0ZS50cmlnZ2VyID09PSAncm91dGVyJyB8fFxuICAgICAgdGhpcy5fcm91dGVyLnVybCA9PT0gdGhpcy5fc3RvcmVTdGF0ZS5zdGF0ZS51cmw7XG5cbiAgICBpZiAoY2FuU2tpcE5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyID0gJ3N0b3JlJztcbiAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuX3N0b3JlU3RhdGUhLnN0YXRlIS51cmwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaFJvdXRlck5hdmlnYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dFJvdXRlclN0YXRlID0gdGhpcy5fc2VyaWFsaXplci5zZXJpYWxpemUodGhpcy5fbGFzdFJvdXRlc1JlY29nbml6ZWQuc3RhdGUpO1xuXG4gICAgdGhpcy5kaXNwYXRjaFJvdXRlckFjdGlvbihcbiAgICAgIG5ldyBSb3V0ZXJOYXZpZ2F0aW9uKFxuICAgICAgICBuZXh0Um91dGVyU3RhdGUsXG4gICAgICAgIG5ldyBSb3V0ZXNSZWNvZ25pemVkKFxuICAgICAgICAgIHRoaXMuX2xhc3RSb3V0ZXNSZWNvZ25pemVkLmlkLFxuICAgICAgICAgIHRoaXMuX2xhc3RSb3V0ZXNSZWNvZ25pemVkLnVybCxcbiAgICAgICAgICB0aGlzLl9sYXN0Um91dGVzUmVjb2duaXplZC51cmxBZnRlclJlZGlyZWN0cyxcbiAgICAgICAgICBuZXh0Um91dGVyU3RhdGVcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5fdHJpZ2dlclxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoUm91dGVyQ2FuY2VsKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaFJvdXRlckFjdGlvbihcbiAgICAgIG5ldyBSb3V0ZXJDYW5jZWwodGhpcy5fcm91dGVyU3RhdGUhLCB0aGlzLl9zdG9yZVN0YXRlLCBldmVudCwgdGhpcy5fdHJpZ2dlcilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaFJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BhdGNoUm91dGVyQWN0aW9uKFxuICAgICAgbmV3IFJvdXRlckVycm9yKFxuICAgICAgICB0aGlzLl9yb3V0ZXJTdGF0ZSEsXG4gICAgICAgIHRoaXMuX3N0b3JlU3RhdGUsXG4gICAgICAgIG5ldyBOYXZpZ2F0aW9uRXJyb3IoZXZlbnQuaWQsIGV2ZW50LnVybCwgYCR7ZXZlbnR9YCksXG4gICAgICAgIHRoaXMuX3RyaWdnZXJcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaFJvdXRlckFjdGlvbjxUPihhY3Rpb246IFJvdXRlckFjdGlvbjxUPik6IHZvaWQge1xuICAgIHRoaXMuX3RyaWdnZXIgPSAncm91dGVyJztcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhY3Rpb24pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl90cmlnZ2VyID0gJ25vbmUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hSb3V0ZXJEYXRhUmVzb2x2ZWQoZXZlbnQ6IFJlc29sdmVFbmQpOiB2b2lkIHtcbiAgICBjb25zdCByb3V0ZXJTdGF0ZSA9IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplKGV2ZW50LnN0YXRlKTtcbiAgICB0aGlzLmRpc3BhdGNoUm91dGVyQWN0aW9uKG5ldyBSb3V0ZXJEYXRhUmVzb2x2ZWQocm91dGVyU3RhdGUsIGV2ZW50LCB0aGlzLl90cmlnZ2VyKSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RyaWdnZXIgPSAnbm9uZSc7XG4gICAgdGhpcy5fc3RvcmVTdGF0ZSA9IG51bGw7XG4gICAgdGhpcy5fcm91dGVyU3RhdGUgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vIHNlbnNlIHRvIG1lc3MgdXAgdGhlIGBzZXRVcFJvdXRlckV2ZW50c0xpc3RlbmVyYCBtZXRob2QgYXMgd2UgaGF2ZVxuICAgKiB0byBwZXJmb3JtIHRoaXMgY2hlY2sgb25seSBvbmNlIGFuZCB1bnN1YnNjcmliZSBhZnRlciB0aGUgZmlyc3QgZXZlbnRcbiAgICogaXMgdHJpZ2dlcmVkXG4gICAqL1xuICBwcml2YXRlIGNoZWNrSW5pdGlhbE5hdmlnYXRpb25PbmNlKCk6IHZvaWQge1xuICAgIC8vIENhcmV0YWtlciBub3RlOiB3ZSBoYXZlIHN0aWxsIGxlZnQgdGhlIGB0eXBlb2ZgIGNvbmRpdGlvbiBpbiBvcmRlciB0byBhdm9pZFxuICAgIC8vIGNyZWF0aW5nIGEgYnJlYWtpbmcgY2hhbmdlIGZvciBwcm9qZWN0cyB0aGF0IHN0aWxsIHVzZSB0aGUgVmlldyBFbmdpbmUuXG4gICAgaWYgKFxuICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiZcbiAgICAgIC8vIEFuZ3VsYXIgaXMgcnVubmluZyB0ZXN0cyBpbiBkZXZlbG9wbWVudCBtb2RlIHRodXMgd2UgY2FuIGJlIHN1cmUgdGhhdCB0aGlzIG1ldGhvZCB3aWxsIGJlXG4gICAgICAvLyBza2lwcGVkIGluIHRlc3RzLlxuICAgICAgaXNBbmd1bGFySW5UZXN0TW9kZSgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5fcm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlyc3QoKGV2ZW50KTogZXZlbnQgaXMgUm91dGVzUmVjb2duaXplZCA9PiBldmVudCBpbnN0YW5jZW9mIFJvdXRlc1JlY29nbml6ZWQpKVxuICAgICAgLnN1YnNjcmliZSgoeyB1cmwgfSkgPT4ge1xuICAgICAgICAvLyBgbG9jYXRpb24ucGF0aG5hbWVgIGFsd2F5cyBlcXVhbHMgbWFudWFsbHkgZW50ZXJlZCBVUkwgaW4gdGhlIGFkZHJlc3MgYmFyXG4gICAgICAgIC8vIGUuZy4gYGxvY2F0aW9uLnBhdGhuYW1lID09PSAnL2ZvbydgLCBidXQgdGhlIGByb3V0ZXJgIHN0YXRlIGhhcyBiZWVuIGluaXRpYWxpemVkXG4gICAgICAgIC8vIHdpdGggYW5vdGhlciBVUkwgKGUuZy4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBOZ3hzU3RvcmFnZVBsdWdpbmApLCB0aHVzIHRoZVxuICAgICAgICAvLyBgUm91dGVyTmF2aWdhdGlvbmAgYWN0aW9uIHdpbGwgYmUgZGlzcGF0Y2hlZCBhbmQgdGhlIHVzZXIgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZVxuICAgICAgICAvLyBwcmV2aW91c2x5IHNhdmVkIFVSTC4gV2Ugd2FudCB0byBwcmV2ZW50IHN1Y2ggYmVoYXZpb3IsIHNvIHdlIHBlcmZvcm0gdGhpcyBjaGVja1xuXG4gICAgICAgIC8vIGB1cmxgIGlzIGEgcmVjb2duaXplZCBVUkwgYnkgdGhlIEFuZ3VsYXIncyByb3V0ZXIsIHdoaWxlIGBjdXJyZW50VXJsYCBpcyBhbiBhY3R1YWwgVVJMXG4gICAgICAgIC8vIGVudGVyZWQgaW4gdGhlIGJyb3dzZXIncyBhZGRyZXNzIGJhclxuICAgICAgICAvLyBgUGF0aExvY2F0aW9uU3RyYXRlZ3kucHJvdG90eXBlLnBhdGgoKWAgcmV0dXJucyBhIGNvbmNhdGVuYXRpb24gb2ZcbiAgICAgICAgLy8gYFBsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWVgIGFuZCBub3JtYWxpemVkIGBQbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaGAuXG5cbiAgICAgICAgLy8gYExvY2F0aW9uLnByb3RvdHlwZS5ub3JtYWxpemVgIHN0cmlwcyBiYXNlIGhyZWYgZnJvbSB0aGUgVVJMLFxuICAgICAgICAvLyBpZiBgYmFzZUhyZWZgIChkZWNsYXJlZCBpbiBhbmd1bGFyLmpzb24pIGZvciBleGFtcGxlIGlzIGAvZW5gXG4gICAgICAgIC8vIGFuZCB0aGUgVVJMIGlzIGAvdGVzdCNhbmNob3JgIC0gdGhlbiBgX2xvY2F0aW9uU3RyYXRlZ3kucGF0aCh0cnVlKWAgd2lsbCByZXR1cm4gYC9lbi90ZXN0I2FuY2hvcmAsXG4gICAgICAgIC8vIGJ1dCBgL2VuL3Rlc3QjYW5jaG9yYCBpcyBub3Qga25vd24gdG8gdGhlIEFuZ3VsYXIncyByb3V0ZXIsIHNvIHdlIGhhdmUgdG8gc3RyaXAgYC9lbmBcbiAgICAgICAgLy8gZnJvbSB0aGUgVVJMXG4gICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLl9sb2NhdGlvbi5ub3JtYWxpemUodGhpcy5fbG9jYXRpb25TdHJhdGVneS5wYXRoKHRydWUpKTtcbiAgICAgICAgY29uc3QgY3VycmVudFVybFRyZWUgPSB0aGlzLl91cmxTZXJpYWxpemVyLnBhcnNlKGN1cnJlbnRVcmwpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHNlcmlhbGl6ZSB0aGUgVVJMIGJlY2F1c2UgaW4gdGhhdCBleGFtcGxlIGAvdGVzdC8/cmVkaXJlY3Q9aHR0cHM6Ly9nb29nbGUuY29tL2BcbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHJlY29nbml6ZSBpdCBhcyBgL3Rlc3Q/cmVkaXJlY3Q9aHR0cHM6JTJGJTJGd3d3Lmdvb2dsZS5jb20lMkZgXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcnVuIHRoZSBgY3VycmVudFVybGAgdmlhIHRoZSBgVXJsU2VyaWFsaXplcmAgdGhhdCB3aWxsIGVuY29kZSBjaGFyYWN0ZXJzXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZXJpYWxpemVkVXJsID0gdGhpcy5fdXJsU2VyaWFsaXplci5zZXJpYWxpemUoY3VycmVudFVybFRyZWUpO1xuXG4gICAgICAgIC8vIElmIFVSTHMgZGlmZmVyIGZyb20gZWFjaCBvdGhlciAtIHdlJ3ZlIGdvdCB0byBwZXJmb3JtIGEgcmVkaXJlY3QgdG8gdGhlIG1hbnVhbGx5IGVudGVyZWQgVVJMXG4gICAgICAgIC8vIGluIHRoZSBhZGRyZXNzIGJhciwgYXMgaXQgbXVzdCBoYXZlIGEgcHJpb3JpdHlcbiAgICAgICAgaWYgKGN1cnJlbnRTZXJpYWxpemVkVXJsICE9PSB1cmwpIHtcbiAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybChjdXJyZW50VXJsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHN1YnNjcmlwdGlvbik7XG4gIH1cbn1cbiJdfQ==
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { NgZone, Injectable } from '@angular/core';
|
|
7
|
+
import { NavigationCancel, NavigationError, Router, RouterStateSnapshot, RoutesRecognized, ResolveEnd, UrlSerializer, NavigationStart, NavigationEnd } from '@angular/router';
|
|
8
|
+
import { LocationStrategy, Location } from '@angular/common';
|
|
9
|
+
import { Action, Selector, State, StateContext, Store } from '@ngxs/store';
|
|
10
|
+
import { isAngularInTestMode } from '@ngxs/store/internals';
|
|
11
|
+
import { first } from 'rxjs/operators';
|
|
12
|
+
import { Navigate, RouterCancel, RouterError, RouterNavigation, RouterDataResolved } from './router.actions';
|
|
13
|
+
import { RouterStateSerializer } from './serializer';
|
|
14
|
+
/**
|
|
15
|
+
* @record
|
|
16
|
+
* @template T
|
|
17
|
+
*/
|
|
18
|
+
export function RouterStateModel() { }
|
|
19
|
+
if (false) {
|
|
20
|
+
/** @type {?|undefined} */
|
|
21
|
+
RouterStateModel.prototype.state;
|
|
22
|
+
/** @type {?|undefined} */
|
|
23
|
+
RouterStateModel.prototype.navigationId;
|
|
24
|
+
/** @type {?} */
|
|
25
|
+
RouterStateModel.prototype.trigger;
|
|
26
|
+
}
|
|
27
|
+
var RouterState = /** @class */ (function () {
|
|
28
|
+
function RouterState(_store, _router, _serializer, _ngZone, _urlSerializer, _locationStrategy, _location) {
|
|
29
|
+
this._store = _store;
|
|
30
|
+
this._router = _router;
|
|
31
|
+
this._serializer = _serializer;
|
|
32
|
+
this._ngZone = _ngZone;
|
|
33
|
+
this._urlSerializer = _urlSerializer;
|
|
34
|
+
this._locationStrategy = _locationStrategy;
|
|
35
|
+
this._location = _location;
|
|
36
|
+
/**
|
|
37
|
+
* Determines how navigation was performed by the `RouterState` itself
|
|
38
|
+
* or outside via `new Navigate(...)`
|
|
39
|
+
*/
|
|
40
|
+
this._trigger = 'none';
|
|
41
|
+
/**
|
|
42
|
+
* That's the serialized state from the `Router` class
|
|
43
|
+
*/
|
|
44
|
+
this._routerState = null;
|
|
45
|
+
/**
|
|
46
|
+
* That's the value of the `RouterState` state
|
|
47
|
+
*/
|
|
48
|
+
this._storeState = null;
|
|
49
|
+
this._lastRoutesRecognized = (/** @type {?} */ (null));
|
|
50
|
+
this.setUpStoreListener();
|
|
51
|
+
this.setUpRouterEventsListener();
|
|
52
|
+
this.checkInitialNavigationOnce();
|
|
53
|
+
}
|
|
54
|
+
RouterState_1 = RouterState;
|
|
55
|
+
/**
|
|
56
|
+
* @template T
|
|
57
|
+
* @param {?} state
|
|
58
|
+
* @return {?}
|
|
59
|
+
*/
|
|
60
|
+
RouterState.state = /**
|
|
61
|
+
* @template T
|
|
62
|
+
* @param {?} state
|
|
63
|
+
* @return {?}
|
|
64
|
+
*/
|
|
65
|
+
function (state) {
|
|
66
|
+
return state && state.state;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* @param {?} state
|
|
70
|
+
* @return {?}
|
|
71
|
+
*/
|
|
72
|
+
RouterState.url = /**
|
|
73
|
+
* @param {?} state
|
|
74
|
+
* @return {?}
|
|
75
|
+
*/
|
|
76
|
+
function (state) {
|
|
77
|
+
return state && state.state && state.state.url;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* @param {?} _
|
|
81
|
+
* @param {?} action
|
|
82
|
+
* @return {?}
|
|
83
|
+
*/
|
|
84
|
+
RouterState.prototype.navigate = /**
|
|
85
|
+
* @param {?} _
|
|
86
|
+
* @param {?} action
|
|
87
|
+
* @return {?}
|
|
88
|
+
*/
|
|
89
|
+
function (_, action) {
|
|
90
|
+
var _this = this;
|
|
91
|
+
return this._ngZone.run((/**
|
|
92
|
+
* @return {?}
|
|
93
|
+
*/
|
|
94
|
+
function () {
|
|
95
|
+
return _this._router.navigate(action.path, tslib_1.__assign({ queryParams: action.queryParams }, action.extras));
|
|
96
|
+
}));
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* @param {?} ctx
|
|
100
|
+
* @param {?} action
|
|
101
|
+
* @return {?}
|
|
102
|
+
*/
|
|
103
|
+
RouterState.prototype.angularRouterAction = /**
|
|
104
|
+
* @param {?} ctx
|
|
105
|
+
* @param {?} action
|
|
106
|
+
* @return {?}
|
|
107
|
+
*/
|
|
108
|
+
function (ctx, action) {
|
|
109
|
+
ctx.setState(tslib_1.__assign({}, ctx.getState(), { trigger: action.trigger, state: action.routerState, navigationId: action.event.id }));
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* @private
|
|
113
|
+
* @return {?}
|
|
114
|
+
*/
|
|
115
|
+
RouterState.prototype.setUpStoreListener = /**
|
|
116
|
+
* @private
|
|
117
|
+
* @return {?}
|
|
118
|
+
*/
|
|
119
|
+
function () {
|
|
120
|
+
var _this = this;
|
|
121
|
+
this._store.select(RouterState_1).subscribe((/**
|
|
122
|
+
* @param {?} state
|
|
123
|
+
* @return {?}
|
|
124
|
+
*/
|
|
125
|
+
function (state) {
|
|
126
|
+
_this.navigateIfNeeded(state);
|
|
127
|
+
}));
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* @private
|
|
131
|
+
* @return {?}
|
|
132
|
+
*/
|
|
133
|
+
RouterState.prototype.setUpRouterEventsListener = /**
|
|
134
|
+
* @private
|
|
135
|
+
* @return {?}
|
|
136
|
+
*/
|
|
137
|
+
function () {
|
|
138
|
+
var _this = this;
|
|
139
|
+
this._router.events.subscribe((/**
|
|
140
|
+
* @param {?} event
|
|
141
|
+
* @return {?}
|
|
142
|
+
*/
|
|
143
|
+
function (event) {
|
|
144
|
+
if (event instanceof NavigationStart) {
|
|
145
|
+
_this.navigationStart();
|
|
146
|
+
}
|
|
147
|
+
else if (event instanceof RoutesRecognized) {
|
|
148
|
+
_this._lastRoutesRecognized = event;
|
|
149
|
+
}
|
|
150
|
+
else if (event instanceof ResolveEnd) {
|
|
151
|
+
_this.dispatchRouterDataResolved(event);
|
|
152
|
+
}
|
|
153
|
+
else if (event instanceof NavigationCancel) {
|
|
154
|
+
_this.dispatchRouterCancel(event);
|
|
155
|
+
_this.reset();
|
|
156
|
+
}
|
|
157
|
+
else if (event instanceof NavigationError) {
|
|
158
|
+
_this.dispatchRouterError(event);
|
|
159
|
+
_this.reset();
|
|
160
|
+
}
|
|
161
|
+
else if (event instanceof NavigationEnd) {
|
|
162
|
+
_this.navigationEnd();
|
|
163
|
+
_this.reset();
|
|
164
|
+
}
|
|
165
|
+
}));
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* @private
|
|
169
|
+
* @return {?}
|
|
170
|
+
*/
|
|
171
|
+
RouterState.prototype.navigationStart = /**
|
|
172
|
+
* @private
|
|
173
|
+
* @return {?}
|
|
174
|
+
*/
|
|
175
|
+
function () {
|
|
176
|
+
this._routerState = this._serializer.serialize(this._router.routerState.snapshot);
|
|
177
|
+
if (this._trigger !== 'none') {
|
|
178
|
+
this._storeState = this._store.selectSnapshot(RouterState_1);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* @private
|
|
183
|
+
* @return {?}
|
|
184
|
+
*/
|
|
185
|
+
RouterState.prototype.navigationEnd = /**
|
|
186
|
+
* @private
|
|
187
|
+
* @return {?}
|
|
188
|
+
*/
|
|
189
|
+
function () {
|
|
190
|
+
if (this.shouldDispatchRouterNavigation()) {
|
|
191
|
+
this.dispatchRouterNavigation();
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* @private
|
|
196
|
+
* @return {?}
|
|
197
|
+
*/
|
|
198
|
+
RouterState.prototype.shouldDispatchRouterNavigation = /**
|
|
199
|
+
* @private
|
|
200
|
+
* @return {?}
|
|
201
|
+
*/
|
|
202
|
+
function () {
|
|
203
|
+
if (!this._storeState)
|
|
204
|
+
return true;
|
|
205
|
+
return this._trigger !== 'store';
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* @private
|
|
209
|
+
* @param {?} state
|
|
210
|
+
* @return {?}
|
|
211
|
+
*/
|
|
212
|
+
RouterState.prototype.navigateIfNeeded = /**
|
|
213
|
+
* @private
|
|
214
|
+
* @param {?} state
|
|
215
|
+
* @return {?}
|
|
216
|
+
*/
|
|
217
|
+
function (state) {
|
|
218
|
+
var _this = this;
|
|
219
|
+
/** @type {?} */
|
|
220
|
+
var canSkipNavigation = !this._storeState ||
|
|
221
|
+
!this._storeState.state ||
|
|
222
|
+
!state ||
|
|
223
|
+
state.trigger === 'router' ||
|
|
224
|
+
this._router.url === this._storeState.state.url;
|
|
225
|
+
if (canSkipNavigation) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
this._trigger = 'store';
|
|
229
|
+
this._ngZone.run((/**
|
|
230
|
+
* @return {?}
|
|
231
|
+
*/
|
|
232
|
+
function () {
|
|
233
|
+
_this._router.navigateByUrl((/** @type {?} */ ((/** @type {?} */ (_this._storeState)).state)).url);
|
|
234
|
+
}));
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* @private
|
|
238
|
+
* @return {?}
|
|
239
|
+
*/
|
|
240
|
+
RouterState.prototype.dispatchRouterNavigation = /**
|
|
241
|
+
* @private
|
|
242
|
+
* @return {?}
|
|
243
|
+
*/
|
|
244
|
+
function () {
|
|
245
|
+
/** @type {?} */
|
|
246
|
+
var nextRouterState = this._serializer.serialize(this._lastRoutesRecognized.state);
|
|
247
|
+
this.dispatchRouterAction(new RouterNavigation(nextRouterState, new RoutesRecognized(this._lastRoutesRecognized.id, this._lastRoutesRecognized.url, this._lastRoutesRecognized.urlAfterRedirects, nextRouterState), this._trigger));
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* @private
|
|
251
|
+
* @param {?} event
|
|
252
|
+
* @return {?}
|
|
253
|
+
*/
|
|
254
|
+
RouterState.prototype.dispatchRouterCancel = /**
|
|
255
|
+
* @private
|
|
256
|
+
* @param {?} event
|
|
257
|
+
* @return {?}
|
|
258
|
+
*/
|
|
259
|
+
function (event) {
|
|
260
|
+
this.dispatchRouterAction(new RouterCancel((/** @type {?} */ (this._routerState)), this._storeState, event, this._trigger));
|
|
261
|
+
};
|
|
262
|
+
/**
|
|
263
|
+
* @private
|
|
264
|
+
* @param {?} event
|
|
265
|
+
* @return {?}
|
|
266
|
+
*/
|
|
267
|
+
RouterState.prototype.dispatchRouterError = /**
|
|
268
|
+
* @private
|
|
269
|
+
* @param {?} event
|
|
270
|
+
* @return {?}
|
|
271
|
+
*/
|
|
272
|
+
function (event) {
|
|
273
|
+
this.dispatchRouterAction(new RouterError((/** @type {?} */ (this._routerState)), this._storeState, new NavigationError(event.id, event.url, "" + event), this._trigger));
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* @private
|
|
277
|
+
* @template T
|
|
278
|
+
* @param {?} action
|
|
279
|
+
* @return {?}
|
|
280
|
+
*/
|
|
281
|
+
RouterState.prototype.dispatchRouterAction = /**
|
|
282
|
+
* @private
|
|
283
|
+
* @template T
|
|
284
|
+
* @param {?} action
|
|
285
|
+
* @return {?}
|
|
286
|
+
*/
|
|
287
|
+
function (action) {
|
|
288
|
+
this._trigger = 'router';
|
|
289
|
+
try {
|
|
290
|
+
this._store.dispatch(action);
|
|
291
|
+
}
|
|
292
|
+
finally {
|
|
293
|
+
this._trigger = 'none';
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
/**
|
|
297
|
+
* @private
|
|
298
|
+
* @param {?} event
|
|
299
|
+
* @return {?}
|
|
300
|
+
*/
|
|
301
|
+
RouterState.prototype.dispatchRouterDataResolved = /**
|
|
302
|
+
* @private
|
|
303
|
+
* @param {?} event
|
|
304
|
+
* @return {?}
|
|
305
|
+
*/
|
|
306
|
+
function (event) {
|
|
307
|
+
/** @type {?} */
|
|
308
|
+
var routerState = this._serializer.serialize(event.state);
|
|
309
|
+
this.dispatchRouterAction(new RouterDataResolved(routerState, event, this._trigger));
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* @private
|
|
313
|
+
* @return {?}
|
|
314
|
+
*/
|
|
315
|
+
RouterState.prototype.reset = /**
|
|
316
|
+
* @private
|
|
317
|
+
* @return {?}
|
|
318
|
+
*/
|
|
319
|
+
function () {
|
|
320
|
+
this._trigger = 'none';
|
|
321
|
+
this._storeState = null;
|
|
322
|
+
this._routerState = null;
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* No sense to mess up the `setUpRouterEventsListener` method as we have
|
|
326
|
+
* to perform this check only once and unsubscribe after the first event
|
|
327
|
+
* is triggered
|
|
328
|
+
*/
|
|
329
|
+
/**
|
|
330
|
+
* No sense to mess up the `setUpRouterEventsListener` method as we have
|
|
331
|
+
* to perform this check only once and unsubscribe after the first event
|
|
332
|
+
* is triggered
|
|
333
|
+
* @private
|
|
334
|
+
* @return {?}
|
|
335
|
+
*/
|
|
336
|
+
RouterState.prototype.checkInitialNavigationOnce = /**
|
|
337
|
+
* No sense to mess up the `setUpRouterEventsListener` method as we have
|
|
338
|
+
* to perform this check only once and unsubscribe after the first event
|
|
339
|
+
* is triggered
|
|
340
|
+
* @private
|
|
341
|
+
* @return {?}
|
|
342
|
+
*/
|
|
343
|
+
function () {
|
|
344
|
+
var _this = this;
|
|
345
|
+
if (isAngularInTestMode()) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
this._router.events
|
|
349
|
+
.pipe(first((/**
|
|
350
|
+
* @param {?} event
|
|
351
|
+
* @return {?}
|
|
352
|
+
*/
|
|
353
|
+
function (event) { return event instanceof RoutesRecognized; })))
|
|
354
|
+
.subscribe((/**
|
|
355
|
+
* @param {?} __0
|
|
356
|
+
* @return {?}
|
|
357
|
+
*/
|
|
358
|
+
function (_a) {
|
|
359
|
+
// `location.pathname` always equals manually entered URL in the address bar
|
|
360
|
+
// e.g. `location.pathname === '/foo'`, but the `router` state has been initialized
|
|
361
|
+
// with another URL (e.g. used in combination with `NgxsStoragePlugin`), thus the
|
|
362
|
+
// `RouterNavigation` action will be dispatched and the user will be redirected to the
|
|
363
|
+
// previously saved URL. We want to prevent such behavior, so we perform this check
|
|
364
|
+
var url = _a.url;
|
|
365
|
+
// `location.pathname` always equals manually entered URL in the address bar
|
|
366
|
+
// e.g. `location.pathname === '/foo'`, but the `router` state has been initialized
|
|
367
|
+
// with another URL (e.g. used in combination with `NgxsStoragePlugin`), thus the
|
|
368
|
+
// `RouterNavigation` action will be dispatched and the user will be redirected to the
|
|
369
|
+
// previously saved URL. We want to prevent such behavior, so we perform this check
|
|
370
|
+
// `url` is a recognized URL by the Angular's router, while `currentUrl` is an actual URL
|
|
371
|
+
// entered in the browser's address bar
|
|
372
|
+
// `PathLocationStrategy.prototype.path()` returns a concatenation of
|
|
373
|
+
// `PlatformLocation.pathname` and normalized `PlatformLocation.search`.
|
|
374
|
+
// `Location.prototype.normalize` strips base href from the URL,
|
|
375
|
+
// if `baseHref` (declared in angular.json) for example is `/en`
|
|
376
|
+
// and the URL is `/test#anchor` - then `_locationStrategy.path(true)` will return `/en/test#anchor`,
|
|
377
|
+
// but `/en/test#anchor` is not known to the Angular's router, so we have to strip `/en`
|
|
378
|
+
// from the URL
|
|
379
|
+
/** @type {?} */
|
|
380
|
+
var currentUrl = _this._location.normalize(_this._locationStrategy.path(true));
|
|
381
|
+
/** @type {?} */
|
|
382
|
+
var currentUrlTree = _this._urlSerializer.parse(currentUrl);
|
|
383
|
+
// We need to serialize the URL because in that example `/test/?redirect=https://google.com/`
|
|
384
|
+
// Angular will recognize it as `/test?redirect=https:%2F%2Fwww.google.com%2F`
|
|
385
|
+
// so we have to run the `currentUrl` via the `UrlSerializer` that will encode characters
|
|
386
|
+
/** @type {?} */
|
|
387
|
+
var currentSerializedUrl = _this._urlSerializer.serialize(currentUrlTree);
|
|
388
|
+
// If URLs differ from each other - we've got to perform a redirect to the manually entered URL
|
|
389
|
+
// in the address bar, as it must have a priority
|
|
390
|
+
if (currentSerializedUrl !== url) {
|
|
391
|
+
_this._router.navigateByUrl(currentUrl);
|
|
392
|
+
}
|
|
393
|
+
}));
|
|
394
|
+
};
|
|
395
|
+
var RouterState_1;
|
|
396
|
+
RouterState.ctorParameters = function () { return [
|
|
397
|
+
{ type: Store },
|
|
398
|
+
{ type: Router },
|
|
399
|
+
{ type: RouterStateSerializer },
|
|
400
|
+
{ type: NgZone },
|
|
401
|
+
{ type: UrlSerializer },
|
|
402
|
+
{ type: LocationStrategy },
|
|
403
|
+
{ type: Location }
|
|
404
|
+
]; };
|
|
405
|
+
RouterState.decorators = [
|
|
406
|
+
{ type: Injectable }
|
|
407
|
+
];
|
|
408
|
+
/** @nocollapse */
|
|
409
|
+
RouterState.ctorParameters = function () { return [
|
|
410
|
+
{ type: Store },
|
|
411
|
+
{ type: Router },
|
|
412
|
+
{ type: RouterStateSerializer },
|
|
413
|
+
{ type: NgZone },
|
|
414
|
+
{ type: UrlSerializer },
|
|
415
|
+
{ type: LocationStrategy },
|
|
416
|
+
{ type: Location }
|
|
417
|
+
]; };
|
|
418
|
+
tslib_1.__decorate([
|
|
419
|
+
Action(Navigate),
|
|
420
|
+
tslib_1.__metadata("design:type", Function),
|
|
421
|
+
tslib_1.__metadata("design:paramtypes", [Object, Navigate]),
|
|
422
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
423
|
+
], RouterState.prototype, "navigate", null);
|
|
424
|
+
tslib_1.__decorate([
|
|
425
|
+
Action([RouterNavigation, RouterError, RouterCancel, RouterDataResolved]),
|
|
426
|
+
tslib_1.__metadata("design:type", Function),
|
|
427
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
428
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
429
|
+
], RouterState.prototype, "angularRouterAction", null);
|
|
430
|
+
tslib_1.__decorate([
|
|
431
|
+
Selector(),
|
|
432
|
+
tslib_1.__metadata("design:type", Function),
|
|
433
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
434
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
435
|
+
], RouterState, "state", null);
|
|
436
|
+
tslib_1.__decorate([
|
|
437
|
+
Selector(),
|
|
438
|
+
tslib_1.__metadata("design:type", Function),
|
|
439
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
440
|
+
tslib_1.__metadata("design:returntype", Object)
|
|
441
|
+
], RouterState, "url", null);
|
|
442
|
+
RouterState = RouterState_1 = tslib_1.__decorate([
|
|
443
|
+
State({
|
|
444
|
+
name: 'router',
|
|
445
|
+
defaults: {
|
|
446
|
+
state: undefined,
|
|
447
|
+
navigationId: undefined,
|
|
448
|
+
trigger: 'none'
|
|
449
|
+
}
|
|
450
|
+
}),
|
|
451
|
+
tslib_1.__metadata("design:paramtypes", [Store,
|
|
452
|
+
Router,
|
|
453
|
+
RouterStateSerializer,
|
|
454
|
+
NgZone,
|
|
455
|
+
UrlSerializer,
|
|
456
|
+
LocationStrategy,
|
|
457
|
+
Location])
|
|
458
|
+
], RouterState);
|
|
459
|
+
return RouterState;
|
|
460
|
+
}());
|
|
461
|
+
export { RouterState };
|
|
462
|
+
if (false) {
|
|
463
|
+
/**
|
|
464
|
+
* Determines how navigation was performed by the `RouterState` itself
|
|
465
|
+
* or outside via `new Navigate(...)`
|
|
466
|
+
* @type {?}
|
|
467
|
+
* @private
|
|
468
|
+
*/
|
|
469
|
+
RouterState.prototype._trigger;
|
|
470
|
+
/**
|
|
471
|
+
* That's the serialized state from the `Router` class
|
|
472
|
+
* @type {?}
|
|
473
|
+
* @private
|
|
474
|
+
*/
|
|
475
|
+
RouterState.prototype._routerState;
|
|
476
|
+
/**
|
|
477
|
+
* That's the value of the `RouterState` state
|
|
478
|
+
* @type {?}
|
|
479
|
+
* @private
|
|
480
|
+
*/
|
|
481
|
+
RouterState.prototype._storeState;
|
|
482
|
+
/**
|
|
483
|
+
* @type {?}
|
|
484
|
+
* @private
|
|
485
|
+
*/
|
|
486
|
+
RouterState.prototype._lastRoutesRecognized;
|
|
487
|
+
/**
|
|
488
|
+
* @type {?}
|
|
489
|
+
* @private
|
|
490
|
+
*/
|
|
491
|
+
RouterState.prototype._store;
|
|
492
|
+
/**
|
|
493
|
+
* @type {?}
|
|
494
|
+
* @private
|
|
495
|
+
*/
|
|
496
|
+
RouterState.prototype._router;
|
|
497
|
+
/**
|
|
498
|
+
* @type {?}
|
|
499
|
+
* @private
|
|
500
|
+
*/
|
|
501
|
+
RouterState.prototype._serializer;
|
|
502
|
+
/**
|
|
503
|
+
* @type {?}
|
|
504
|
+
* @private
|
|
505
|
+
*/
|
|
506
|
+
RouterState.prototype._ngZone;
|
|
507
|
+
/**
|
|
508
|
+
* @type {?}
|
|
509
|
+
* @private
|
|
510
|
+
*/
|
|
511
|
+
RouterState.prototype._urlSerializer;
|
|
512
|
+
/**
|
|
513
|
+
* @type {?}
|
|
514
|
+
* @private
|
|
515
|
+
*/
|
|
516
|
+
RouterState.prototype._locationStrategy;
|
|
517
|
+
/**
|
|
518
|
+
* @type {?}
|
|
519
|
+
* @private
|
|
520
|
+
*/
|
|
521
|
+
RouterState.prototype._location;
|
|
522
|
+
}
|
|
523
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvcm91dGVyLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9yb3V0ZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixNQUFNLEVBQ04sbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsYUFBYSxFQUNiLGVBQWUsRUFDZixhQUFhLEVBQ2QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFDTCxRQUFRLEVBRVIsWUFBWSxFQUNaLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQUVyRCxzQ0FJQzs7O0lBSEMsaUNBQVU7O0lBQ1Ysd0NBQXNCOztJQUN0QixtQ0FBdUI7OztJQTJDdkIscUJBQ1UsTUFBYSxFQUNiLE9BQWUsRUFDZixXQUF1RCxFQUN2RCxPQUFlLEVBQ2YsY0FBNkIsRUFDN0IsaUJBQW1DLEVBQ25DLFNBQW1CO1FBTm5CLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQTRD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RSxTQUFTO2dCQUN2QixPQUFPLEVBQUUsTUFBTTthQUNoQjtTQUNGLENBQUM7aURBZ0NrQixLQUFLO1lBQ0osTUFBTTtZQUNGLHFCQUFxQjtZQUN6QixNQUFNO1lBQ0MsYUFBYTtZQUNWLGdCQUFnQjtZQUN4QixRQUFRO09BcENsQixXQUFXLENBb092QjtJQUFELGtCQUFDO0NBQUEsSUFBQTtTQXBPWSxXQUFXOzs7Ozs7OztJQUt0QiwrQkFBeUM7Ozs7OztJQUt6QyxtQ0FBd0Q7Ozs7OztJQUt4RCxrQ0FBb0Q7Ozs7O0lBRXBELDRDQUF3RDs7Ozs7SUFhdEQsNkJBQXFCOzs7OztJQUNyQiw4QkFBdUI7Ozs7O0lBQ3ZCLGtDQUErRDs7Ozs7SUFDL0QsOEJBQXVCOzs7OztJQUN2QixxQ0FBcUM7Ozs7O0lBQ3JDLHdDQUEyQzs7Ozs7SUFDM0MsZ0NBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTmF2aWdhdGlvbkNhbmNlbCxcclxuICBOYXZpZ2F0aW9uRXJyb3IsXHJcbiAgUm91dGVyLFxyXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgUm91dGVzUmVjb2duaXplZCxcclxuICBSZXNvbHZlRW5kLFxyXG4gIFVybFNlcmlhbGl6ZXIsXHJcbiAgTmF2aWdhdGlvblN0YXJ0LFxyXG4gIE5hdmlnYXRpb25FbmRcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBMb2NhdGlvblN0cmF0ZWd5LCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5pbXBvcnQgeyBpc0FuZ3VsYXJJblRlc3RNb2RlIH0gZnJvbSAnQG5neHMvc3RvcmUvaW50ZXJuYWxzJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE5hdmlnYXRlLFxyXG4gIFJvdXRlckFjdGlvbixcclxuICBSb3V0ZXJDYW5jZWwsXHJcbiAgUm91dGVyRXJyb3IsXHJcbiAgUm91dGVyTmF2aWdhdGlvbixcclxuICBSb3V0ZXJEYXRhUmVzb2x2ZWRcclxufSBmcm9tICcuL3JvdXRlci5hY3Rpb25zJztcclxuaW1wb3J0IHsgUm91dGVyU3RhdGVTZXJpYWxpemVyIH0gZnJvbSAnLi9zZXJpYWxpemVyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyU3RhdGVNb2RlbDxUID0gUm91dGVyU3RhdGVTbmFwc2hvdD4ge1xyXG4gIHN0YXRlPzogVDtcclxuICBuYXZpZ2F0aW9uSWQ/OiBudW1iZXI7XHJcbiAgdHJpZ2dlcjogUm91dGVyVHJpZ2dlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVyVHJpZ2dlciA9ICdub25lJyB8ICdyb3V0ZXInIHwgJ3N0b3JlJztcclxuXHJcbkBTdGF0ZTxSb3V0ZXJTdGF0ZU1vZGVsPih7XHJcbiAgbmFtZTogJ3JvdXRlcicsXHJcbiAgZGVmYXVsdHM6IHtcclxuICAgIHN0YXRlOiB1bmRlZmluZWQsXHJcbiAgICBuYXZpZ2F0aW9uSWQ6IHVuZGVmaW5lZCxcclxuICAgIHRyaWdnZXI6ICdub25lJ1xyXG4gIH1cclxufSlcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUm91dGVyU3RhdGUge1xyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgaG93IG5hdmlnYXRpb24gd2FzIHBlcmZvcm1lZCBieSB0aGUgYFJvdXRlclN0YXRlYCBpdHNlbGZcclxuICAgKiBvciBvdXRzaWRlIHZpYSBgbmV3IE5hdmlnYXRlKC4uLilgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfdHJpZ2dlcjogUm91dGVyVHJpZ2dlciA9ICdub25lJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhhdCdzIHRoZSBzZXJpYWxpemVkIHN0YXRlIGZyb20gdGhlIGBSb3V0ZXJgIGNsYXNzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcm91dGVyU3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhhdCdzIHRoZSB2YWx1ZSBvZiB0aGUgYFJvdXRlclN0YXRlYCBzdGF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3N0b3JlU3RhdGU6IFJvdXRlclN0YXRlTW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfbGFzdFJvdXRlc1JlY29nbml6ZWQ6IFJvdXRlc1JlY29nbml6ZWQgPSBudWxsITtcclxuXHJcbiAgQFNlbGVjdG9yKClcclxuICBzdGF0aWMgc3RhdGU8VCA9IFJvdXRlclN0YXRlU25hcHNob3Q+KHN0YXRlOiBSb3V0ZXJTdGF0ZU1vZGVsPFQ+KSB7XHJcbiAgICByZXR1cm4gc3RhdGUgJiYgc3RhdGUuc3RhdGU7XHJcbiAgfVxyXG5cclxuICBAU2VsZWN0b3IoKVxyXG4gIHN0YXRpYyB1cmwoc3RhdGU6IFJvdXRlclN0YXRlTW9kZWwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHN0YXRlICYmIHN0YXRlLnN0YXRlICYmIHN0YXRlLnN0YXRlLnVybDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9zZXJpYWxpemVyOiBSb3V0ZXJTdGF0ZVNlcmlhbGl6ZXI8Um91dGVyU3RhdGVTbmFwc2hvdD4sXHJcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgX3VybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXHJcbiAgICBwcml2YXRlIF9sb2NhdGlvblN0cmF0ZWd5OiBMb2NhdGlvblN0cmF0ZWd5LFxyXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldFVwU3RvcmVMaXN0ZW5lcigpO1xyXG4gICAgdGhpcy5zZXRVcFJvdXRlckV2ZW50c0xpc3RlbmVyKCk7XHJcbiAgICB0aGlzLmNoZWNrSW5pdGlhbE5hdmlnYXRpb25PbmNlKCk7XHJcbiAgfVxyXG5cclxuICBAQWN0aW9uKE5hdmlnYXRlKVxyXG4gIG5hdmlnYXRlKF86IFN0YXRlQ29udGV4dDxSb3V0ZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBOYXZpZ2F0ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25nWm9uZS5ydW4oKCkgPT5cclxuICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKGFjdGlvbi5wYXRoLCB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IGFjdGlvbi5xdWVyeVBhcmFtcyxcclxuICAgICAgICAuLi5hY3Rpb24uZXh0cmFzXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQEFjdGlvbihbUm91dGVyTmF2aWdhdGlvbiwgUm91dGVyRXJyb3IsIFJvdXRlckNhbmNlbCwgUm91dGVyRGF0YVJlc29sdmVkXSlcclxuICBhbmd1bGFyUm91dGVyQWN0aW9uKFxyXG4gICAgY3R4OiBTdGF0ZUNvbnRleHQ8Um91dGVyU3RhdGVNb2RlbD4sXHJcbiAgICBhY3Rpb246IFJvdXRlckFjdGlvbjxSb3V0ZXJTdGF0ZU1vZGVsLCBSb3V0ZXJTdGF0ZVNuYXBzaG90PlxyXG4gICk6IHZvaWQge1xyXG4gICAgY3R4LnNldFN0YXRlKHtcclxuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXHJcbiAgICAgIHRyaWdnZXI6IGFjdGlvbi50cmlnZ2VyLFxyXG4gICAgICBzdGF0ZTogYWN0aW9uLnJvdXRlclN0YXRlLFxyXG4gICAgICBuYXZpZ2F0aW9uSWQ6IGFjdGlvbi5ldmVudC5pZFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwU3RvcmVMaXN0ZW5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b3JlLnNlbGVjdChSb3V0ZXJTdGF0ZSkuc3Vic2NyaWJlKChzdGF0ZTogUm91dGVyU3RhdGVNb2RlbCB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgICB0aGlzLm5hdmlnYXRlSWZOZWVkZWQoc3RhdGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwUm91dGVyRXZlbnRzTGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXJ0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZXNSZWNvZ25pemVkKSB7XHJcbiAgICAgICAgdGhpcy5fbGFzdFJvdXRlc1JlY29nbml6ZWQgPSBldmVudDtcclxuICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFJlc29sdmVFbmQpIHtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUm91dGVyRGF0YVJlc29sdmVkKGV2ZW50KTtcclxuICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwpIHtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUm91dGVyQ2FuY2VsKGV2ZW50KTtcclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUm91dGVyRXJyb3IoZXZlbnQpO1xyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmQoKTtcclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uU3RhcnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yb3V0ZXJTdGF0ZSA9IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplKHRoaXMuX3JvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3RyaWdnZXIgIT09ICdub25lJykge1xyXG4gICAgICB0aGlzLl9zdG9yZVN0YXRlID0gdGhpcy5fc3RvcmUuc2VsZWN0U25hcHNob3QoUm91dGVyU3RhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkRGlzcGF0Y2hSb3V0ZXJOYXZpZ2F0aW9uKCkpIHtcclxuICAgICAgdGhpcy5kaXNwYXRjaFJvdXRlck5hdmlnYXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdWxkRGlzcGF0Y2hSb3V0ZXJOYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLl9zdG9yZVN0YXRlKSByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyICE9PSAnc3RvcmUnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZUlmTmVlZGVkKHN0YXRlOiBSb3V0ZXJTdGF0ZU1vZGVsIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBjb25zdCBjYW5Ta2lwTmF2aWdhdGlvbiA9XHJcbiAgICAgICF0aGlzLl9zdG9yZVN0YXRlIHx8XHJcbiAgICAgICF0aGlzLl9zdG9yZVN0YXRlLnN0YXRlIHx8XHJcbiAgICAgICFzdGF0ZSB8fFxyXG4gICAgICBzdGF0ZS50cmlnZ2VyID09PSAncm91dGVyJyB8fFxyXG4gICAgICB0aGlzLl9yb3V0ZXIudXJsID09PSB0aGlzLl9zdG9yZVN0YXRlLnN0YXRlLnVybDtcclxuXHJcbiAgICBpZiAoY2FuU2tpcE5hdmlnYXRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3RyaWdnZXIgPSAnc3RvcmUnO1xyXG4gICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuX3N0b3JlU3RhdGUhLnN0YXRlIS51cmwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc3BhdGNoUm91dGVyTmF2aWdhdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHRSb3V0ZXJTdGF0ZSA9IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplKHRoaXMuX2xhc3RSb3V0ZXNSZWNvZ25pemVkLnN0YXRlKTtcclxuXHJcbiAgICB0aGlzLmRpc3BhdGNoUm91dGVyQWN0aW9uKFxyXG4gICAgICBuZXcgUm91dGVyTmF2aWdhdGlvbihcclxuICAgICAgICBuZXh0Um91dGVyU3RhdGUsXHJcbiAgICAgICAgbmV3IFJvdXRlc1JlY29nbml6ZWQoXHJcbiAgICAgICAgICB0aGlzLl9sYXN0Um91dGVzUmVjb2duaXplZC5pZCxcclxuICAgICAgICAgIHRoaXMuX2xhc3RSb3V0ZXNSZWNvZ25pemVkLnVybCxcclxuICAgICAgICAgIHRoaXMuX2xhc3RSb3V0ZXNSZWNvZ25pemVkLnVybEFmdGVyUmVkaXJlY3RzLFxyXG4gICAgICAgICAgbmV4dFJvdXRlclN0YXRlXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0aGlzLl90cmlnZ2VyXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc3BhdGNoUm91dGVyQ2FuY2VsKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc3BhdGNoUm91dGVyQWN0aW9uKFxyXG4gICAgICBuZXcgUm91dGVyQ2FuY2VsKHRoaXMuX3JvdXRlclN0YXRlISwgdGhpcy5fc3RvcmVTdGF0ZSwgZXZlbnQsIHRoaXMuX3RyaWdnZXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwYXRjaFJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hSb3V0ZXJBY3Rpb24oXHJcbiAgICAgIG5ldyBSb3V0ZXJFcnJvcihcclxuICAgICAgICB0aGlzLl9yb3V0ZXJTdGF0ZSEsXHJcbiAgICAgICAgdGhpcy5fc3RvcmVTdGF0ZSxcclxuICAgICAgICBuZXcgTmF2aWdhdGlvbkVycm9yKGV2ZW50LmlkLCBldmVudC51cmwsIGAke2V2ZW50fWApLFxyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzcGF0Y2hSb3V0ZXJBY3Rpb248VD4oYWN0aW9uOiBSb3V0ZXJBY3Rpb248VD4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3RyaWdnZXIgPSAncm91dGVyJztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhY3Rpb24pO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5fdHJpZ2dlciA9ICdub25lJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzcGF0Y2hSb3V0ZXJEYXRhUmVzb2x2ZWQoZXZlbnQ6IFJlc29sdmVFbmQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvdXRlclN0YXRlID0gdGhpcy5fc2VyaWFsaXplci5zZXJpYWxpemUoZXZlbnQuc3RhdGUpO1xyXG4gICAgdGhpcy5kaXNwYXRjaFJvdXRlckFjdGlvbihuZXcgUm91dGVyRGF0YVJlc29sdmVkKHJvdXRlclN0YXRlLCBldmVudCwgdGhpcy5fdHJpZ2dlcikpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RyaWdnZXIgPSAnbm9uZSc7XHJcbiAgICB0aGlzLl9zdG9yZVN0YXRlID0gbnVsbDtcclxuICAgIHRoaXMuX3JvdXRlclN0YXRlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vIHNlbnNlIHRvIG1lc3MgdXAgdGhlIGBzZXRVcFJvdXRlckV2ZW50c0xpc3RlbmVyYCBtZXRob2QgYXMgd2UgaGF2ZVxyXG4gICAqIHRvIHBlcmZvcm0gdGhpcyBjaGVjayBvbmx5IG9uY2UgYW5kIHVuc3Vic2NyaWJlIGFmdGVyIHRoZSBmaXJzdCBldmVudFxyXG4gICAqIGlzIHRyaWdnZXJlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2hlY2tJbml0aWFsTmF2aWdhdGlvbk9uY2UoKTogdm9pZCB7XHJcbiAgICBpZiAoaXNBbmd1bGFySW5UZXN0TW9kZSgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpcnN0KChldmVudCk6IGV2ZW50IGlzIFJvdXRlc1JlY29nbml6ZWQgPT4gZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZXNSZWNvZ25pemVkKSlcclxuICAgICAgLnN1YnNjcmliZSgoeyB1cmwgfSkgPT4ge1xyXG4gICAgICAgIC8vIGBsb2NhdGlvbi5wYXRobmFtZWAgYWx3YXlzIGVxdWFscyBtYW51YWxseSBlbnRlcmVkIFVSTCBpbiB0aGUgYWRkcmVzcyBiYXJcclxuICAgICAgICAvLyBlLmcuIGBsb2NhdGlvbi5wYXRobmFtZSA9PT0gJy9mb28nYCwgYnV0IHRoZSBgcm91dGVyYCBzdGF0ZSBoYXMgYmVlbiBpbml0aWFsaXplZFxyXG4gICAgICAgIC8vIHdpdGggYW5vdGhlciBVUkwgKGUuZy4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBOZ3hzU3RvcmFnZVBsdWdpbmApLCB0aHVzIHRoZVxyXG4gICAgICAgIC8vIGBSb3V0ZXJOYXZpZ2F0aW9uYCBhY3Rpb24gd2lsbCBiZSBkaXNwYXRjaGVkIGFuZCB0aGUgdXNlciB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlXHJcbiAgICAgICAgLy8gcHJldmlvdXNseSBzYXZlZCBVUkwuIFdlIHdhbnQgdG8gcHJldmVudCBzdWNoIGJlaGF2aW9yLCBzbyB3ZSBwZXJmb3JtIHRoaXMgY2hlY2tcclxuXHJcbiAgICAgICAgLy8gYHVybGAgaXMgYSByZWNvZ25pemVkIFVSTCBieSB0aGUgQW5ndWxhcidzIHJvdXRlciwgd2hpbGUgYGN1cnJlbnRVcmxgIGlzIGFuIGFjdHVhbCBVUkxcclxuICAgICAgICAvLyBlbnRlcmVkIGluIHRoZSBicm93c2VyJ3MgYWRkcmVzcyBiYXJcclxuICAgICAgICAvLyBgUGF0aExvY2F0aW9uU3RyYXRlZ3kucHJvdG90eXBlLnBhdGgoKWAgcmV0dXJucyBhIGNvbmNhdGVuYXRpb24gb2ZcclxuICAgICAgICAvLyBgUGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZWAgYW5kIG5vcm1hbGl6ZWQgYFBsYXRmb3JtTG9jYXRpb24uc2VhcmNoYC5cclxuXHJcbiAgICAgICAgLy8gYExvY2F0aW9uLnByb3RvdHlwZS5ub3JtYWxpemVgIHN0cmlwcyBiYXNlIGhyZWYgZnJvbSB0aGUgVVJMLFxyXG4gICAgICAgIC8vIGlmIGBiYXNlSHJlZmAgKGRlY2xhcmVkIGluIGFuZ3VsYXIuanNvbikgZm9yIGV4YW1wbGUgaXMgYC9lbmBcclxuICAgICAgICAvLyBhbmQgdGhlIFVSTCBpcyBgL3Rlc3QjYW5jaG9yYCAtIHRoZW4gYF9sb2NhdGlvblN0cmF0ZWd5LnBhdGgodHJ1ZSlgIHdpbGwgcmV0dXJuIGAvZW4vdGVzdCNhbmNob3JgLFxyXG4gICAgICAgIC8vIGJ1dCBgL2VuL3Rlc3QjYW5jaG9yYCBpcyBub3Qga25vd24gdG8gdGhlIEFuZ3VsYXIncyByb3V0ZXIsIHNvIHdlIGhhdmUgdG8gc3RyaXAgYC9lbmBcclxuICAgICAgICAvLyBmcm9tIHRoZSBVUkxcclxuICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5fbG9jYXRpb24ubm9ybWFsaXplKHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kucGF0aCh0cnVlKSk7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFVybFRyZWUgPSB0aGlzLl91cmxTZXJpYWxpemVyLnBhcnNlKGN1cnJlbnRVcmwpO1xyXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gc2VyaWFsaXplIHRoZSBVUkwgYmVjYXVzZSBpbiB0aGF0IGV4YW1wbGUgYC90ZXN0Lz9yZWRpcmVjdD1odHRwczovL2dvb2dsZS5jb20vYFxyXG4gICAgICAgIC8vIEFuZ3VsYXIgd2lsbCByZWNvZ25pemUgaXQgYXMgYC90ZXN0P3JlZGlyZWN0PWh0dHBzOiUyRiUyRnd3dy5nb29nbGUuY29tJTJGYFxyXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcnVuIHRoZSBgY3VycmVudFVybGAgdmlhIHRoZSBgVXJsU2VyaWFsaXplcmAgdGhhdCB3aWxsIGVuY29kZSBjaGFyYWN0ZXJzXHJcbiAgICAgICAgY29uc3QgY3VycmVudFNlcmlhbGl6ZWRVcmwgPSB0aGlzLl91cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShjdXJyZW50VXJsVHJlZSk7XHJcblxyXG4gICAgICAgIC8vIElmIFVSTHMgZGlmZmVyIGZyb20gZWFjaCBvdGhlciAtIHdlJ3ZlIGdvdCB0byBwZXJmb3JtIGEgcmVkaXJlY3QgdG8gdGhlIG1hbnVhbGx5IGVudGVyZWQgVVJMXHJcbiAgICAgICAgLy8gaW4gdGhlIGFkZHJlc3MgYmFyLCBhcyBpdCBtdXN0IGhhdmUgYSBwcmlvcml0eVxyXG4gICAgICAgIGlmIChjdXJyZW50U2VyaWFsaXplZFVybCAhPT0gdXJsKSB7XHJcbiAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybChjdXJyZW50VXJsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|