@coolon/angular-ui-powerups 0.0.84 → 0.0.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/coolon-angular-ui-powerups.umd.js +61 -57
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +34 -55
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +64 -61
- package/fesm2015/coolon-angular-ui-powerups.js +32 -52
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +62 -58
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -5,12 +5,11 @@
|
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
6
|
import { Component, EventEmitter, Inject, Input, Optional, Output, SkipSelf, ViewChild } from '@angular/core';
|
|
7
7
|
import { Router, RouterOutlet } from '@angular/router';
|
|
8
|
-
import { DelegatingValueModel, Dsl, Guard, ListModel, MutableValueModel, StoreInListModel,
|
|
8
|
+
import { DelegatingValueModel, Dsl, Guard, ListModel, MutableValueModel, StoreInListModel, UseDelegate } from '@coolon/pectin';
|
|
9
|
+
import * as _ from 'lodash';
|
|
9
10
|
import { DisposableComponent } from '../../../components/disposable-component';
|
|
10
|
-
import { PlaceComponent } from '../../place-component';
|
|
11
11
|
import { AUP_PLACE_CONFIG } from '../../place-config';
|
|
12
12
|
import { PlaceRouter } from '../../place-router';
|
|
13
|
-
import { Visit } from '../../visit';
|
|
14
13
|
import { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';
|
|
15
14
|
/**
|
|
16
15
|
* @record
|
|
@@ -50,7 +49,7 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
50
49
|
this._inRouteVisitUpdate = new Guard();
|
|
51
50
|
this._activatedRouteModel = new MutableValueModel();
|
|
52
51
|
this._placeDefinition = new MutableValueModel();
|
|
53
|
-
this.
|
|
52
|
+
this.initialPlaceIndex = null;
|
|
54
53
|
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
55
54
|
this.parentOutletModel = new MutableValueModel(parentOutlet);
|
|
56
55
|
this._activePlaceVisitModel.setDelegate(new MutableValueModel());
|
|
@@ -73,17 +72,21 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
73
72
|
p => (/** @type {?} */ (p.constructor))));
|
|
74
73
|
this.placeAnimationOrder = chain(this.customPlaceAnimationOrderModel)
|
|
75
74
|
.otherwise(defaultPlaceAnimationOrder)
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
* @param {?} order
|
|
75
|
+
.reduce((/**
|
|
76
|
+
* @param {?} placesInOrder
|
|
79
77
|
* @return {?}
|
|
80
78
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
(placesInOrder) => {
|
|
80
|
+
/** @type {?} */
|
|
81
|
+
let placeIndex = 0;
|
|
82
|
+
if (activatePlaceType.value) {
|
|
83
|
+
placeIndex = placesInOrder.indexOf(activatePlaceType.value);
|
|
84
|
+
if (_.isNil(this.initialPlaceIndex)) {
|
|
85
|
+
this.initialPlaceIndex = placeIndex;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return _.isNil(this.initialPlaceIndex) ? 0 : placeIndex - this.initialPlaceIndex;
|
|
89
|
+
}), { dependsOn: activatePlaceType });
|
|
87
90
|
// Push incoming changes into the component
|
|
88
91
|
this.routerVisit = chain(this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);
|
|
89
92
|
// Our router visit will change when our active is nullified during deactivation, which will push a null visit
|
|
@@ -120,18 +123,26 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
120
123
|
*/
|
|
121
124
|
ngOnInit() {
|
|
122
125
|
}
|
|
126
|
+
// @Trace()
|
|
127
|
+
/**
|
|
128
|
+
* @return {?}
|
|
129
|
+
*/
|
|
130
|
+
getAnimationOrder() {
|
|
131
|
+
return this.placeAnimationOrder.value;
|
|
132
|
+
}
|
|
123
133
|
/**
|
|
124
134
|
* @return {?}
|
|
125
135
|
*/
|
|
126
136
|
get animationDuration() {
|
|
127
137
|
return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';
|
|
128
138
|
}
|
|
139
|
+
// @Trace()
|
|
129
140
|
/**
|
|
130
141
|
* @param {?} visit
|
|
131
142
|
* @return {?}
|
|
132
143
|
*/
|
|
133
144
|
navigate(visit) {
|
|
134
|
-
console.log({ activatedRoute: this._activatedRouteModel.value });
|
|
145
|
+
// console.log({ activatedRoute: this._activatedRouteModel.value });
|
|
135
146
|
this.placeRouter.navigate(visit, {
|
|
136
147
|
relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null
|
|
137
148
|
});
|
|
@@ -142,6 +153,7 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
142
153
|
get parentOutlet() {
|
|
143
154
|
return this.parentOutletModel.value;
|
|
144
155
|
}
|
|
156
|
+
// @Trace()
|
|
145
157
|
/**
|
|
146
158
|
* @return {?}
|
|
147
159
|
*/
|
|
@@ -152,7 +164,7 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
152
164
|
visit,
|
|
153
165
|
place: visit ? visit.placeDefinition.component : null,
|
|
154
166
|
inOutletActivation: this._inOutletActivation.value,
|
|
155
|
-
inRoutingSession: this.placeRouter.navigationSessionActive.value
|
|
167
|
+
inRoutingSession: this.placeRouter.navigationSessionActive.value
|
|
156
168
|
});
|
|
157
169
|
if (visit) { // can be null while the place and index sync up
|
|
158
170
|
this._inRouteVisitUpdate.whileTrue((/**
|
|
@@ -185,6 +197,7 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
185
197
|
get activatedRouteModel() {
|
|
186
198
|
return this._activatedRouteModel.readonly;
|
|
187
199
|
}
|
|
200
|
+
// @Trace()
|
|
188
201
|
/**
|
|
189
202
|
* @param {?} routerOutlet
|
|
190
203
|
* @param {?} place
|
|
@@ -213,6 +226,7 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
213
226
|
this.animationDone();
|
|
214
227
|
}
|
|
215
228
|
}
|
|
229
|
+
// @Trace()
|
|
216
230
|
/**
|
|
217
231
|
* @return {?}
|
|
218
232
|
*/
|
|
@@ -221,19 +235,20 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
221
235
|
* @return {?}
|
|
222
236
|
*/
|
|
223
237
|
() => {
|
|
224
|
-
this.isOnInitialPlace = false;
|
|
225
238
|
this._activePlace.value = null;
|
|
226
239
|
this._activatedRouteModel.value = null;
|
|
227
240
|
this._placeDefinition.value = null;
|
|
228
241
|
this._activePlaceVisitModel.setDelegate(null);
|
|
229
242
|
}));
|
|
230
243
|
}
|
|
244
|
+
// @Trace()
|
|
231
245
|
/**
|
|
232
246
|
* @return {?}
|
|
233
247
|
*/
|
|
234
248
|
animationStarted() {
|
|
235
249
|
console.log({ activePlace: this._activePlace.value });
|
|
236
250
|
}
|
|
251
|
+
// @Trace()
|
|
237
252
|
/**
|
|
238
253
|
* @return {?}
|
|
239
254
|
*/
|
|
@@ -246,7 +261,7 @@ export class PlaceOutletComponent extends DisposableComponent {
|
|
|
246
261
|
PlaceOutletComponent.decorators = [
|
|
247
262
|
{ type: Component, args: [{
|
|
248
263
|
selector: 'aup-place-outlet',
|
|
249
|
-
template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value:
|
|
264
|
+
template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
|
|
250
265
|
animations: [LEFT_RIGHT_PLACE_ANIMATION],
|
|
251
266
|
styles: [":host{display:flex;flex-direction:column;min-height:0;overflow-x:hidden}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
|
|
252
267
|
}] }
|
|
@@ -273,42 +288,6 @@ tslib_1.__decorate([
|
|
|
273
288
|
StoreInListModel('customPlaceAnimationOrderModel'),
|
|
274
289
|
tslib_1.__metadata("design:type", Array)
|
|
275
290
|
], PlaceOutletComponent.prototype, "customPlaceAnimationOrder", void 0);
|
|
276
|
-
tslib_1.__decorate([
|
|
277
|
-
Trace(),
|
|
278
|
-
tslib_1.__metadata("design:type", Function),
|
|
279
|
-
tslib_1.__metadata("design:paramtypes", [Visit]),
|
|
280
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
281
|
-
], PlaceOutletComponent.prototype, "navigate", null);
|
|
282
|
-
tslib_1.__decorate([
|
|
283
|
-
Trace(),
|
|
284
|
-
tslib_1.__metadata("design:type", Function),
|
|
285
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
286
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
287
|
-
], PlaceOutletComponent.prototype, "pushRouteChangesToVisit", null);
|
|
288
|
-
tslib_1.__decorate([
|
|
289
|
-
Trace(),
|
|
290
|
-
tslib_1.__metadata("design:type", Function),
|
|
291
|
-
tslib_1.__metadata("design:paramtypes", [RouterOutlet, PlaceComponent]),
|
|
292
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
293
|
-
], PlaceOutletComponent.prototype, "onOutletActivated", null);
|
|
294
|
-
tslib_1.__decorate([
|
|
295
|
-
Trace(),
|
|
296
|
-
tslib_1.__metadata("design:type", Function),
|
|
297
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
298
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
299
|
-
], PlaceOutletComponent.prototype, "onOutletDeactivated", null);
|
|
300
|
-
tslib_1.__decorate([
|
|
301
|
-
Trace(),
|
|
302
|
-
tslib_1.__metadata("design:type", Function),
|
|
303
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
304
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
305
|
-
], PlaceOutletComponent.prototype, "animationStarted", null);
|
|
306
|
-
tslib_1.__decorate([
|
|
307
|
-
Trace(),
|
|
308
|
-
tslib_1.__metadata("design:type", Function),
|
|
309
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
310
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
311
|
-
], PlaceOutletComponent.prototype, "animationDone", null);
|
|
312
291
|
if (false) {
|
|
313
292
|
/** @type {?} */
|
|
314
293
|
PlaceOutletComponent.prototype.animate;
|
|
@@ -371,7 +350,7 @@ if (false) {
|
|
|
371
350
|
* @type {?}
|
|
372
351
|
* @private
|
|
373
352
|
*/
|
|
374
|
-
PlaceOutletComponent.prototype.
|
|
353
|
+
PlaceOutletComponent.prototype.initialPlaceIndex;
|
|
375
354
|
/**
|
|
376
355
|
* @type {?}
|
|
377
356
|
* @private
|
|
@@ -390,4 +369,4 @@ if (false) {
|
|
|
390
369
|
/** @type {?} */
|
|
391
370
|
PlaceOutletComponent.prototype.placeConfig;
|
|
392
371
|
}
|
|
393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxXQUFXLEVBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFFbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFHaEUsdUJBTUM7OztJQUxDLG1DQUF5Qzs7Ozs7SUFFekMsNkRBQW1EOzs7O0lBRW5ELGtEQUFxQjs7QUFTdkIsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjs7Ozs7OztJQW1DM0QsWUFBNkIsTUFBYyxFQUNkLFdBQXdCLEVBQ00sV0FBd0IsRUFDL0MsWUFB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Ozs7OztJQUN4RSxzREFBbUU7Ozs7O0lBRW5FLG1EQUFtRDs7Ozs7SUFDbkQscURBQXFEOzs7OztJQUNyRCwrQ0FBeUQ7Ozs7O0lBQ3pELG1EQUFtRDs7Ozs7SUFDbkQsb0RBQWdGOzs7OztJQUVoRixnREFBNkU7Ozs7O0lBQzdFLGlEQUFtRTs7SUFDbkUsbURBQTZEOzs7OztJQUM3RCxnREFBZ0M7Ozs7O0lBQ2hDLDJDQUE0Qzs7Ozs7SUFFaEMsc0NBQStCOzs7OztJQUMvQiwyQ0FBeUM7O0lBQ3pDLDJDQUF1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNraXBTZWxmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRHNsLFxuICBHdWFyZCxcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgU3RvcmVJbkxpc3RNb2RlbCxcbiAgVHJhY2UsXG4gIFVzZURlbGVnYXRlLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQVVQX1BMQUNFX0NPTkZJRywgUGxhY2VDb25maWcgfSBmcm9tICcuLi8uLi9wbGFjZS1jb25maWcnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4uLy4uL3BsYWNlLXJvdXRlcic7XG5cbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vLi4vdmlzaXQnO1xuaW1wb3J0IHsgTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT04gfSBmcm9tICcuL3JvdXRlLWFuaW1hdGlvbnMnO1xuXG4vLyBRdWljayBoYWNrIHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCBQbGFjZUNvbXBvbmVudHMuXG5pbnRlcmZhY2UgUGxhY2VSZWYge1xuICByZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvblxuXG4gIGluaXRpYWxpc2VCaW5kaW5ncyhwYXJhbTogVmFsdWVNb2RlbDxWaXNpdD4pOiB2b2lkO1xuXG4gIG9uUGxhY2VSZWFkeSgpOiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtcGxhY2Utb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT05dXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlT3V0bGV0Q29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgYW5pbWF0ZSA9IHRydWU7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbCcpIEBVc2VEZWxlZ2F0ZSgpXG4gIGN1c3RvbVBsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbDogTGlzdE1vZGVsPENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+PjtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgncGxhY2VBbmltYXRpb25PcmRlcicpIEBTdG9yZUluTGlzdE1vZGVsKCdjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBsYWNlQ29tcG9uZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3JvdXRlT3V0bGV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm91dGVyT3V0OiBSb3V0ZXJPdXRsZXQ7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVQbGFjZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUNvbXBvbmVudD4oKTtcbiAgcHJpdmF0ZSBfYWN0aXZlUGxhY2VWaXNpdE1vZGVsID0gbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPFZpc2l0PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luT3V0bGV0QWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldERlYWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldFVwZGF0ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5Sb3V0ZVZpc2l0VXBkYXRlID0gbmV3IEd1YXJkKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZFJvdXRlTW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8QWN0aXZhdGVkUm91dGU+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VEZWZpbml0aW9uID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlRGVmaW5pdGlvbj4oKTtcbiAgcHJpdmF0ZSBwYXJlbnRPdXRsZXRNb2RlbDogTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VPdXRsZXRDb21wb25lbnQ+O1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhY2VBbmltYXRpb25PcmRlcjogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG4gIHByaXZhdGUgaXNPbkluaXRpYWxQbGFjZSA9IHRydWU7XG4gIHByaXZhdGUgcm91dGVyVmlzaXQ6IFZhbHVlTW9kZWxDaGFpbjxWaXNpdD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVVQX1BMQUNFX0NPTkZJRykgcmVhZG9ubHkgcGxhY2VDb25maWc6IFBsYWNlQ29uZmlnLFxuICAgICAgICAgICAgICBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBwYXJlbnRPdXRsZXQ6IFBsYWNlT3V0bGV0Q29tcG9uZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgdGhpcy5wYXJlbnRPdXRsZXRNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbChwYXJlbnRPdXRsZXQpO1xuICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZShuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCkpO1xuICAgIHRoaXMuX2luT3V0bGV0VXBkYXRlID0gdmFsdWVPZi5hbnkodGhpcy5faW5PdXRsZXREZWFjdGl2YXRpb24sIHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbikuYXJlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMucGFyZW50T3V0bGV0TW9kZWwpXG4gICAgICAucHVsbFZhbHVlTW9kZWwobyA9PiBvLmFjdGl2ZVBsYWNlTW9kZWwpXG4gICAgICAucGx1Y2soJ3BsYWNlRGVmaW5pdGlvbicpXG4gICAgICAucGx1Y2tMaXN0KCdjaGlsZHJlbicpXG4gICAgICAucGx1Y2soJ2NvbXBvbmVudCcpO1xuXG4gICAgY29uc3QgYWN0aXZhdGVQbGFjZVR5cGUgPSBjaGFpbih0aGlzLmFjdGl2ZVBsYWNlTW9kZWwpLm1hcChwID0+IHAuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICAgIHRoaXMucGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMuY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsKVxuICAgICAgLm90aGVyd2lzZShkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlcilcbiAgICAgIC5pbmRleE9mKGFjdGl2YXRlUGxhY2VUeXBlKVxuICAgICAgLm1hcChvcmRlciA9PiB7XG4gICAgICAgIC8vIHdlIGdldCAtMSBvbiB0aGUgZmlyc3QgbG9hZCB3aGljaCB0cmlnZ2VycyBhbiBhbmltYXRpb24gdG8gdGhlIGZpcnN0IHBhZ2UsIHNvIGFsd2F5IHBpbiBpdCB0byAwXG4gICAgICAgIC8vIGlmIHdlJ3JlIGFuaW1hdGluZy5cbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbkluaXRpYWxQbGFjZSA/IDAgOlxuICAgICAgICAgIHRoaXMuYW5pbWF0ZSA/IE1hdGgubWF4KG9yZGVyLCAwKSA6IDA7XG4gICAgICB9KTtcblxuICAgIC8vIFB1c2ggaW5jb21pbmcgY2hhbmdlcyBpbnRvIHRoZSBjb21wb25lbnRcbiAgICB0aGlzLnJvdXRlclZpc2l0ID0gY2hhaW4odGhpcy5fYWN0aXZlUGxhY2UpLnBsdWNrKCdwbGFjZURlZmluaXRpb24nKS5maW5kSW4ocGxhY2VSb3V0ZXIuYWN0aXZlVmlzaXRJbmRleCk7XG4gICAgLy8gT3VyIHJvdXRlciB2aXNpdCB3aWxsIGNoYW5nZSB3aGVuIG91ciBhY3RpdmUgaXMgbnVsbGlmaWVkIGR1cmluZyBkZWFjdGl2YXRpb24sIHdoaWNoIHdpbGwgcHVzaCBhIG51bGwgdmlzaXRcbiAgICAvLyB0aGUgdGhlIGRlYWN0aXZhdGVkIGNvbXBvbmVudCwgd2hpY2ggd2lsbCBudWtlIGl0J3MgdmlldyBiZWZvcmUgdGhlIGFuaW1hdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAgICAvLyBUaGUgdmlzaXQgd2lsbCBhbHdheSB1cGRhdGVkIGFmdGVyIHRoZSByb3V0ZXIgc2Vzc2lvbiBpcyBmaW5zaXNlZCAod2hlbiB0aGUgbmV3IHZpc2l0cyBhcmUgcmVnaXN0ZXJlZCkgc29cbiAgICAvLyB3ZSBjYW4gc2FmZWx5IGlnbm9yZSBpdCBkdXJpbmcgb3V0bGV0IGNoYW5nZXMgYXMgdGhlc2UgYWx3YXlzIGhhcHBlbiBiZWZvcmUgdGhlIHJvdXRlciBzZXNzaW9uIGVuZHMuXG4gICAgd2hlbi52YWx1ZU9mKHRoaXMucm91dGVyVmlzaXQpLmNoYW5nZXMoKCkgPT4gdGhpcy5wdXNoUm91dGVDaGFuZ2VzVG9WaXNpdCgpLCB7dW5sZXNzOiB0aGlzLl9pbk91dGxldFVwZGF0ZX0pO1xuXG4gICAgLy8gSGFuZGxlIGNvbXBvbmVudCBiYXNlZCBjaGFuZ2VzXG4gICAgd2hlbi52YWx1ZU9mKHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbCkuY2hhbmdlcygobmV4dCwgcHJldmlvdXMpID0+IHtcbiAgICAgIHRoaXMucHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUobmV4dCwgcHJldmlvdXMpO1xuICAgIH0sIHtcbiAgICAgIHVubGVzczogdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZVxuICAgIH0pO1xuXG4gICAgY2hhaW4odGhpcy5fYWN0aXZlUGxhY2UpXG4gICAgICAucG9zdHBvbmVXaGlsZShwbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZSlcbiAgICAgIC5zdWJzY3JpYmUocGxhY2UgPT4gdGhpcy5wbGFjZUNoYW5nZWQuZW1pdChwbGFjZSkpO1xuXG4gICAgLy8gY29uc3QgdHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoKS5vbkV2ZW50KGUgPT4gY29uc29sZS5sb2coZS50b1N0cmluZygpKSk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ2luUm91dGVWaXNpdFVwZGF0ZScsIGluUm91dGVWaXNpdFVwZGF0ZSk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgZ2V0IGFuaW1hdGlvbkR1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnBsYWNlQ29uZmlnICYmIHRoaXMucGxhY2VDb25maWcuYW5pbWF0aW9uRHVyYXRpb24gPyB0aGlzLnBsYWNlQ29uZmlnLmFuaW1hdGlvbkR1cmF0aW9uIDogJzUwMG1zJztcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIG5hdmlnYXRlKHZpc2l0OiBWaXNpdCkge1xuICAgIGNvbnNvbGUubG9nKHsgYWN0aXZhdGVkUm91dGU6IHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWUgfSk7XG4gICAgdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0ZSh2aXNpdCwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5wYXJlbnRPdXRsZXQgPyB0aGlzLnBhcmVudE91dGxldC5hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlIDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHBhcmVudE91dGxldCgpOiBQbGFjZU91dGxldENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50T3V0bGV0TW9kZWwudmFsdWU7XG4gIH1cblxuICBAVHJhY2UoKVxuICBwdXNoUm91dGVDaGFuZ2VzVG9WaXNpdCgpIHtcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMucm91dGVyVmlzaXQudmFsdWU7XG4gICAgY29uc29sZS5sb2coe1xuICAgICAgdmlzaXQsXG4gICAgICBwbGFjZTogdmlzaXQgPyB2aXNpdC5wbGFjZURlZmluaXRpb24uY29tcG9uZW50IDogbnVsbCxcbiAgICAgIGluT3V0bGV0QWN0aXZhdGlvbjogdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uLnZhbHVlLFxuICAgICAgaW5Sb3V0aW5nU2Vzc2lvbjogdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZS52YWx1ZSxcbiAgICB9KTtcbiAgICBpZiAodmlzaXQpIHsgLy8gY2FuIGJlIG51bGwgd2hpbGUgdGhlIHBsYWNlIGFuZCBpbmRleCBzeW5jIHVwXG4gICAgICB0aGlzLl9pblJvdXRlVmlzaXRVcGRhdGUud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnZhbHVlID0gdmlzaXQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShuZXh0OiBWaXNpdCwgcHJldmlvdXM6IFZpc2l0KSB7XG4gICAgY29uc3QgYWN0aXZhdGVkUm91dGUgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIucHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGUsIHByZXZpb3VzLCBuZXh0KTtcbiAgfVxuXG4gIGdldCBhY3RpdmVQbGFjZU1vZGVsKCk6IFZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGxhY2UucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgYWN0aXZhdGVkUm91dGVNb2RlbCgpOiBWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwucmVhZG9ubHk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBvbk91dGxldEFjdGl2YXRlZChyb3V0ZXJPdXRsZXQ6IFJvdXRlck91dGxldCwgcGxhY2U6IFBsYWNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSA9IHBsYWNlO1xuICAgICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlID0gcm91dGVyT3V0bGV0LmFjdGl2YXRlZFJvdXRlO1xuICAgICAgICB0aGlzLl9wbGFjZURlZmluaXRpb24udmFsdWUgPSBwbGFjZS5wbGFjZURlZmluaXRpb247XG4gICAgICAgIGNvbnN0IHZpc2l0TW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZSh2aXNpdE1vZGVsKTtcbiAgICAgICAgcGxhY2UuaW5pdGlhbGlzZUJpbmRpbmdzKHZpc2l0TW9kZWwpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLmFuaW1hdGUpIHtcbiAgICAgIC8vIHdlJ3JlIG5vdCBhbmltYXRpbmcgc28gdHJpZ2dlciBhbnkgcG9zdCBhbmltYXRpb24gY2FsbGJhY2tzIG5vdy5cbiAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBUcmFjZSgpXG4gIG9uT3V0bGV0RGVhY3RpdmF0ZWQoKSB7XG4gICAgdGhpcy5faW5PdXRsZXREZWFjdGl2YXRpb24ud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIHRoaXMuaXNPbkluaXRpYWxQbGFjZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9wbGFjZURlZmluaXRpb24udmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnNldERlbGVnYXRlKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgYW5pbWF0aW9uU3RhcnRlZCgpIHtcbiAgICBjb25zb2xlLmxvZyh7IGFjdGl2ZVBsYWNlOiB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSB9KTtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIGFuaW1hdGlvbkRvbmUoKSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlKSB7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZS5vblBsYWNlUmVhZHkoKTtcbiAgICB9XG4gIH1cblxuXG59XG4iXX0=
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBRWhCLFdBQVcsRUFHWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLG9CQUFvQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUdoRSx1QkFNQzs7O0lBTEMsbUNBQXlDOzs7OztJQUV6Qyw2REFBbUQ7Ozs7SUFFbkQsa0RBQXFCOztBQVN2QixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1COzs7Ozs7O0lBb0MzRCxZQUE2QixNQUFjLEVBQ2QsV0FBd0IsRUFDTSxXQUF3QixFQUMvQyxZQUFrQztRQUNwRSxLQUFLLEVBQUUsQ0FBQztRQUptQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JB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RSxpREFBbUU7O0lBQ25FLG1EQUE2RDs7Ozs7SUFFN0QsaURBQXlDOzs7OztJQUN6QywyQ0FBNEM7Ozs7O0lBRWhDLHNDQUErQjs7Ozs7SUFDL0IsMkNBQXlDOztJQUN6QywyQ0FBdUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTa2lwU2VsZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERzbCxcbiAgR3VhcmQsXG4gIExpc3RNb2RlbCxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFN0b3JlSW5MaXN0TW9kZWwsXG4gIFRyYWNlLFxuICBVc2VEZWxlZ2F0ZSxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IEFVUF9QTEFDRV9DT05GSUcsIFBsYWNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vcGxhY2UtY29uZmlnJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi8uLi9wbGFjZS1yb3V0ZXInO1xuXG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uLy4uL3Zpc2l0JztcbmltcG9ydCB7IExFRlRfUklHSFRfUExBQ0VfQU5JTUFUSU9OIH0gZnJvbSAnLi9yb3V0ZS1hbmltYXRpb25zJztcblxuLy8gUXVpY2sgaGFjayB0byBhdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gdGhpcyBhbmQgUGxhY2VDb21wb25lbnRzLlxuaW50ZXJmYWNlIFBsYWNlUmVmIHtcbiAgcmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb25cblxuICBpbml0aWFsaXNlQmluZGluZ3MocGFyYW06IFZhbHVlTW9kZWw8VmlzaXQ+KTogdm9pZDtcblxuICBvblBsYWNlUmVhZHkoKTogdm9pZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVwLXBsYWNlLW91dGxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGFjZS1vdXRsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW0xFRlRfUklHSFRfUExBQ0VfQU5JTUFUSU9OXVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZU91dGxldENvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGUgPSB0cnVlO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdwbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKSBAVXNlRGVsZWdhdGUoKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWw6IExpc3RNb2RlbDxDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pj47XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXInKSBAU3RvcmVJbkxpc3RNb2RlbCgnY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsJylcbiAgY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlcjogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgcGxhY2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFjZUNvbXBvbmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdyb3V0ZU91dGxldCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHJvdXRlck91dDogUm91dGVyT3V0bGV0O1xuXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGxhY2UgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+KCk7XG4gIHByaXZhdGUgX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbCA9IG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxWaXNpdD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldEFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXREZWFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXRVcGRhdGU6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luUm91dGVWaXNpdFVwZGF0ZSA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZU1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlRGVmaW5pdGlvbiA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZURlZmluaXRpb24+KCk7XG4gIHByaXZhdGUgcGFyZW50T3V0bGV0TW9kZWw6IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlT3V0bGV0Q29tcG9uZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlQW5pbWF0aW9uT3JkZXI6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuXG4gIHByaXZhdGUgaW5pdGlhbFBsYWNlSW5kZXg6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgcm91dGVyVmlzaXQ6IFZhbHVlTW9kZWxDaGFpbjxWaXNpdD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVVQX1BMQUNFX0NPTkZJRykgcmVhZG9ubHkgcGxhY2VDb25maWc6IFBsYWNlQ29uZmlnLFxuICAgICAgICAgICAgICBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBwYXJlbnRPdXRsZXQ6IFBsYWNlT3V0bGV0Q29tcG9uZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgdGhpcy5wYXJlbnRPdXRsZXRNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbChwYXJlbnRPdXRsZXQpO1xuICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZShuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCkpO1xuICAgIHRoaXMuX2luT3V0bGV0VXBkYXRlID0gdmFsdWVPZi5hbnkodGhpcy5faW5PdXRsZXREZWFjdGl2YXRpb24sIHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbikuYXJlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMucGFyZW50T3V0bGV0TW9kZWwpXG4gICAgICAucHVsbFZhbHVlTW9kZWwobyA9PiBvLmFjdGl2ZVBsYWNlTW9kZWwpXG4gICAgICAucGx1Y2soJ3BsYWNlRGVmaW5pdGlvbicpXG4gICAgICAucGx1Y2tMaXN0KCdjaGlsZHJlbicpXG4gICAgICAucGx1Y2soJ2NvbXBvbmVudCcpO1xuXG4gICAgY29uc3QgYWN0aXZhdGVQbGFjZVR5cGUgPSBjaGFpbih0aGlzLmFjdGl2ZVBsYWNlTW9kZWwpLm1hcChwID0+IHAuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICAgIHRoaXMucGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMuY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsKVxuICAgICAgLm90aGVyd2lzZShkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlcilcbiAgICAgIC5yZWR1Y2UoKHBsYWNlc0luT3JkZXIpID0+IHtcbiAgICAgICAgbGV0IHBsYWNlSW5kZXggPSAwO1xuICAgICAgICBpZiAoYWN0aXZhdGVQbGFjZVR5cGUudmFsdWUpIHtcbiAgICAgICAgICBwbGFjZUluZGV4ID0gcGxhY2VzSW5PcmRlci5pbmRleE9mKGFjdGl2YXRlUGxhY2VUeXBlLnZhbHVlKTtcbiAgICAgICAgICBpZiAoXy5pc05pbCh0aGlzLmluaXRpYWxQbGFjZUluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUGxhY2VJbmRleCA9IHBsYWNlSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXgpID8gMCA6IHBsYWNlSW5kZXggLSB0aGlzLmluaXRpYWxQbGFjZUluZGV4O1xuICAgICAgfSwgeyBkZXBlbmRzT246IGFjdGl2YXRlUGxhY2VUeXBlIH0pO1xuXG4gICAgLy8gUHVzaCBpbmNvbWluZyBjaGFuZ2VzIGludG8gdGhlIGNvbXBvbmVudFxuICAgIHRoaXMucm91dGVyVmlzaXQgPSBjaGFpbih0aGlzLl9hY3RpdmVQbGFjZSkucGx1Y2soJ3BsYWNlRGVmaW5pdGlvbicpLmZpbmRJbihwbGFjZVJvdXRlci5hY3RpdmVWaXNpdEluZGV4KTtcbiAgICAvLyBPdXIgcm91dGVyIHZpc2l0IHdpbGwgY2hhbmdlIHdoZW4gb3VyIGFjdGl2ZSBpcyBudWxsaWZpZWQgZHVyaW5nIGRlYWN0aXZhdGlvbiwgd2hpY2ggd2lsbCBwdXNoIGEgbnVsbCB2aXNpdFxuICAgIC8vIHRoZSB0aGUgZGVhY3RpdmF0ZWQgY29tcG9uZW50LCB3aGljaCB3aWxsIG51a2UgaXQncyB2aWV3IGJlZm9yZSB0aGUgYW5pbWF0aW9ucyBoYXZlIGZpbmlzaGVkLlxuICAgIC8vIFRoZSB2aXNpdCB3aWxsIGFsd2F5IHVwZGF0ZWQgYWZ0ZXIgdGhlIHJvdXRlciBzZXNzaW9uIGlzIGZpbnNpc2VkICh3aGVuIHRoZSBuZXcgdmlzaXRzIGFyZSByZWdpc3RlcmVkKSBzb1xuICAgIC8vIHdlIGNhbiBzYWZlbHkgaWdub3JlIGl0IGR1cmluZyBvdXRsZXQgY2hhbmdlcyBhcyB0aGVzZSBhbHdheXMgaGFwcGVuIGJlZm9yZSB0aGUgcm91dGVyIHNlc3Npb24gZW5kcy5cbiAgICB3aGVuLnZhbHVlT2YodGhpcy5yb3V0ZXJWaXNpdCkuY2hhbmdlcygoKSA9PiB0aGlzLnB1c2hSb3V0ZUNoYW5nZXNUb1Zpc2l0KCksIHsgdW5sZXNzOiB0aGlzLl9pbk91dGxldFVwZGF0ZSB9KTtcblxuICAgIC8vIEhhbmRsZSBjb21wb25lbnQgYmFzZWQgY2hhbmdlc1xuICAgIHdoZW4udmFsdWVPZih0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwpLmNoYW5nZXMoKG5leHQsIHByZXZpb3VzKSA9PiB7XG4gICAgICB0aGlzLnB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKG5leHQsIHByZXZpb3VzKTtcbiAgICB9LCB7XG4gICAgICB1bmxlc3M6IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmVcbiAgICB9KTtcblxuICAgIGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKVxuICAgICAgLnBvc3Rwb25lV2hpbGUocGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUpXG4gICAgICAuc3Vic2NyaWJlKHBsYWNlID0+IHRoaXMucGxhY2VDaGFuZ2VkLmVtaXQocGxhY2UpKTtcblxuICAgIC8vIGNvbnN0IHR4byA9IG5ldyBUcmFuc2FjdGlvbk9ic2VydmVyKCkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUudG9TdHJpbmcoKSkpO1xuICAgIC8vIHR4by5vYnNlcnZlKCdpblJvdXRlVmlzaXRVcGRhdGUnLCBpblJvdXRlVmlzaXRVcGRhdGUpO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGdldEFuaW1hdGlvbk9yZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnBsYWNlQW5pbWF0aW9uT3JkZXIudmFsdWU7XG4gIH1cblxuICBnZXQgYW5pbWF0aW9uRHVyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VDb25maWcgJiYgdGhpcy5wbGFjZUNvbmZpZy5hbmltYXRpb25EdXJhdGlvbiA/IHRoaXMucGxhY2VDb25maWcuYW5pbWF0aW9uRHVyYXRpb24gOiAnNTAwbXMnO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgbmF2aWdhdGUodmlzaXQ6IFZpc2l0KSB7XG4gICAgLy8gY29uc29sZS5sb2coeyBhY3RpdmF0ZWRSb3V0ZTogdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSB9KTtcbiAgICB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRlKHZpc2l0LCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnBhcmVudE91dGxldCA/IHRoaXMucGFyZW50T3V0bGV0LmFjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWUgOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcGFyZW50T3V0bGV0KCk6IFBsYWNlT3V0bGV0Q29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRPdXRsZXRNb2RlbC52YWx1ZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHB1c2hSb3V0ZUNoYW5nZXNUb1Zpc2l0KCkge1xuICAgIGNvbnN0IHZpc2l0ID0gdGhpcy5yb3V0ZXJWaXNpdC52YWx1ZTtcbiAgICBjb25zb2xlLmxvZyh7XG4gICAgICB2aXNpdCxcbiAgICAgIHBsYWNlOiB2aXNpdCA/IHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5jb21wb25lbnQgOiBudWxsLFxuICAgICAgaW5PdXRsZXRBY3RpdmF0aW9uOiB0aGlzLl9pbk91dGxldEFjdGl2YXRpb24udmFsdWUsXG4gICAgICBpblJvdXRpbmdTZXNzaW9uOiB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlLnZhbHVlXG4gICAgfSk7XG4gICAgaWYgKHZpc2l0KSB7IC8vIGNhbiBiZSBudWxsIHdoaWxlIHRoZSBwbGFjZSBhbmQgaW5kZXggc3luYyB1cFxuICAgICAgdGhpcy5faW5Sb3V0ZVZpc2l0VXBkYXRlLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC52YWx1ZSA9IHZpc2l0O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUobmV4dDogVmlzaXQsIHByZXZpb3VzOiBWaXNpdCkge1xuICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZTtcbiAgICB0aGlzLnBsYWNlUm91dGVyLnB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKGFjdGl2YXRlZFJvdXRlLCBwcmV2aW91cywgbmV4dCk7XG4gIH1cblxuICBnZXQgYWN0aXZlUGxhY2VNb2RlbCgpOiBWYWx1ZU1vZGVsPFBsYWNlQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVBsYWNlLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGFjdGl2YXRlZFJvdXRlTW9kZWwoKTogVmFsdWVNb2RlbDxBY3RpdmF0ZWRSb3V0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25PdXRsZXRBY3RpdmF0ZWQocm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQsIHBsYWNlOiBQbGFjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbi53aGlsZVRydWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgPSBwbGFjZTtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA9IHJvdXRlck91dGxldC5hY3RpdmF0ZWRSb3V0ZTtcbiAgICAgICAgdGhpcy5fcGxhY2VEZWZpbml0aW9uLnZhbHVlID0gcGxhY2UucGxhY2VEZWZpbml0aW9uO1xuICAgICAgICBjb25zdCB2aXNpdE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpO1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwuc2V0RGVsZWdhdGUodmlzaXRNb2RlbCk7XG4gICAgICAgIHBsYWNlLmluaXRpYWxpc2VCaW5kaW5ncyh2aXNpdE1vZGVsKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghdGhpcy5hbmltYXRlKSB7XG4gICAgICAvLyB3ZSdyZSBub3QgYW5pbWF0aW5nIHNvIHRyaWdnZXIgYW55IHBvc3QgYW5pbWF0aW9uIGNhbGxiYWNrcyBub3cuXG4gICAgICB0aGlzLmFuaW1hdGlvbkRvbmUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbk91dGxldERlYWN0aXZhdGVkKCkge1xuICAgIHRoaXMuX2luT3V0bGV0RGVhY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX3BsYWNlRGVmaW5pdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwuc2V0RGVsZWdhdGUobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhbmltYXRpb25TdGFydGVkKCkge1xuICAgIGNvbnNvbGUubG9nKHsgYWN0aXZlUGxhY2U6IHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYW5pbWF0aW9uRG9uZSgpIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlUGxhY2UudmFsdWUpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlLm9uUGxhY2VSZWFkeSgpO1xuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==
|
|
@@ -5,12 +5,11 @@
|
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
6
|
import { Component, EventEmitter, Inject, Input, Optional, Output, SkipSelf, ViewChild } from '@angular/core';
|
|
7
7
|
import { Router, RouterOutlet } from '@angular/router';
|
|
8
|
-
import { DelegatingValueModel, Dsl, Guard, ListModel, MutableValueModel, StoreInListModel,
|
|
8
|
+
import { DelegatingValueModel, Dsl, Guard, ListModel, MutableValueModel, StoreInListModel, UseDelegate } from '@coolon/pectin';
|
|
9
|
+
import * as _ from 'lodash';
|
|
9
10
|
import { DisposableComponent } from '../../../components/disposable-component';
|
|
10
|
-
import { PlaceComponent } from '../../place-component';
|
|
11
11
|
import { AUP_PLACE_CONFIG } from '../../place-config';
|
|
12
12
|
import { PlaceRouter } from '../../place-router';
|
|
13
|
-
import { Visit } from '../../visit';
|
|
14
13
|
import { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';
|
|
15
14
|
/**
|
|
16
15
|
* @record
|
|
@@ -45,7 +44,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
45
44
|
_this._inRouteVisitUpdate = new Guard();
|
|
46
45
|
_this._activatedRouteModel = new MutableValueModel();
|
|
47
46
|
_this._placeDefinition = new MutableValueModel();
|
|
48
|
-
_this.
|
|
47
|
+
_this.initialPlaceIndex = null;
|
|
49
48
|
var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
|
|
50
49
|
_this.parentOutletModel = new MutableValueModel(parentOutlet);
|
|
51
50
|
_this._activePlaceVisitModel.setDelegate(new MutableValueModel());
|
|
@@ -68,17 +67,21 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
68
67
|
function (p) { return (/** @type {?} */ (p.constructor)); }));
|
|
69
68
|
_this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
|
|
70
69
|
.otherwise(defaultPlaceAnimationOrder)
|
|
71
|
-
.
|
|
72
|
-
|
|
73
|
-
* @param {?} order
|
|
70
|
+
.reduce((/**
|
|
71
|
+
* @param {?} placesInOrder
|
|
74
72
|
* @return {?}
|
|
75
73
|
*/
|
|
76
|
-
function (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
function (placesInOrder) {
|
|
75
|
+
/** @type {?} */
|
|
76
|
+
var placeIndex = 0;
|
|
77
|
+
if (activatePlaceType.value) {
|
|
78
|
+
placeIndex = placesInOrder.indexOf(activatePlaceType.value);
|
|
79
|
+
if (_.isNil(_this.initialPlaceIndex)) {
|
|
80
|
+
_this.initialPlaceIndex = placeIndex;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return _.isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
|
|
84
|
+
}), { dependsOn: activatePlaceType });
|
|
82
85
|
// Push incoming changes into the component
|
|
83
86
|
_this.routerVisit = chain(_this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);
|
|
84
87
|
// Our router visit will change when our active is nullified during deactivation, which will push a null visit
|
|
@@ -119,6 +122,19 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
119
122
|
*/
|
|
120
123
|
function () {
|
|
121
124
|
};
|
|
125
|
+
// @Trace()
|
|
126
|
+
// @Trace()
|
|
127
|
+
/**
|
|
128
|
+
* @return {?}
|
|
129
|
+
*/
|
|
130
|
+
PlaceOutletComponent.prototype.getAnimationOrder =
|
|
131
|
+
// @Trace()
|
|
132
|
+
/**
|
|
133
|
+
* @return {?}
|
|
134
|
+
*/
|
|
135
|
+
function () {
|
|
136
|
+
return this.placeAnimationOrder.value;
|
|
137
|
+
};
|
|
122
138
|
Object.defineProperty(PlaceOutletComponent.prototype, "animationDuration", {
|
|
123
139
|
get: /**
|
|
124
140
|
* @return {?}
|
|
@@ -129,16 +145,20 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
129
145
|
enumerable: true,
|
|
130
146
|
configurable: true
|
|
131
147
|
});
|
|
148
|
+
// @Trace()
|
|
149
|
+
// @Trace()
|
|
132
150
|
/**
|
|
133
151
|
* @param {?} visit
|
|
134
152
|
* @return {?}
|
|
135
153
|
*/
|
|
136
|
-
PlaceOutletComponent.prototype.navigate =
|
|
154
|
+
PlaceOutletComponent.prototype.navigate =
|
|
155
|
+
// @Trace()
|
|
156
|
+
/**
|
|
137
157
|
* @param {?} visit
|
|
138
158
|
* @return {?}
|
|
139
159
|
*/
|
|
140
160
|
function (visit) {
|
|
141
|
-
console.log({ activatedRoute: this._activatedRouteModel.value });
|
|
161
|
+
// console.log({ activatedRoute: this._activatedRouteModel.value });
|
|
142
162
|
this.placeRouter.navigate(visit, {
|
|
143
163
|
relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null
|
|
144
164
|
});
|
|
@@ -153,10 +173,14 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
153
173
|
enumerable: true,
|
|
154
174
|
configurable: true
|
|
155
175
|
});
|
|
176
|
+
// @Trace()
|
|
177
|
+
// @Trace()
|
|
156
178
|
/**
|
|
157
179
|
* @return {?}
|
|
158
180
|
*/
|
|
159
|
-
PlaceOutletComponent.prototype.pushRouteChangesToVisit =
|
|
181
|
+
PlaceOutletComponent.prototype.pushRouteChangesToVisit =
|
|
182
|
+
// @Trace()
|
|
183
|
+
/**
|
|
160
184
|
* @return {?}
|
|
161
185
|
*/
|
|
162
186
|
function () {
|
|
@@ -167,7 +191,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
167
191
|
visit: visit,
|
|
168
192
|
place: visit ? visit.placeDefinition.component : null,
|
|
169
193
|
inOutletActivation: this._inOutletActivation.value,
|
|
170
|
-
inRoutingSession: this.placeRouter.navigationSessionActive.value
|
|
194
|
+
inRoutingSession: this.placeRouter.navigationSessionActive.value
|
|
171
195
|
});
|
|
172
196
|
if (visit) { // can be null while the place and index sync up
|
|
173
197
|
this._inRouteVisitUpdate.whileTrue((/**
|
|
@@ -213,12 +237,16 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
213
237
|
enumerable: true,
|
|
214
238
|
configurable: true
|
|
215
239
|
});
|
|
240
|
+
// @Trace()
|
|
241
|
+
// @Trace()
|
|
216
242
|
/**
|
|
217
243
|
* @param {?} routerOutlet
|
|
218
244
|
* @param {?} place
|
|
219
245
|
* @return {?}
|
|
220
246
|
*/
|
|
221
|
-
PlaceOutletComponent.prototype.onOutletActivated =
|
|
247
|
+
PlaceOutletComponent.prototype.onOutletActivated =
|
|
248
|
+
// @Trace()
|
|
249
|
+
/**
|
|
222
250
|
* @param {?} routerOutlet
|
|
223
251
|
* @param {?} place
|
|
224
252
|
* @return {?}
|
|
@@ -247,10 +275,14 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
247
275
|
this.animationDone();
|
|
248
276
|
}
|
|
249
277
|
};
|
|
278
|
+
// @Trace()
|
|
279
|
+
// @Trace()
|
|
250
280
|
/**
|
|
251
281
|
* @return {?}
|
|
252
282
|
*/
|
|
253
|
-
PlaceOutletComponent.prototype.onOutletDeactivated =
|
|
283
|
+
PlaceOutletComponent.prototype.onOutletDeactivated =
|
|
284
|
+
// @Trace()
|
|
285
|
+
/**
|
|
254
286
|
* @return {?}
|
|
255
287
|
*/
|
|
256
288
|
function () {
|
|
@@ -259,26 +291,33 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
259
291
|
* @return {?}
|
|
260
292
|
*/
|
|
261
293
|
function () {
|
|
262
|
-
_this.isOnInitialPlace = false;
|
|
263
294
|
_this._activePlace.value = null;
|
|
264
295
|
_this._activatedRouteModel.value = null;
|
|
265
296
|
_this._placeDefinition.value = null;
|
|
266
297
|
_this._activePlaceVisitModel.setDelegate(null);
|
|
267
298
|
}));
|
|
268
299
|
};
|
|
300
|
+
// @Trace()
|
|
301
|
+
// @Trace()
|
|
269
302
|
/**
|
|
270
303
|
* @return {?}
|
|
271
304
|
*/
|
|
272
|
-
PlaceOutletComponent.prototype.animationStarted =
|
|
305
|
+
PlaceOutletComponent.prototype.animationStarted =
|
|
306
|
+
// @Trace()
|
|
307
|
+
/**
|
|
273
308
|
* @return {?}
|
|
274
309
|
*/
|
|
275
310
|
function () {
|
|
276
311
|
console.log({ activePlace: this._activePlace.value });
|
|
277
312
|
};
|
|
313
|
+
// @Trace()
|
|
314
|
+
// @Trace()
|
|
278
315
|
/**
|
|
279
316
|
* @return {?}
|
|
280
317
|
*/
|
|
281
|
-
PlaceOutletComponent.prototype.animationDone =
|
|
318
|
+
PlaceOutletComponent.prototype.animationDone =
|
|
319
|
+
// @Trace()
|
|
320
|
+
/**
|
|
282
321
|
* @return {?}
|
|
283
322
|
*/
|
|
284
323
|
function () {
|
|
@@ -289,7 +328,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
289
328
|
PlaceOutletComponent.decorators = [
|
|
290
329
|
{ type: Component, args: [{
|
|
291
330
|
selector: 'aup-place-outlet',
|
|
292
|
-
template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value:
|
|
331
|
+
template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
|
|
293
332
|
animations: [LEFT_RIGHT_PLACE_ANIMATION],
|
|
294
333
|
styles: [":host{display:flex;flex-direction:column;min-height:0;overflow-x:hidden}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
|
|
295
334
|
}] }
|
|
@@ -316,42 +355,6 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
316
355
|
StoreInListModel('customPlaceAnimationOrderModel'),
|
|
317
356
|
tslib_1.__metadata("design:type", Array)
|
|
318
357
|
], PlaceOutletComponent.prototype, "customPlaceAnimationOrder", void 0);
|
|
319
|
-
tslib_1.__decorate([
|
|
320
|
-
Trace(),
|
|
321
|
-
tslib_1.__metadata("design:type", Function),
|
|
322
|
-
tslib_1.__metadata("design:paramtypes", [Visit]),
|
|
323
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
324
|
-
], PlaceOutletComponent.prototype, "navigate", null);
|
|
325
|
-
tslib_1.__decorate([
|
|
326
|
-
Trace(),
|
|
327
|
-
tslib_1.__metadata("design:type", Function),
|
|
328
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
329
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
330
|
-
], PlaceOutletComponent.prototype, "pushRouteChangesToVisit", null);
|
|
331
|
-
tslib_1.__decorate([
|
|
332
|
-
Trace(),
|
|
333
|
-
tslib_1.__metadata("design:type", Function),
|
|
334
|
-
tslib_1.__metadata("design:paramtypes", [RouterOutlet, PlaceComponent]),
|
|
335
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
336
|
-
], PlaceOutletComponent.prototype, "onOutletActivated", null);
|
|
337
|
-
tslib_1.__decorate([
|
|
338
|
-
Trace(),
|
|
339
|
-
tslib_1.__metadata("design:type", Function),
|
|
340
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
341
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
342
|
-
], PlaceOutletComponent.prototype, "onOutletDeactivated", null);
|
|
343
|
-
tslib_1.__decorate([
|
|
344
|
-
Trace(),
|
|
345
|
-
tslib_1.__metadata("design:type", Function),
|
|
346
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
347
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
348
|
-
], PlaceOutletComponent.prototype, "animationStarted", null);
|
|
349
|
-
tslib_1.__decorate([
|
|
350
|
-
Trace(),
|
|
351
|
-
tslib_1.__metadata("design:type", Function),
|
|
352
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
353
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
354
|
-
], PlaceOutletComponent.prototype, "animationDone", null);
|
|
355
358
|
return PlaceOutletComponent;
|
|
356
359
|
}(DisposableComponent));
|
|
357
360
|
export { PlaceOutletComponent };
|
|
@@ -417,7 +420,7 @@ if (false) {
|
|
|
417
420
|
* @type {?}
|
|
418
421
|
* @private
|
|
419
422
|
*/
|
|
420
|
-
PlaceOutletComponent.prototype.
|
|
423
|
+
PlaceOutletComponent.prototype.initialPlaceIndex;
|
|
421
424
|
/**
|
|
422
425
|
* @type {?}
|
|
423
426
|
* @private
|
|
@@ -436,4 +439,4 @@ if (false) {
|
|
|
436
439
|
/** @type {?} */
|
|
437
440
|
PlaceOutletComponent.prototype.placeConfig;
|
|
438
441
|
}
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxXQUFXLEVBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFFbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFHaEUsdUJBTUM7OztJQUxDLG1DQUF5Qzs7Ozs7SUFFekMsNkRBQW1EOzs7O0lBRW5ELGtEQUFxQjs7QUFHdkI7SUFNMEMsZ0RBQW1CO0lBbUMzRCw4QkFBNkIsTUFBYyxFQUNkLFdBQXdCLEVBQ00sV0FBd0IsRUFDL0MsWUFBa0M7UUFIdEUsWUFJRSxpQkFBTyxT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R1A7SUFHRDtRQURDLEtBQUssRUFBRTs7Ozs2REFLUDtJQUdILDJCQUFDO0NBQUEsQUF6TEQsQ0FNMEMsbUJBQW1CLEdBbUw1RDtTQW5MWSxvQkFBb0I7OztJQUUvQix1Q0FDZTs7SUFHZiw4REFDeUU7O0lBR3pFLHlEQUMyRDs7SUFFM0QsNENBQzJEOztJQUUzRCx5Q0FDd0I7Ozs7O0lBR3hCLDRDQUF3RTs7Ozs7SUFDeEUsc0RBQW1FOzs7OztJQUVuRSxtREFBbUQ7Ozs7O0lBQ25ELHFEQUFxRDs7Ozs7SUFDckQsK0NBQXlEOzs7OztJQUN6RCxtREFBbUQ7Ozs7O0lBQ25ELG9EQUFnRjs7Ozs7SUFFaEYsZ0RBQTZFOzs7OztJQUM3RSxpREFBbUU7O0lBQ25FLG1EQUE2RDs7Ozs7SUFDN0QsZ0RBQWdDOzs7OztJQUNoQywyQ0FBNEM7Ozs7O0lBRWhDLHNDQUErQjs7Ozs7SUFDL0IsMkNBQXlDOztJQUN6QywyQ0FBdUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTa2lwU2VsZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERzbCxcbiAgR3VhcmQsXG4gIExpc3RNb2RlbCxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFN0b3JlSW5MaXN0TW9kZWwsXG4gIFRyYWNlLFxuICBVc2VEZWxlZ2F0ZSxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IEFVUF9QTEFDRV9DT05GSUcsIFBsYWNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vcGxhY2UtY29uZmlnJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi8uLi9wbGFjZS1yb3V0ZXInO1xuXG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uLy4uL3Zpc2l0JztcbmltcG9ydCB7IExFRlRfUklHSFRfUExBQ0VfQU5JTUFUSU9OIH0gZnJvbSAnLi9yb3V0ZS1hbmltYXRpb25zJztcblxuLy8gUXVpY2sgaGFjayB0byBhdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gdGhpcyBhbmQgUGxhY2VDb21wb25lbnRzLlxuaW50ZXJmYWNlIFBsYWNlUmVmIHtcbiAgcmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb25cblxuICBpbml0aWFsaXNlQmluZGluZ3MocGFyYW06IFZhbHVlTW9kZWw8VmlzaXQ+KTogdm9pZDtcblxuICBvblBsYWNlUmVhZHkoKTogdm9pZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVwLXBsYWNlLW91dGxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGFjZS1vdXRsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW0xFRlRfUklHSFRfUExBQ0VfQU5JTUFUSU9OXVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZU91dGxldENvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGUgPSB0cnVlO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdwbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKSBAVXNlRGVsZWdhdGUoKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWw6IExpc3RNb2RlbDxDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pj47XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXInKSBAU3RvcmVJbkxpc3RNb2RlbCgnY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsJylcbiAgY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlcjogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgcGxhY2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFjZUNvbXBvbmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdyb3V0ZU91dGxldCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHJvdXRlck91dDogUm91dGVyT3V0bGV0O1xuXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGxhY2UgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+KCk7XG4gIHByaXZhdGUgX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbCA9IG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxWaXNpdD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldEFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXREZWFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXRVcGRhdGU6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luUm91dGVWaXNpdFVwZGF0ZSA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZU1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlRGVmaW5pdGlvbiA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZURlZmluaXRpb24+KCk7XG4gIHByaXZhdGUgcGFyZW50T3V0bGV0TW9kZWw6IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlT3V0bGV0Q29tcG9uZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlQW5pbWF0aW9uT3JkZXI6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuICBwcml2YXRlIGlzT25Jbml0aWFsUGxhY2UgPSB0cnVlO1xuICBwcml2YXRlIHJvdXRlclZpc2l0OiBWYWx1ZU1vZGVsQ2hhaW48VmlzaXQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFVUF9QTEFDRV9DT05GSUcpIHJlYWRvbmx5IHBsYWNlQ29uZmlnOiBQbGFjZUNvbmZpZyxcbiAgICAgICAgICAgICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgcGFyZW50T3V0bGV0OiBQbGFjZU91dGxldENvbXBvbmVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcblxuICAgIHRoaXMucGFyZW50T3V0bGV0TW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWwocGFyZW50T3V0bGV0KTtcbiAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwuc2V0RGVsZWdhdGUobmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpKTtcbiAgICB0aGlzLl9pbk91dGxldFVwZGF0ZSA9IHZhbHVlT2YuYW55KHRoaXMuX2luT3V0bGV0RGVhY3RpdmF0aW9uLCB0aGlzLl9pbk91dGxldEFjdGl2YXRpb24pLmFyZVRydXRoeSgpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBsYWNlQW5pbWF0aW9uT3JkZXIgPSBjaGFpbih0aGlzLnBhcmVudE91dGxldE1vZGVsKVxuICAgICAgLnB1bGxWYWx1ZU1vZGVsKG8gPT4gby5hY3RpdmVQbGFjZU1vZGVsKVxuICAgICAgLnBsdWNrKCdwbGFjZURlZmluaXRpb24nKVxuICAgICAgLnBsdWNrTGlzdCgnY2hpbGRyZW4nKVxuICAgICAgLnBsdWNrKCdjb21wb25lbnQnKTtcblxuICAgIGNvbnN0IGFjdGl2YXRlUGxhY2VUeXBlID0gY2hhaW4odGhpcy5hY3RpdmVQbGFjZU1vZGVsKS5tYXAocCA9PiBwLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTtcbiAgICB0aGlzLnBsYWNlQW5pbWF0aW9uT3JkZXIgPSBjaGFpbih0aGlzLmN1c3RvbVBsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbClcbiAgICAgIC5vdGhlcndpc2UoZGVmYXVsdFBsYWNlQW5pbWF0aW9uT3JkZXIpXG4gICAgICAuaW5kZXhPZihhY3RpdmF0ZVBsYWNlVHlwZSlcbiAgICAgIC5tYXAob3JkZXIgPT4ge1xuICAgICAgICAvLyB3ZSBnZXQgLTEgb24gdGhlIGZpcnN0IGxvYWQgd2hpY2ggdHJpZ2dlcnMgYW4gYW5pbWF0aW9uIHRvIHRoZSBmaXJzdCBwYWdlLCBzbyBhbHdheSBwaW4gaXQgdG8gMFxuICAgICAgICAvLyBpZiB3ZSdyZSBhbmltYXRpbmcuXG4gICAgICAgIHJldHVybiB0aGlzLmlzT25Jbml0aWFsUGxhY2UgPyAwIDpcbiAgICAgICAgICB0aGlzLmFuaW1hdGUgPyBNYXRoLm1heChvcmRlciwgMCkgOiAwO1xuICAgICAgfSk7XG5cbiAgICAvLyBQdXNoIGluY29taW5nIGNoYW5nZXMgaW50byB0aGUgY29tcG9uZW50XG4gICAgdGhpcy5yb3V0ZXJWaXNpdCA9IGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKS5wbHVjaygncGxhY2VEZWZpbml0aW9uJykuZmluZEluKHBsYWNlUm91dGVyLmFjdGl2ZVZpc2l0SW5kZXgpO1xuICAgIC8vIE91ciByb3V0ZXIgdmlzaXQgd2lsbCBjaGFuZ2Ugd2hlbiBvdXIgYWN0aXZlIGlzIG51bGxpZmllZCBkdXJpbmcgZGVhY3RpdmF0aW9uLCB3aGljaCB3aWxsIHB1c2ggYSBudWxsIHZpc2l0XG4gICAgLy8gdGhlIHRoZSBkZWFjdGl2YXRlZCBjb21wb25lbnQsIHdoaWNoIHdpbGwgbnVrZSBpdCdzIHZpZXcgYmVmb3JlIHRoZSBhbmltYXRpb25zIGhhdmUgZmluaXNoZWQuXG4gICAgLy8gVGhlIHZpc2l0IHdpbGwgYWx3YXkgdXBkYXRlZCBhZnRlciB0aGUgcm91dGVyIHNlc3Npb24gaXMgZmluc2lzZWQgKHdoZW4gdGhlIG5ldyB2aXNpdHMgYXJlIHJlZ2lzdGVyZWQpIHNvXG4gICAgLy8gd2UgY2FuIHNhZmVseSBpZ25vcmUgaXQgZHVyaW5nIG91dGxldCBjaGFuZ2VzIGFzIHRoZXNlIGFsd2F5cyBoYXBwZW4gYmVmb3JlIHRoZSByb3V0ZXIgc2Vzc2lvbiBlbmRzLlxuICAgIHdoZW4udmFsdWVPZih0aGlzLnJvdXRlclZpc2l0KS5jaGFuZ2VzKCgpID0+IHRoaXMucHVzaFJvdXRlQ2hhbmdlc1RvVmlzaXQoKSwge3VubGVzczogdGhpcy5faW5PdXRsZXRVcGRhdGV9KTtcblxuICAgIC8vIEhhbmRsZSBjb21wb25lbnQgYmFzZWQgY2hhbmdlc1xuICAgIHdoZW4udmFsdWVPZih0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwpLmNoYW5nZXMoKG5leHQsIHByZXZpb3VzKSA9PiB7XG4gICAgICB0aGlzLnB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKG5leHQsIHByZXZpb3VzKTtcbiAgICB9LCB7XG4gICAgICB1bmxlc3M6IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmVcbiAgICB9KTtcblxuICAgIGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKVxuICAgICAgLnBvc3Rwb25lV2hpbGUocGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUpXG4gICAgICAuc3Vic2NyaWJlKHBsYWNlID0+IHRoaXMucGxhY2VDaGFuZ2VkLmVtaXQocGxhY2UpKTtcblxuICAgIC8vIGNvbnN0IHR4byA9IG5ldyBUcmFuc2FjdGlvbk9ic2VydmVyKCkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUudG9TdHJpbmcoKSkpO1xuICAgIC8vIHR4by5vYnNlcnZlKCdpblJvdXRlVmlzaXRVcGRhdGUnLCBpblJvdXRlVmlzaXRVcGRhdGUpO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG4gIGdldCBhbmltYXRpb25EdXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZUNvbmZpZyAmJiB0aGlzLnBsYWNlQ29uZmlnLmFuaW1hdGlvbkR1cmF0aW9uID8gdGhpcy5wbGFjZUNvbmZpZy5hbmltYXRpb25EdXJhdGlvbiA6ICc1MDBtcyc7XG4gIH1cblxuICBAVHJhY2UoKVxuICBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQpIHtcbiAgICBjb25zb2xlLmxvZyh7IGFjdGl2YXRlZFJvdXRlOiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlIH0pO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGUodmlzaXQsIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucGFyZW50T3V0bGV0ID8gdGhpcy5wYXJlbnRPdXRsZXQuYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwYXJlbnRPdXRsZXQoKTogUGxhY2VPdXRsZXRDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE91dGxldE1vZGVsLnZhbHVlO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgcHVzaFJvdXRlQ2hhbmdlc1RvVmlzaXQoKSB7XG4gICAgY29uc3QgdmlzaXQgPSB0aGlzLnJvdXRlclZpc2l0LnZhbHVlO1xuICAgIGNvbnNvbGUubG9nKHtcbiAgICAgIHZpc2l0LFxuICAgICAgcGxhY2U6IHZpc2l0ID8gdmlzaXQucGxhY2VEZWZpbml0aW9uLmNvbXBvbmVudCA6IG51bGwsXG4gICAgICBpbk91dGxldEFjdGl2YXRpb246IHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbi52YWx1ZSxcbiAgICAgIGluUm91dGluZ1Nlc3Npb246IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUudmFsdWUsXG4gICAgfSk7XG4gICAgaWYgKHZpc2l0KSB7IC8vIGNhbiBiZSBudWxsIHdoaWxlIHRoZSBwbGFjZSBhbmQgaW5kZXggc3luYyB1cFxuICAgICAgdGhpcy5faW5Sb3V0ZVZpc2l0VXBkYXRlLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC52YWx1ZSA9IHZpc2l0O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUobmV4dDogVmlzaXQsIHByZXZpb3VzOiBWaXNpdCkge1xuICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZTtcbiAgICB0aGlzLnBsYWNlUm91dGVyLnB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKGFjdGl2YXRlZFJvdXRlLCBwcmV2aW91cywgbmV4dCk7XG4gIH1cblxuICBnZXQgYWN0aXZlUGxhY2VNb2RlbCgpOiBWYWx1ZU1vZGVsPFBsYWNlQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVBsYWNlLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGFjdGl2YXRlZFJvdXRlTW9kZWwoKTogVmFsdWVNb2RlbDxBY3RpdmF0ZWRSb3V0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgQFRyYWNlKClcbiAgb25PdXRsZXRBY3RpdmF0ZWQocm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQsIHBsYWNlOiBQbGFjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbi53aGlsZVRydWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgPSBwbGFjZTtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA9IHJvdXRlck91dGxldC5hY3RpdmF0ZWRSb3V0ZTtcbiAgICAgICAgdGhpcy5fcGxhY2VEZWZpbml0aW9uLnZhbHVlID0gcGxhY2UucGxhY2VEZWZpbml0aW9uO1xuICAgICAgICBjb25zdCB2aXNpdE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpO1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwuc2V0RGVsZWdhdGUodmlzaXRNb2RlbCk7XG4gICAgICAgIHBsYWNlLmluaXRpYWxpc2VCaW5kaW5ncyh2aXNpdE1vZGVsKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghdGhpcy5hbmltYXRlKSB7XG4gICAgICAvLyB3ZSdyZSBub3QgYW5pbWF0aW5nIHNvIHRyaWdnZXIgYW55IHBvc3QgYW5pbWF0aW9uIGNhbGxiYWNrcyBub3cuXG4gICAgICB0aGlzLmFuaW1hdGlvbkRvbmUoKTtcbiAgICB9XG4gIH1cblxuICBAVHJhY2UoKVxuICBvbk91dGxldERlYWN0aXZhdGVkKCkge1xuICAgIHRoaXMuX2luT3V0bGV0RGVhY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzT25Jbml0aWFsUGxhY2UgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fcGxhY2VEZWZpbml0aW9uLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZShudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIGFuaW1hdGlvblN0YXJ0ZWQoKSB7XG4gICAgY29uc29sZS5sb2coeyBhY3RpdmVQbGFjZTogdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgfSk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBhbmltYXRpb25Eb25lKCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSkge1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUub25QbGFjZVJlYWR5KCk7XG4gICAgfVxuICB9XG5cblxufVxuIl19
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBRWhCLFdBQVcsRUFHWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLG9CQUFvQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUdoRSx1QkFNQzs7O0lBTEMsbUNBQXlDOzs7OztJQUV6Qyw2REFBbUQ7Ozs7SUFFbkQsa0RBQXFCOztBQUd2QjtJQU0wQyxnREFBbUI7SUFvQzNELDhCQUE2QixNQUFjLEVBQ2QsV0FBd0IsRUFDTSxXQUF3QixFQUMvQyxZQUFrQztRQUh0RSxZQUlFLGlCQUFPLFNBaURSO1FBckQ0QixZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFDTSxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQW5DbkYsYUFBTyxHQUFHLElBQUksQ0FBQztRQVdOLGtCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFNMUMsa0JBQVksR0FBRyxJQUFJLGlCQUFpQixFQUFrQixDQUFDO1FBQ2hFLDRCQUFzQixHQUFHLElBQUksb0JBQW9CLEVBQVMsQ0FBQztRQUVsRCx5QkFBbUIsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ2xDLDJCQUFxQixHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFFcEMseUJBQW1CLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNsQywwQkFBb0IsR0FBRyxJQUFJLGlCQUFpQixFQUFrQixDQUFDO1FBRS9ELHNCQUFnQixHQUFHLElBQUksaUJBQWlCLEVBQW1CLENBQUM7UUFJckUsdUJBQWlCLEdBQVcsSUFBSSxDQUFDO1FBUWpDLElBQUEsMkJBQWtGLEVBQWhGLGdCQUFLLEVBQUUsb0JBQU8sRUFBRSxrQkFBTSxFQUFFLGNBQUksRUFBRSxnQkFBSyxFQUFFLG9CQUFPLEVBQUUsc0JBQWtDO1FBRXhGLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxpQkFBaUIsRUFBUyxDQUFDLENBQUM7UUFDeEUsS0FBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzs7WUFFL0YsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQzthQUM3RCxjQUFjOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsZ0JBQWdCLEVBQWxCLENBQWtCLEVBQUM7YUFDdkMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2FBQ3hCLFNBQVMsQ0FBQyxVQUFVLENBQUM7YUFDckIsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7WUFFZixpQkFBaUIsR0FBRyxLQUFLLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsQ0FBQyxXQUFJLG1CQUFBLENBQUMsQ0FBQyxXQUFXLEVBQWlDLEdBQUEsRUFBQztRQUMvRyxLQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLEtBQUksQ0FBQyw4QkFBOEIsQ0FBQzthQUNsRSxTQUFTLENBQUMsMEJBQTBCLENBQUM7YUFDckMsTUFBTTs7OztRQUFDLFVBQUMsYUFBYTs7Z0JBQ2hCLFVBQVUsR0FBRyxDQUFDO1lBQ2xCLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFO2dCQUMzQixVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO29CQUNuQyxLQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDO2lCQUNyQzthQUNGO1lBQ0QsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkYsQ0FBQyxHQUFFLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUV2QywyQ0FBMkM7UUFDM0MsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMxRyw4R0FBOEc7UUFDOUcsZ0dBQWdHO1FBQ2hHLDRHQUE0RztRQUM1Ryx1R0FBdUc7UUFDdkcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTzs7O1FBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUE5QixDQUE4QixHQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBRS9HLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU87Ozs7O1FBQUMsVUFBQyxJQUFJLEVBQUUsUUFBUTtZQUMvRCxLQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRTtZQUNELE1BQU0sRUFBRSxLQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QjtTQUNqRCxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQzthQUNyQixhQUFhLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDO2FBQ2xELFNBQVM7Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUE3QixDQUE2QixFQUFDLENBQUM7O1FBRXJELGlGQUFpRjtRQUNqRix5REFBeUQ7SUFFM0QsQ0FBQzs7OztJQUVELHVDQUFROzs7SUFBUjtJQUNBLENBQUM7SUFFRCxXQUFXOzs7OztJQUNYLGdEQUFpQjs7Ozs7SUFBakI7UUFDRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVELHNCQUFJLG1EQUFpQjs7OztRQUFyQjtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDL0csQ0FBQzs7O09BQUE7SUFFRCxXQUFXOzs7Ozs7SUFDWCx1Q0FBUTs7Ozs7O0lBQVIsVUFBUyxLQUFZO1FBQ25CLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDL0IsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ25GLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBSSw4Q0FBWTs7OztRQUFoQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQztRQUN0QyxDQUFDOzs7T0FBQTtJQUVELFdBQVc7Ozs7O0lBQ1gsc0RBQXVCOzs7OztJQUF2QjtRQUFBLGlCQWFDOztZQVpPLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNWLEtBQUssT0FBQTtZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3JELGtCQUFrQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLO1lBQ2xELGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsS0FBSztTQUNqRSxDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssRUFBRSxFQUFFLGdEQUFnRDtZQUMzRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUzs7O1lBQUM7Z0JBQ2pDLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQzVDLENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7Ozs7SUFFRCxzREFBdUI7Ozs7O0lBQXZCLFVBQXdCLElBQVcsRUFBRSxRQUFlOztZQUM1QyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUs7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxzQkFBSSxrREFBZ0I7Ozs7UUFBcEI7WUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3BDLENBQUM7OztPQUFBO0lBRUQsc0JBQUkscURBQW1COzs7O1FBQXZCO1lBQ0UsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1FBQzVDLENBQUM7OztPQUFBO0lBRUQsV0FBVzs7Ozs7OztJQUNYLGdEQUFpQjs7Ozs7OztJQUFqQixVQUFrQixZQUEwQixFQUFFLEtBQXFCO1FBQW5FLGlCQWlCQztRQWhCQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUzs7O1FBQUM7WUFDakMsSUFBSTtnQkFDRixLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ2hDLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQztnQkFDOUQsS0FBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDOztvQkFDOUMsVUFBVSxHQUFHLElBQUksaUJBQWlCLEVBQVM7Z0JBQ2pELEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN0QztZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEI7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsV0FBVzs7Ozs7SUFDWCxrREFBbUI7Ozs7O0lBQW5CO1FBQUEsaUJBT0M7UUFOQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUzs7O1FBQUM7WUFDbkMsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQy9CLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3ZDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ25DLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVzs7Ozs7SUFDWCwrQ0FBZ0I7Ozs7O0lBQWhCO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFdBQVc7Ozs7O0lBQ1gsNENBQWE7Ozs7O0lBQWI7UUFDRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7Z0JBOUxGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QiwyY0FBNEM7b0JBRTVDLFVBQVUsRUFBRSxDQUFDLDBCQUEwQixDQUFDOztpQkFDekM7Ozs7Z0JBdkN3QixNQUFNO2dCQW9CdEIsV0FBVztnREEwREwsUUFBUSxZQUFJLE1BQU0sU0FBQyxnQkFBZ0I7Z0JBQ0Usb0JBQW9CLHVCQUF6RCxRQUFRLFlBQUksUUFBUTs7OzBCQXJDaEMsS0FBSztpREFJTCxLQUFLLFNBQUMsMEJBQTBCOzRDQUloQyxLQUFLLFNBQUMscUJBQXFCOytCQUczQixNQUFNOzRCQUdOLFNBQVMsU0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztJQVQxQztRQURvQyxXQUFXLEVBQUU7MENBQ2pCLFNBQVM7Z0ZBQWdDO0lBSXpFO1FBRCtCLGdCQUFnQixDQUFDLGdDQUFnQyxDQUFDOzsyRUFDdEI7SUFnTDdELDJCQUFDO0NBQUEsQUFqTUQsQ0FNMEMsbUJBQW1CLEdBMkw1RDtTQTNMWSxvQkFBb0I7OztJQUUvQix1Q0FDZTs7SUFHZiw4REFDeUU7O0lBR3pFLHlEQUMyRDs7SUFFM0QsNENBQzJEOztJQUUzRCx5Q0FDd0I7Ozs7O0lBR3hCLDRDQUF3RTs7Ozs7SUFDeEUsc0RBQW1FOzs7OztJQUVuRSxtREFBbUQ7Ozs7O0lBQ25ELHFEQUFxRDs7Ozs7SUFDckQsK0NBQXlEOzs7OztJQUN6RCxtREFBbUQ7Ozs7O0lBQ25ELG9EQUFnRjs7Ozs7SUFFaEYsZ0RBQTZFOzs7OztJQUM3RSxpREFBbUU7O0lBQ25FLG1EQUE2RDs7Ozs7SUFFN0QsaURBQXlDOzs7OztJQUN6QywyQ0FBNEM7Ozs7O0lBRWhDLHNDQUErQjs7Ozs7SUFDL0IsMkNBQXlDOztJQUN6QywyQ0FBdUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTa2lwU2VsZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERzbCxcbiAgR3VhcmQsXG4gIExpc3RNb2RlbCxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFN0b3JlSW5MaXN0TW9kZWwsXG4gIFRyYWNlLFxuICBVc2VEZWxlZ2F0ZSxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IEFVUF9QTEFDRV9DT05GSUcsIFBsYWNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vcGxhY2UtY29uZmlnJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi8uLi9wbGFjZS1yb3V0ZXInO1xuXG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uLy4uL3Zpc2l0JztcbmltcG9ydCB7IExFRlRfUklHSFRfUExBQ0VfQU5JTUFUSU9OIH0gZnJvbSAnLi9yb3V0ZS1hbmltYXRpb25zJztcblxuLy8gUXVpY2sgaGFjayB0byBhdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gdGhpcyBhbmQgUGxhY2VDb21wb25lbnRzLlxuaW50ZXJmYWNlIFBsYWNlUmVmIHtcbiAgcmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb25cblxuICBpbml0aWFsaXNlQmluZGluZ3MocGFyYW06IFZhbHVlTW9kZWw8VmlzaXQ+KTogdm9pZDtcblxuICBvblBsYWNlUmVhZHkoKTogdm9pZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVwLXBsYWNlLW91dGxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGFjZS1vdXRsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW0xFRlRfUklHSFRfUExBQ0VfQU5JTUFUSU9OXVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZU91dGxldENvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGUgPSB0cnVlO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdwbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKSBAVXNlRGVsZWdhdGUoKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWw6IExpc3RNb2RlbDxDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pj47XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXInKSBAU3RvcmVJbkxpc3RNb2RlbCgnY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsJylcbiAgY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlcjogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgcGxhY2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQbGFjZUNvbXBvbmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdyb3V0ZU91dGxldCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHJvdXRlck91dDogUm91dGVyT3V0bGV0O1xuXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGxhY2UgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+KCk7XG4gIHByaXZhdGUgX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbCA9IG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxWaXNpdD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldEFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXREZWFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXRVcGRhdGU6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luUm91dGVWaXNpdFVwZGF0ZSA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZU1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlRGVmaW5pdGlvbiA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZURlZmluaXRpb24+KCk7XG4gIHByaXZhdGUgcGFyZW50T3V0bGV0TW9kZWw6IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlT3V0bGV0Q29tcG9uZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlQW5pbWF0aW9uT3JkZXI6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuXG4gIHByaXZhdGUgaW5pdGlhbFBsYWNlSW5kZXg6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgcm91dGVyVmlzaXQ6IFZhbHVlTW9kZWxDaGFpbjxWaXNpdD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVVQX1BMQUNFX0NPTkZJRykgcmVhZG9ubHkgcGxhY2VDb25maWc6IFBsYWNlQ29uZmlnLFxuICAgICAgICAgICAgICBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBwYXJlbnRPdXRsZXQ6IFBsYWNlT3V0bGV0Q29tcG9uZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgdGhpcy5wYXJlbnRPdXRsZXRNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbChwYXJlbnRPdXRsZXQpO1xuICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZShuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCkpO1xuICAgIHRoaXMuX2luT3V0bGV0VXBkYXRlID0gdmFsdWVPZi5hbnkodGhpcy5faW5PdXRsZXREZWFjdGl2YXRpb24sIHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbikuYXJlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMucGFyZW50T3V0bGV0TW9kZWwpXG4gICAgICAucHVsbFZhbHVlTW9kZWwobyA9PiBvLmFjdGl2ZVBsYWNlTW9kZWwpXG4gICAgICAucGx1Y2soJ3BsYWNlRGVmaW5pdGlvbicpXG4gICAgICAucGx1Y2tMaXN0KCdjaGlsZHJlbicpXG4gICAgICAucGx1Y2soJ2NvbXBvbmVudCcpO1xuXG4gICAgY29uc3QgYWN0aXZhdGVQbGFjZVR5cGUgPSBjaGFpbih0aGlzLmFjdGl2ZVBsYWNlTW9kZWwpLm1hcChwID0+IHAuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICAgIHRoaXMucGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMuY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsKVxuICAgICAgLm90aGVyd2lzZShkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlcilcbiAgICAgIC5yZWR1Y2UoKHBsYWNlc0luT3JkZXIpID0+IHtcbiAgICAgICAgbGV0IHBsYWNlSW5kZXggPSAwO1xuICAgICAgICBpZiAoYWN0aXZhdGVQbGFjZVR5cGUudmFsdWUpIHtcbiAgICAgICAgICBwbGFjZUluZGV4ID0gcGxhY2VzSW5PcmRlci5pbmRleE9mKGFjdGl2YXRlUGxhY2VUeXBlLnZhbHVlKTtcbiAgICAgICAgICBpZiAoXy5pc05pbCh0aGlzLmluaXRpYWxQbGFjZUluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUGxhY2VJbmRleCA9IHBsYWNlSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXgpID8gMCA6IHBsYWNlSW5kZXggLSB0aGlzLmluaXRpYWxQbGFjZUluZGV4O1xuICAgICAgfSwgeyBkZXBlbmRzT246IGFjdGl2YXRlUGxhY2VUeXBlIH0pO1xuXG4gICAgLy8gUHVzaCBpbmNvbWluZyBjaGFuZ2VzIGludG8gdGhlIGNvbXBvbmVudFxuICAgIHRoaXMucm91dGVyVmlzaXQgPSBjaGFpbih0aGlzLl9hY3RpdmVQbGFjZSkucGx1Y2soJ3BsYWNlRGVmaW5pdGlvbicpLmZpbmRJbihwbGFjZVJvdXRlci5hY3RpdmVWaXNpdEluZGV4KTtcbiAgICAvLyBPdXIgcm91dGVyIHZpc2l0IHdpbGwgY2hhbmdlIHdoZW4gb3VyIGFjdGl2ZSBpcyBudWxsaWZpZWQgZHVyaW5nIGRlYWN0aXZhdGlvbiwgd2hpY2ggd2lsbCBwdXNoIGEgbnVsbCB2aXNpdFxuICAgIC8vIHRoZSB0aGUgZGVhY3RpdmF0ZWQgY29tcG9uZW50LCB3aGljaCB3aWxsIG51a2UgaXQncyB2aWV3IGJlZm9yZSB0aGUgYW5pbWF0aW9ucyBoYXZlIGZpbmlzaGVkLlxuICAgIC8vIFRoZSB2aXNpdCB3aWxsIGFsd2F5IHVwZGF0ZWQgYWZ0ZXIgdGhlIHJvdXRlciBzZXNzaW9uIGlzIGZpbnNpc2VkICh3aGVuIHRoZSBuZXcgdmlzaXRzIGFyZSByZWdpc3RlcmVkKSBzb1xuICAgIC8vIHdlIGNhbiBzYWZlbHkgaWdub3JlIGl0IGR1cmluZyBvdXRsZXQgY2hhbmdlcyBhcyB0aGVzZSBhbHdheXMgaGFwcGVuIGJlZm9yZSB0aGUgcm91dGVyIHNlc3Npb24gZW5kcy5cbiAgICB3aGVuLnZhbHVlT2YodGhpcy5yb3V0ZXJWaXNpdCkuY2hhbmdlcygoKSA9PiB0aGlzLnB1c2hSb3V0ZUNoYW5nZXNUb1Zpc2l0KCksIHsgdW5sZXNzOiB0aGlzLl9pbk91dGxldFVwZGF0ZSB9KTtcblxuICAgIC8vIEhhbmRsZSBjb21wb25lbnQgYmFzZWQgY2hhbmdlc1xuICAgIHdoZW4udmFsdWVPZih0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwpLmNoYW5nZXMoKG5leHQsIHByZXZpb3VzKSA9PiB7XG4gICAgICB0aGlzLnB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKG5leHQsIHByZXZpb3VzKTtcbiAgICB9LCB7XG4gICAgICB1bmxlc3M6IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmVcbiAgICB9KTtcblxuICAgIGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKVxuICAgICAgLnBvc3Rwb25lV2hpbGUocGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUpXG4gICAgICAuc3Vic2NyaWJlKHBsYWNlID0+IHRoaXMucGxhY2VDaGFuZ2VkLmVtaXQocGxhY2UpKTtcblxuICAgIC8vIGNvbnN0IHR4byA9IG5ldyBUcmFuc2FjdGlvbk9ic2VydmVyKCkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUudG9TdHJpbmcoKSkpO1xuICAgIC8vIHR4by5vYnNlcnZlKCdpblJvdXRlVmlzaXRVcGRhdGUnLCBpblJvdXRlVmlzaXRVcGRhdGUpO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGdldEFuaW1hdGlvbk9yZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnBsYWNlQW5pbWF0aW9uT3JkZXIudmFsdWU7XG4gIH1cblxuICBnZXQgYW5pbWF0aW9uRHVyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VDb25maWcgJiYgdGhpcy5wbGFjZUNvbmZpZy5hbmltYXRpb25EdXJhdGlvbiA/IHRoaXMucGxhY2VDb25maWcuYW5pbWF0aW9uRHVyYXRpb24gOiAnNTAwbXMnO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgbmF2aWdhdGUodmlzaXQ6IFZpc2l0KSB7XG4gICAgLy8gY29uc29sZS5sb2coeyBhY3RpdmF0ZWRSb3V0ZTogdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSB9KTtcbiAgICB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRlKHZpc2l0LCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnBhcmVudE91dGxldCA/IHRoaXMucGFyZW50T3V0bGV0LmFjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWUgOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcGFyZW50T3V0bGV0KCk6IFBsYWNlT3V0bGV0Q29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRPdXRsZXRNb2RlbC52YWx1ZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHB1c2hSb3V0ZUNoYW5nZXNUb1Zpc2l0KCkge1xuICAgIGNvbnN0IHZpc2l0ID0gdGhpcy5yb3V0ZXJWaXNpdC52YWx1ZTtcbiAgICBjb25zb2xlLmxvZyh7XG4gICAgICB2aXNpdCxcbiAgICAgIHBsYWNlOiB2aXNpdCA/IHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5jb21wb25lbnQgOiBudWxsLFxuICAgICAgaW5PdXRsZXRBY3RpdmF0aW9uOiB0aGlzLl9pbk91dGxldEFjdGl2YXRpb24udmFsdWUsXG4gICAgICBpblJvdXRpbmdTZXNzaW9uOiB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlLnZhbHVlXG4gICAgfSk7XG4gICAgaWYgKHZpc2l0KSB7IC8vIGNhbiBiZSBudWxsIHdoaWxlIHRoZSBwbGFjZSBhbmQgaW5kZXggc3luYyB1cFxuICAgICAgdGhpcy5faW5Sb3V0ZVZpc2l0VXBkYXRlLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC52YWx1ZSA9IHZpc2l0O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUobmV4dDogVmlzaXQsIHByZXZpb3VzOiBWaXNpdCkge1xuICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZTtcbiAgICB0aGlzLnBsYWNlUm91dGVyLnB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKGFjdGl2YXRlZFJvdXRlLCBwcmV2aW91cywgbmV4dCk7XG4gIH1cblxuICBnZXQgYWN0aXZlUGxhY2VNb2RlbCgpOiBWYWx1ZU1vZGVsPFBsYWNlQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVBsYWNlLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGFjdGl2YXRlZFJvdXRlTW9kZWwoKTogVmFsdWVNb2RlbDxBY3RpdmF0ZWRSb3V0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25PdXRsZXRBY3RpdmF0ZWQocm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQsIHBsYWNlOiBQbGFjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbi53aGlsZVRydWUoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgPSBwbGFjZTtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA9IHJvdXRlck91dGxldC5hY3RpdmF0ZWRSb3V0ZTtcbiAgICAgICAgdGhpcy5fcGxhY2VEZWZpbml0aW9uLnZhbHVlID0gcGxhY2UucGxhY2VEZWZpbml0aW9uO1xuICAgICAgICBjb25zdCB2aXNpdE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpO1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwuc2V0RGVsZWdhdGUodmlzaXRNb2RlbCk7XG4gICAgICAgIHBsYWNlLmluaXRpYWxpc2VCaW5kaW5ncyh2aXNpdE1vZGVsKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghdGhpcy5hbmltYXRlKSB7XG4gICAgICAvLyB3ZSdyZSBub3QgYW5pbWF0aW5nIHNvIHRyaWdnZXIgYW55IHBvc3QgYW5pbWF0aW9uIGNhbGxiYWNrcyBub3cuXG4gICAgICB0aGlzLmFuaW1hdGlvbkRvbmUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbk91dGxldERlYWN0aXZhdGVkKCkge1xuICAgIHRoaXMuX2luT3V0bGV0RGVhY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX3BsYWNlRGVmaW5pdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwuc2V0RGVsZWdhdGUobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhbmltYXRpb25TdGFydGVkKCkge1xuICAgIGNvbnNvbGUubG9nKHsgYWN0aXZlUGxhY2U6IHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYW5pbWF0aW9uRG9uZSgpIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlUGxhY2UudmFsdWUpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlLm9uUGxhY2VSZWFkeSgpO1xuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==
|