angular-three 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/esm2020/lib/canvas.mjs +8 -13
- package/esm2020/lib/di/destroy.mjs +2 -3
- package/esm2020/lib/di/ref.mjs +3 -6
- package/esm2020/lib/directives/args.mjs +3 -3
- package/esm2020/lib/directives/repeat.mjs +3 -3
- package/esm2020/lib/loader.mjs +4 -11
- package/esm2020/lib/pipes/push.mjs +4 -4
- package/esm2020/lib/portal.mjs +9 -9
- package/esm2020/lib/renderer/renderer.mjs +41 -27
- package/esm2020/lib/renderer/state.mjs +7 -2
- package/esm2020/lib/renderer/utils.mjs +3 -2
- package/esm2020/lib/stores/rx-store.mjs +6 -6
- package/esm2020/lib/stores/store.mjs +8 -19
- package/esm2020/lib/utils/apply-props.mjs +5 -9
- package/esm2020/lib/utils/update.mjs +5 -9
- package/fesm2015/angular-three.mjs +99 -114
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +99 -114
- package/fesm2020/angular-three.mjs.map +1 -1
- package/lib/pipes/push.d.ts +1 -1
- package/lib/renderer/renderer.d.ts +3 -3
- package/lib/renderer/state.d.ts +1 -1
- package/package.json +4 -4
- package/plugin/package.json +3 -3
|
@@ -68,7 +68,7 @@ export class NgtRxStore extends RxState {
|
|
|
68
68
|
const originalSet = this.set.bind(this);
|
|
69
69
|
Object.defineProperty(this, 'set', {
|
|
70
70
|
get: () => {
|
|
71
|
-
// Parameters type does not do well with overloads. So we use any[] here
|
|
71
|
+
// Parameters type does not do well with overloads (RxState#set). So we use any[] here
|
|
72
72
|
return (...args) => {
|
|
73
73
|
const firstArg = args[0];
|
|
74
74
|
if (is.obj(firstArg)) {
|
|
@@ -78,7 +78,7 @@ export class NgtRxStore extends RxState {
|
|
|
78
78
|
}, {});
|
|
79
79
|
return originalSet(modArgs);
|
|
80
80
|
}
|
|
81
|
-
// @ts-
|
|
81
|
+
// @ts-expect-error not sure why ...args here doesn't pass tuple check
|
|
82
82
|
return originalSet(...args);
|
|
83
83
|
};
|
|
84
84
|
},
|
|
@@ -91,9 +91,9 @@ export class NgtRxStore extends RxState {
|
|
|
91
91
|
return this.hold(obs.pipe(tapEffect(sideEffectFn)));
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
NgtRxStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
95
|
-
NgtRxStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
94
|
+
NgtRxStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRxStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
95
|
+
NgtRxStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRxStore });
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRxStore, decorators: [{
|
|
97
97
|
type: Injectable
|
|
98
98
|
}], ctorParameters: function () { return []; } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9zdG9yZXMvcngtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUF3QyxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRWpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQW1DLEVBQUUsQ0FBQyxTQUFTLENBQUksU0FBZSxDQUFDLENBQUM7QUFNdEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFTLFFBQTBCO0lBQ3hELElBQUksU0FBUyxHQUE2RixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDbkgsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLElBQUksSUFBSSxHQUF1QixTQUFTLENBQUM7SUFFekMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtRQUNoQyxPQUFPLEdBQUcsRUFBRTtZQUNSLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixPQUFPLEdBQUcsQ0FBUztRQUNmLElBQUksRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ3BCLElBQUksU0FBUyxJQUFJLFFBQVEsRUFBRTtnQkFDdkIsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDdEQ7WUFFRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxhQUFhLEVBQUU7Z0JBQ2YsU0FBUyxHQUFHLGFBQWEsQ0FBQzthQUM3QjtZQUVELElBQUksR0FBRyxLQUFLLENBQUM7WUFFYixJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNYLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDbkI7UUFDTCxDQUFDO1FBQ0QsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDekIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDNUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7S0FDeEIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUdELE1BQU0sT0FBTyxVQUdYLFNBQVEsT0FBaUI7SUFDdkI7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQUNSLHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBYyxDQUFDLENBQUM7UUFDekQsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQiwwR0FBMEc7UUFDMUcsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQy9CLEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ04sc0ZBQXNGO2dCQUN0RixPQUFPLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRTtvQkFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQ2xCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7NEJBQ3JFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOzRCQUM1RSxPQUFPLE1BQU0sQ0FBQzt3QkFDbEIsQ0FBQyxFQUFFLEVBQWtCLENBQUMsQ0FBQzt3QkFDdkIsT0FBTyxXQUFXLENBQUMsT0FBNEIsQ0FBQyxDQUFDO3FCQUNwRDtvQkFDRCxzRUFBc0U7b0JBQ3RFLE9BQU8sV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQztZQUNOLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsVUFBVTtRQUNoQixPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sQ0FBSSxHQUFrQixFQUFFLFlBQXlCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7dUdBckNRLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5cbmV4cG9ydCBjb25zdCBzdGFydFdpdGhVbmRlZmluZWQgPSA8VD4oKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+ID0+IHN0YXJ0V2l0aDxUPih1bmRlZmluZWQhIGFzIFQpO1xuXG50eXBlIEVmZmVjdEZuPFRWYWx1ZT4gPSAoXG4gICAgdmFsdWU6IFRWYWx1ZVxuKSA9PiB2b2lkIHwgdW5kZWZpbmVkIHwgKChjbGVhblVwUGFyYW1zOiB7IHByZXY6IFRWYWx1ZSB8IHVuZGVmaW5lZDsgY29tcGxldGU6IGJvb2xlYW47IGVycm9yOiBib29sZWFuIH0pID0+IHZvaWQpO1xuXG4vKipcbiAqIEFuIGV4dGVuZGVkIGB0YXBgIG9wZXJhdG9yIHRoYXQgYWNjZXB0cyBhbiBgZWZmZWN0Rm5gIHdoaWNoOlxuICogLSBydW5zIG9uIGV2ZXJ5IGBuZXh0YCBub3RpZmljYXRpb24gZnJvbSBgc291cmNlJGBcbiAqIC0gY2FuIG9wdGlvbmFsbHkgcmV0dXJuIGEgYGNsZWFuVXBgIGZ1bmN0aW9uIHRoYXRcbiAqIGludm9rZXMgZnJvbSB0aGUgMm5kIGBuZXh0YCBub3RpZmljYXRpb24gb253YXJkIGFuZCBvbiBgdW5zdWJzY3JpYmVgIChkZXN0cm95ZWQpXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzb3VyY2UkLnBpcGUoXG4gKiAgdGFwRWZmZWN0KChzb3VyY2VWYWx1ZSkgPSB7XG4gKiAgICBjb25zdCBjYiA9ICgpID0+IHtcbiAqICAgICAgZG9TdHVmZihzb3VyY2VWYWx1ZSk7XG4gKiAgICB9O1xuICogICAgYWRkTGlzdGVuZXIoJ2V2ZW50JywgY2IpO1xuICpcbiAqICAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgIHJlbW92ZUxpc3RlbmVyKCdldmVudCcsIGNiKTtcbiAqICAgIH1cbiAqICB9KVxuICogKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXBFZmZlY3Q8VFZhbHVlPihlZmZlY3RGbjogRWZmZWN0Rm48VFZhbHVlPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUVmFsdWU+IHtcbiAgICBsZXQgY2xlYW51cEZuOiAoY2xlYW5VcFBhcmFtczogeyBwcmV2OiBUVmFsdWUgfCB1bmRlZmluZWQ7IGNvbXBsZXRlOiBib29sZWFuOyBlcnJvcjogYm9vbGVhbiB9KSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgbGV0IGZpcnN0UnVuID0gZmFsc2U7XG4gICAgbGV0IHByZXY6IFRWYWx1ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHRlYXJkb3duID0gKGVycm9yOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2xlYW51cEZuKSB7XG4gICAgICAgICAgICAgICAgY2xlYW51cEZuKHsgcHJldiwgY29tcGxldGU6IHRydWUsIGVycm9yIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gdGFwPFRWYWx1ZT4oe1xuICAgICAgICBuZXh0OiAodmFsdWU6IFRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNsZWFudXBGbiAmJiBmaXJzdFJ1bikge1xuICAgICAgICAgICAgICAgIGNsZWFudXBGbih7IHByZXYsIGNvbXBsZXRlOiBmYWxzZSwgZXJyb3I6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjbGVhblVwT3JWb2lkID0gZWZmZWN0Rm4odmFsdWUpO1xuICAgICAgICAgICAgaWYgKGNsZWFuVXBPclZvaWQpIHtcbiAgICAgICAgICAgICAgICBjbGVhbnVwRm4gPSBjbGVhblVwT3JWb2lkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcmV2ID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghZmlyc3RSdW4pIHtcbiAgICAgICAgICAgICAgICBmaXJzdFJ1biA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiB0ZWFyZG93bihmYWxzZSksXG4gICAgICAgIHVuc3Vic2NyaWJlOiB0ZWFyZG93bihmYWxzZSksXG4gICAgICAgIGVycm9yOiB0ZWFyZG93bih0cnVlKSxcbiAgICB9KTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFJ4U3RvcmU8XG4gICAgVFN0YXRlIGV4dGVuZHMgb2JqZWN0ID0gYW55LFxuICAgIFRSeFN0YXRlIGV4dGVuZHMgb2JqZWN0ID0gVFN0YXRlICYgUmVjb3JkPHN0cmluZywgYW55PlxuPiBleHRlbmRzIFJ4U3RhdGU8VFJ4U3RhdGU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLy8gc2V0IGEgZHVtbXkgcHJvcGVydHkgc28gdGhhdCBpbml0aWFsIHRoaXMuZ2V0KCkgd29uJ3QgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB0aGlzLnNldCh7IF9fbmd0X2R1bW15X186ICdfX25ndF9kdW1teV9fJyB9IGFzIFRSeFN0YXRlKTtcbiAgICAgICAgLy8gY2FsbCBpbml0aWFsaXplIHRoYXQgbWlnaHQgYmUgc2V0dXAgYnkgZGVyaXZlZCBTdG9yZXNcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgICAgIC8vIG92ZXJyaWRlIHNldCBzbyBvdXIgY29uc3VtZXJzIGRvbid0IGhhdmUgdG8gaGFuZGxlIHVuZGVmaW5lZCBmb3Igc3RhdGUgdGhhdCBhbHJlYWR5IGhhdmUgZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTZXQgPSB0aGlzLnNldC5iaW5kKHRoaXMpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3NldCcsIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFBhcmFtZXRlcnMgdHlwZSBkb2VzIG5vdCBkbyB3ZWxsIHdpdGggb3ZlcmxvYWRzIChSeFN0YXRlI3NldCkuIFNvIHdlIHVzZSBhbnlbXSBoZXJlXG4gICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEFyZyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpcy5vYmooZmlyc3RBcmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RBcmdzID0gT2JqZWN0LmVudHJpZXMoZmlyc3RBcmcpLnJlZHVjZSgobW9kZGVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RkZWRba2V5XSA9IHZhbHVlID09PSB1bmRlZmluZWQgPyB0aGlzLmdldChrZXkgYXMga2V5b2YgVFJ4U3RhdGUpIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGRlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHt9IGFzIE5ndEFueVJlY29yZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZXQobW9kQXJncyBhcyBQYXJ0aWFsPFRSeFN0YXRlPik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBub3Qgc3VyZSB3aHkgLi4uYXJncyBoZXJlIGRvZXNuJ3QgcGFzcyB0dXBsZSBjaGVja1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZXQoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplKCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWZmZWN0PFM+KG9iczogT2JzZXJ2YWJsZTxTPiwgc2lkZUVmZmVjdEZuOiBFZmZlY3RGbjxTPik6IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5ob2xkKG9icy5waXBlKHRhcEVmZmVjdChzaWRlRWZmZWN0Rm4pKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -47,15 +47,7 @@ export class NgtStore extends NgtRxStore {
|
|
|
47
47
|
const fov = (camera.fov * Math.PI) / 180; // convert vertical fov to radians
|
|
48
48
|
const h = 2 * Math.tan(fov / 2) * distance; // visible height
|
|
49
49
|
const w = h * aspect;
|
|
50
|
-
return {
|
|
51
|
-
width: w,
|
|
52
|
-
height: h,
|
|
53
|
-
top,
|
|
54
|
-
left,
|
|
55
|
-
factor: width / w,
|
|
56
|
-
distance,
|
|
57
|
-
aspect,
|
|
58
|
-
};
|
|
50
|
+
return { width: w, height: h, top, left, factor: width / w, distance, aspect };
|
|
59
51
|
};
|
|
60
52
|
const pointer = new THREE.Vector2();
|
|
61
53
|
let performanceTimeout;
|
|
@@ -235,9 +227,8 @@ export class NgtStore extends NgtRxStore {
|
|
|
235
227
|
// update projection matrix after applyprops
|
|
236
228
|
camera.updateProjectionMatrix();
|
|
237
229
|
}
|
|
238
|
-
if (!is.instance(camera))
|
|
230
|
+
if (!is.instance(camera))
|
|
239
231
|
camera = prepare(camera, { store: this });
|
|
240
|
-
}
|
|
241
232
|
stateToUpdate.camera = camera;
|
|
242
233
|
}
|
|
243
234
|
// Set up XR (one time only!)
|
|
@@ -315,9 +306,8 @@ export class NgtStore extends NgtRxStore {
|
|
|
315
306
|
applyProps(gl, glOptions);
|
|
316
307
|
}
|
|
317
308
|
// Store events internally
|
|
318
|
-
if (events && !state.events.handlers)
|
|
309
|
+
if (events && !state.events.handlers)
|
|
319
310
|
stateToUpdate.events = events(this);
|
|
320
|
-
}
|
|
321
311
|
// Check performance
|
|
322
312
|
if (performance && !is.equ(performance, state.performance, shallowLoose)) {
|
|
323
313
|
stateToUpdate.performance = { ...state.performance, ...performance };
|
|
@@ -333,9 +323,8 @@ export class NgtStore extends NgtRxStore {
|
|
|
333
323
|
// Check frameloop
|
|
334
324
|
if (state.frameloop !== frameloop)
|
|
335
325
|
state.setFrameloop(frameloop);
|
|
336
|
-
if (!this.get('ready'))
|
|
326
|
+
if (!this.get('ready'))
|
|
337
327
|
this.set({ ready: true });
|
|
338
|
-
}
|
|
339
328
|
this.invalidate();
|
|
340
329
|
}
|
|
341
330
|
resize() {
|
|
@@ -366,9 +355,9 @@ export class NgtStore extends NgtRxStore {
|
|
|
366
355
|
this.hold(this.select(), () => invalidate(this));
|
|
367
356
|
}
|
|
368
357
|
}
|
|
369
|
-
NgtStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
370
|
-
NgtStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
371
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
358
|
+
NgtStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
359
|
+
NgtStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtStore });
|
|
360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtStore, decorators: [{
|
|
372
361
|
type: Injectable
|
|
373
362
|
}] });
|
|
374
363
|
function computeInitialSize(canvas, defaultSize) {
|
|
@@ -381,4 +370,4 @@ function computeInitialSize(canvas, defaultSize) {
|
|
|
381
370
|
}
|
|
382
371
|
return { width: 0, height: 0, top: 0, left: 0 };
|
|
383
372
|
}
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9zdG9yZXMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBV3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUV4QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFDckUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekQsTUFBTSxZQUFZLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtCLENBQUM7QUFHM0UsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFvQjtJQURsRDs7UUFFcUIsZ0JBQVcsR0FBRyxNQUFNLENB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Q0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDOztxR0FqWlEsUUFBUTt5R0FBUixRQUFROzJGQUFSLFFBQVE7a0JBRHBCLFVBQVU7O0FBcVpYLFNBQVMsa0JBQWtCLENBQUMsTUFBaUQsRUFBRSxXQUFxQjtJQUNoRyxJQUFJLFdBQVcsRUFBRTtRQUNiLE9BQU8sV0FBVyxDQUFDO0tBQ3RCO0lBRUQsSUFBSSxNQUFNLFlBQVksaUJBQWlCLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRTtRQUM3RCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN2QztJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0U2xpY2UgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBjcmVhdGVMb29wIH0gZnJvbSAnLi4vbG9vcCc7XG5pbXBvcnQgdHlwZSB7XG4gICAgTmd0QmVmb3JlUmVuZGVyUmVjb3JkLFxuICAgIE5ndENhbnZhc0lucHV0cyxcbiAgICBOZ3REcHIsXG4gICAgTmd0RXF1Q29uZmlnLFxuICAgIE5ndEV2ZW50TWFuYWdlcixcbiAgICBOZ3RTaXplLFxuICAgIE5ndFN0YXRlLFxuICAgIE5ndFZpZXdwb3J0LFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhcHBseVByb3BzIH0gZnJvbSAnLi4vdXRpbHMvYXBwbHktcHJvcHMnO1xuaW1wb3J0IHsgcHJlcGFyZSB9IGZyb20gJy4uL3V0aWxzL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgbWFrZURlZmF1bHRDYW1lcmEsIG1ha2VEZWZhdWx0UmVuZGVyZXIsIG1ha2VEcHIgfSBmcm9tICcuLi91dGlscy9tYWtlJztcbmltcG9ydCB7IGNoZWNrTmVlZHNVcGRhdGUsIHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4uL3V0aWxzL3VwZGF0ZSc7XG5pbXBvcnQgeyBOZ3RSeFN0b3JlIH0gZnJvbSAnLi9yeC1zdG9yZSc7XG5cbmV4cG9ydCBjb25zdCByb290U3RhdGVNYXAgPSBuZXcgTWFwPEVsZW1lbnQsIE5ndFJ4U3RvcmU8Tmd0U3RhdGU+PigpO1xuY29uc3QgeyBpbnZhbGlkYXRlLCBhZHZhbmNlIH0gPSBjcmVhdGVMb29wKHJvb3RTdGF0ZU1hcCk7XG5jb25zdCBzaGFsbG93TG9vc2UgPSB7IG9iamVjdHM6ICdzaGFsbG93Jywgc3RyaWN0OiBmYWxzZSB9IGFzIE5ndEVxdUNvbmZpZztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFN0b3JlIGV4dGVuZHMgTmd0UnhTdG9yZTxOZ3RTdGF0ZT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50U3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93ID0gaW5qZWN0KERPQ1VNRU5UKS5kZWZhdWx0VmlldyBhcyBXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcztcblxuICAgIGlzSW5pdCA9IGZhbHNlO1xuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICBjb25zdCB0ZW1wVGFyZ2V0ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgICAgICAgICAgY29uc3QgZ2V0Q3VycmVudFZpZXdwb3J0ID0gKFxuICAgICAgICAgICAgICAgIGNhbWVyYSA9IHRoaXMuZ2V0KCdjYW1lcmEnKSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPiA9IGRlZmF1bHRUYXJnZXQsXG4gICAgICAgICAgICAgICAgc2l6ZSA9IHRoaXMuZ2V0KCdzaXplJylcbiAgICAgICAgICAgICk6IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCB0b3AsIGxlZnQgfSA9IHNpemU7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNwZWN0ID0gd2lkdGggLyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjMpIHRlbXBUYXJnZXQuY29weSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGVsc2UgdGVtcFRhcmdldC5zZXQoLi4udGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gY2FtZXJhLmdldFdvcmxkUG9zaXRpb24ocG9zaXRpb24pLmRpc3RhbmNlVG8odGVtcFRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCAvIGNhbWVyYS56b29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLyBjYW1lcmEuem9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3I6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzcGVjdCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmb3YgPSAoY2FtZXJhLmZvdiAqIE1hdGguUEkpIC8gMTgwOyAvLyBjb252ZXJ0IHZlcnRpY2FsIGZvdiB0byByYWRpYW5zXG4gICAgICAgICAgICAgICAgY29uc3QgaCA9IDIgKiBNYXRoLnRhbihmb3YgLyAyKSAqIGRpc3RhbmNlOyAvLyB2aXNpYmxlIGhlaWdodFxuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSBoICogYXNwZWN0O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3LFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGgsXG4gICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgZmFjdG9yOiB3aWR0aCAvIHcsXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICBhc3BlY3QsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG4gICAgICAgICAgICBsZXQgcGVyZm9ybWFuY2VUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgICAgICAgICAgIGNvbnN0IHNldFBlcmZvcm1hbmNlQ3VycmVudCA9IChjdXJyZW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7IHBlcmZvcm1hbmNlOiB7IC4uLnN0YXRlLnBlcmZvcm1hbmNlLCBjdXJyZW50IH0gfSkpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgICAgIGdldDogdGhpcy5nZXQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBzZXQ6IHRoaXMuc2V0LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHJlYWR5OiBmYWxzZSxcblxuICAgICAgICAgICAgICAgIHNjZW5lOiBwcmVwYXJlKG5ldyBUSFJFRS5TY2VuZSgpLCB7IHN0b3JlOiB0aGlzIH0pLFxuICAgICAgICAgICAgICAgIGV2ZW50czogeyBwcmlvcml0eTogMSwgZW5hYmxlZDogdHJ1ZSwgY29ubmVjdGVkOiBmYWxzZSB9LFxuXG4gICAgICAgICAgICAgICAgaW52YWxpZGF0ZTogKGZyYW1lcyA9IDEpID0+IGludmFsaWRhdGUodGhpcywgZnJhbWVzKSxcbiAgICAgICAgICAgICAgICBhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiBhZHZhbmNlKHRpbWVzdGFtcCwgcnVuR2xvYmFsRWZmZWN0cywgdGhpcyksXG5cbiAgICAgICAgICAgICAgICBsZWdhY3k6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpbmVhcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmxhdDogZmFsc2UsXG5cbiAgICAgICAgICAgICAgICBjb250cm9sczogbnVsbCxcbiAgICAgICAgICAgICAgICBjbG9jazogbmV3IFRIUkVFLkNsb2NrKCksXG4gICAgICAgICAgICAgICAgcG9pbnRlcixcblxuICAgICAgICAgICAgICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycsXG4gICAgICAgICAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudDogMSxcbiAgICAgICAgICAgICAgICAgICAgbWluOiAwLjUsXG4gICAgICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2U6IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgcmVncmVzczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgdGltZW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlcmZvcm1hbmNlVGltZW91dCkgY2xlYXJUaW1lb3V0KHBlcmZvcm1hbmNlVGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgbG93ZXIgYm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5wZXJmb3JtYW5jZS5jdXJyZW50ICE9PSBzdGF0ZS5wZXJmb3JtYW5jZS5taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQZXJmb3JtYW5jZUN1cnJlbnQoc3RhdGUucGVyZm9ybWFuY2UubWluKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvIGJhY2sgdG8gdXBwZXIgYm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gc2V0UGVyZm9ybWFuY2VDdXJyZW50KHRoaXMuZ2V0KCdwZXJmb3JtYW5jZScsICdtYXgnKSB8fCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5wZXJmb3JtYW5jZS5kZWJvdW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNpemU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbERwcjogMCxcbiAgICAgICAgICAgICAgICAgICAgZHByOiAwLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIGFzcGVjdDogMCxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZhY3RvcjogMCxcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q3VycmVudFZpZXdwb3J0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy5wYXJlbnRTdG9yZSBhcyBOZ3RSeFN0b3JlPE5ndFN0YXRlPixcbiAgICAgICAgICAgICAgICBpbnRlcm5hbDoge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgZnJhbWVzOiAwLFxuICAgICAgICAgICAgICAgICAgICBsYXN0RXZlbnQ6IG51bGwhLFxuICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbjogW10sXG4gICAgICAgICAgICAgICAgICAgIGhvdmVyZWQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsQ2xpY2s6IFswLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEhpdHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlZE1hcDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmU6IChjYWxsYmFjazogTmd0QmVmb3JlUmVuZGVyUmVjb3JkWydjYWxsYmFjayddLCBwcmlvcml0eSA9IDAsIHN0b3JlID0gdGhpcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWwgPSB0aGlzLmdldCgnaW50ZXJuYWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgc3Vic2NyaXB0aW9uIHdhcyBnaXZlbiBhIHByaW9yaXR5LCBpdCB0YWtlcyByZW5kZXJpbmcgaW50byBpdHMgb3duIGhhbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCByZWFzb24gd2Ugc3dpdGNoIG9mZiBhdXRvbWF0aWMgcmVuZGVyaW5nIGFuZCBpbmNyZWFzZSB0aGUgbWFudWFsIGZsYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzIGxvbmcgYXMgdGhpcyBmbGFnIGlzIHBvc2l0aXZlIHRoZXJlIGNhbiBiZSBubyBpbnRlcm5hbCByZW5kZXJpbmcgYXQgYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIHJlbmRlciBzdWJzY3JpcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5ICsgKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzLnB1c2goeyBwcmlvcml0eSwgc3RvcmUsIGNhbGxiYWNrIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgc3Vic2NyaWJlciBhbmQgc29ydCBsYXllcnMgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCwgbWVhbmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhpZ2hlc3QgcHJpb3JpdHkgcmVuZGVycyBsYXN0IChvbiB0b3Agb2YgdGhlIG90aGVyIGZyYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzLnNvcnQoKGEsIGIpID0+IChhLnByaW9yaXR5IHx8IDApIC0gKGIucHJpb3JpdHkgfHwgMCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsID0gdGhpcy5nZXQoJ2ludGVybmFsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGludGVybmFsPy5zdWJzY3JpYmVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNyZWFzZSBtYW51YWwgZmxhZyBpZiB0aGlzIHN1YnNjcmlwdGlvbiBoYWQgYSBwcmlvcml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5IC0gKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHN1YnNjcmliZXIgZnJvbSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzID0gaW50ZXJuYWwuc3Vic2NyaWJlcnMuZmlsdGVyKChzKSA9PiBzLmNhbGxiYWNrICE9PSBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldEV2ZW50czogKGV2ZW50czogUGFydGlhbDxOZ3RFdmVudE1hbmFnZXI+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KChzdGF0ZSkgPT4gKHsgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0U2l6ZTogKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB0b3A/OiBudW1iZXIsIGxlZnQ/OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FtZXJhID0gdGhpcy5nZXQoJ2NhbWVyYScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplID0geyB3aWR0aCwgaGVpZ2h0LCB0b3A6IHRvcCB8fCAwLCBsZWZ0OiBsZWZ0IHx8IDAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIC4uLmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIGRlZmF1bHRUYXJnZXQsIHNpemUpIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldERwcjogKGRwcjogTmd0RHByKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gbWFrZURwcihkcHIsIHRoaXMud2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcHI6IHJlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxEcHI6IHN0YXRlLnZpZXdwb3J0LmluaXRpYWxEcHIgfHwgcmVzb2x2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRGcmFtZWxvb3A6IChmcmFtZWxvb3A6ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInID0gJ2Fsd2F5cycpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvY2sgPSB0aGlzLmdldCgnY2xvY2snKTtcbiAgICAgICAgICAgICAgICAgICAgY2xvY2suc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICBjbG9jay5lbGFwc2VkVGltZSA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lbG9vcCAhPT0gJ25ldmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2suc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLmVsYXBzZWRUaW1lID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsgZnJhbWVsb29wIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWRkSW50ZXJhY3Rpb246IChpbnRlcmFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgaW50ZXJhY3Rpb246IFsuLi5zdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbiwgaW50ZXJhY3Rpb25dIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZUludGVyYWN0aW9uOiAodXVpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLmludGVybmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9uOiBzdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbi5maWx0ZXIoKGludGVyYWN0aW9uKSA9PiBpbnRlcmFjdGlvbi51dWlkICE9PSB1dWlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25maWd1cmUoaW5wdXRzOiBOZ3RDYW52YXNJbnB1dHMsIGNhbnZhc0VsZW1lbnQ6IEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGdsOiBnbE9wdGlvbnMsXG4gICAgICAgICAgICBzaXplOiBzaXplT3B0aW9ucyxcbiAgICAgICAgICAgIGNhbWVyYTogY2FtZXJhT3B0aW9ucyxcbiAgICAgICAgICAgIHJheWNhc3RlcjogcmF5Y2FzdGVyT3B0aW9ucyxcbiAgICAgICAgICAgIGV2ZW50cyxcbiAgICAgICAgICAgIG9ydGhvZ3JhcGhpYyxcbiAgICAgICAgICAgIGxvb2tBdCxcbiAgICAgICAgICAgIHNoYWRvd3MsXG4gICAgICAgICAgICBsaW5lYXIsXG4gICAgICAgICAgICBsZWdhY3ksXG4gICAgICAgICAgICBmbGF0LFxuICAgICAgICAgICAgZHByLFxuICAgICAgICAgICAgZnJhbWVsb29wLFxuICAgICAgICAgICAgcGVyZm9ybWFuY2UsXG4gICAgICAgIH0gPSBpbnB1dHM7XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCBzdGF0ZVRvVXBkYXRlOiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHt9O1xuXG4gICAgICAgIC8vIHNldHVwIHJlbmRlcmVyXG4gICAgICAgIGxldCBnbCA9IHN0YXRlLmdsO1xuICAgICAgICBpZiAoIXN0YXRlLmdsKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLmdsID0gZ2wgPSBtYWtlRGVmYXVsdFJlbmRlcmVyKGdsT3B0aW9ucywgY2FudmFzRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR1cCByYXljYXN0ZXJcbiAgICAgICAgbGV0IHJheWNhc3RlciA9IHN0YXRlLnJheWNhc3RlcjtcbiAgICAgICAgaWYgKCFyYXljYXN0ZXIpIHtcbiAgICAgICAgICAgIHN0YXRlVG9VcGRhdGUucmF5Y2FzdGVyID0gcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0IHJheWNhc3RlciBvcHRpb25zXG4gICAgICAgIGNvbnN0IHsgcGFyYW1zLCAuLi5vcHRpb25zIH0gPSByYXljYXN0ZXJPcHRpb25zIHx8IHt9O1xuICAgICAgICBpZiAoIWlzLmVxdShvcHRpb25zLCByYXljYXN0ZXIsIHNoYWxsb3dMb29zZSkpIGFwcGx5UHJvcHMocmF5Y2FzdGVyLCB7IC4uLm9wdGlvbnMgfSk7XG4gICAgICAgIGlmICghaXMuZXF1KHBhcmFtcywgcmF5Y2FzdGVyLnBhcmFtcywgc2hhbGxvd0xvb3NlKSkge1xuICAgICAgICAgICAgYXBwbHlQcm9wcyhyYXljYXN0ZXIsIHsgcGFyYW1zOiB7IC4uLnJheWNhc3Rlci5wYXJhbXMsIC4uLihwYXJhbXMgfHwge30pIH0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgZGVmYXVsdCBjYW1lcmFcbiAgICAgICAgaWYgKCFzdGF0ZS5jYW1lcmEpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FtZXJhID0gaXMuY2FtZXJhKGNhbWVyYU9wdGlvbnMpO1xuICAgICAgICAgICAgbGV0IGNhbWVyYSA9IGlzQ2FtZXJhID8gY2FtZXJhT3B0aW9ucyA6IG1ha2VEZWZhdWx0Q2FtZXJhKG9ydGhvZ3JhcGhpYyB8fCBmYWxzZSwgc3RhdGUuc2l6ZSk7XG5cbiAgICAgICAgICAgIGlmICghaXNDYW1lcmEpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FtZXJhT3B0aW9ucykgYXBwbHlQcm9wcyhjYW1lcmEsIGNhbWVyYU9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgLy8gc2V0IHBvc2l0aW9uLnpcbiAgICAgICAgICAgICAgICBpZiAoIWNhbWVyYU9wdGlvbnM/LnBvc2l0aW9uKSBjYW1lcmEucG9zaXRpb24ueiA9IDU7XG5cbiAgICAgICAgICAgICAgICAvLyBhbHdheXMgbG9vayBhdCBjZW50ZXIgb3IgcGFzc2VkLWluIGxvb2tBdCBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgaWYgKCFjYW1lcmFPcHRpb25zPy5yb3RhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb29rQXQpKSBjYW1lcmEubG9va0F0KGxvb2tBdFswXSwgbG9va0F0WzFdLCBsb29rQXRbMl0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsb29rQXQgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzKSBjYW1lcmEubG9va0F0KGxvb2tBdCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgcHJvamVjdGlvbiBtYXRyaXggYWZ0ZXIgYXBwbHlwcm9wc1xuICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXMuaW5zdGFuY2UoY2FtZXJhKSkge1xuICAgICAgICAgICAgICAgIGNhbWVyYSA9IHByZXBhcmUoY2FtZXJhLCB7IHN0b3JlOiB0aGlzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS5jYW1lcmEgPSBjYW1lcmE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXAgWFIgKG9uZSB0aW1lIG9ubHkhKVxuICAgICAgICBpZiAoIXN0YXRlLnhyKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgZnJhbWUgYmVoYXZpb3IgaW4gV2ViWFJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVhSRnJhbWU6IFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2sgPSAodGltZXN0YW1wOiBudW1iZXIsIGZyYW1lPzogWFJGcmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXQoKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZnJhbWVsb29wID09PSAnbmV2ZXInKSByZXR1cm47XG4gICAgICAgICAgICAgICAgYWR2YW5jZSh0aW1lc3RhbXAsIHRydWUsIHRoaXMsIGZyYW1lKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFRvZ2dsZSByZW5kZXIgc3dpdGNoaW5nIG9uIHNlc3Npb25cbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNlc3Npb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgICAgIHN0YXRlLmdsLnhyLmVuYWJsZWQgPSBzdGF0ZS5nbC54ci5pc1ByZXNlbnRpbmc7XG5cbiAgICAgICAgICAgICAgICBzdGF0ZS5nbC54ci5zZXRBbmltYXRpb25Mb29wKHN0YXRlLmdsLnhyLmlzUHJlc2VudGluZyA/IGhhbmRsZVhSRnJhbWUgOiBudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmdsLnhyLmlzUHJlc2VudGluZykgaW52YWxpZGF0ZSh0aGlzKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFdlYlhSIHNlc3Npb24gbWFuYWdlclxuICAgICAgICAgICAgY29uc3QgeHIgPSB7XG4gICAgICAgICAgICAgICAgY29ubmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5hZGRFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wueHIuYWRkRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGlzY29ubmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5yZW1vdmVFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wueHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gV2ViWFIgc2Vzc2lvbiBldmVudHNcbiAgICAgICAgICAgIGlmIChnbC54cikgeHIuY29ubmVjdCgpO1xuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS54ciA9IHhyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHNoYWRvd21hcFxuICAgICAgICBpZiAoZ2wuc2hhZG93TWFwKSB7XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2xlYW4gPSB0eXBlb2Ygc2hhZG93cyA9PT0gJ2Jvb2xlYW4nO1xuICAgICAgICAgICAgaWYgKChpc0Jvb2xlYW4gJiYgZ2wuc2hhZG93TWFwLmVuYWJsZWQgIT09IHNoYWRvd3MpIHx8ICFpcy5lcXUoc2hhZG93cywgZ2wuc2hhZG93TWFwLCBzaGFsbG93TG9vc2UpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkID0gZ2wuc2hhZG93TWFwLmVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgZ2wuc2hhZG93TWFwLmVuYWJsZWQgPSAhIXNoYWRvd3M7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0Jvb2xlYW4pIE9iamVjdC5hc3NpZ24oZ2wuc2hhZG93TWFwLCBzaGFkb3dzKTtcbiAgICAgICAgICAgICAgICBlbHNlIGdsLnNoYWRvd01hcC50eXBlID0gVEhSRUUuUENGU29mdFNoYWRvd01hcDtcblxuICAgICAgICAgICAgICAgIGlmIChvbGQgIT09IGdsLnNoYWRvd01hcC5lbmFibGVkKSBjaGVja05lZWRzVXBkYXRlKGdsLnNoYWRvd01hcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYWZlbHkgc2V0IGNvbG9yIG1hbmFnZW1lbnQgaWYgYXZhaWxhYmxlLlxuICAgICAgICAvLyBBdm9pZCBhY2Nlc3NpbmcgVEhSRUUuQ29sb3JNYW5hZ2VtZW50IHRvIHBsYXkgbmljZSB3aXRoIG9sZGVyIHZlcnNpb25zXG4gICAgICAgIGlmIChUSFJFRS5Db2xvck1hbmFnZW1lbnQpIFRIUkVFLkNvbG9yTWFuYWdlbWVudC5sZWdhY3lNb2RlID0gbGVnYWN5ID8/IHRydWU7XG4gICAgICAgIGNvbnN0IG91dHB1dEVuY29kaW5nID0gbGluZWFyID8gVEhSRUUuTGluZWFyRW5jb2RpbmcgOiBUSFJFRS5zUkdCRW5jb2Rpbmc7XG4gICAgICAgIGNvbnN0IHRvbmVNYXBwaW5nID0gZmxhdCA/IFRIUkVFLk5vVG9uZU1hcHBpbmcgOiBUSFJFRS5BQ0VTRmlsbWljVG9uZU1hcHBpbmc7XG5cbiAgICAgICAgaWYgKGdsLm91dHB1dEVuY29kaW5nICE9PSBvdXRwdXRFbmNvZGluZykgZ2wub3V0cHV0RW5jb2RpbmcgPSBvdXRwdXRFbmNvZGluZztcbiAgICAgICAgaWYgKGdsLnRvbmVNYXBwaW5nICE9PSB0b25lTWFwcGluZykgZ2wudG9uZU1hcHBpbmcgPSB0b25lTWFwcGluZztcblxuICAgICAgICAvLyBVcGRhdGUgY29sb3IgbWFuYWdlbWVudCBzdGF0ZVxuICAgICAgICBpZiAoc3RhdGUubGVnYWN5ICE9PSBsZWdhY3kpIHN0YXRlVG9VcGRhdGUubGVnYWN5ID0gbGVnYWN5O1xuICAgICAgICBpZiAoc3RhdGUubGluZWFyICE9PSBsaW5lYXIpIHN0YXRlVG9VcGRhdGUubGluZWFyID0gbGluZWFyO1xuICAgICAgICBpZiAoc3RhdGUuZmxhdCAhPT0gZmxhdCkgc3RhdGVUb1VwZGF0ZS5mbGF0ID0gZmxhdDtcblxuICAgICAgICAvLyBTZXQgZ2wgcHJvcHNcbiAgICAgICAgZ2wuc2V0Q2xlYXJBbHBoYSgwKTtcbiAgICAgICAgZ2wuc2V0UGl4ZWxSYXRpbyhtYWtlRHByKHN0YXRlLnZpZXdwb3J0LmRwcikpO1xuICAgICAgICBnbC5zZXRTaXplKHN0YXRlLnNpemUud2lkdGgsIHN0YXRlLnNpemUuaGVpZ2h0KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBpcy5vYmooZ2xPcHRpb25zKSAmJlxuICAgICAgICAgICAgISh0eXBlb2YgZ2xPcHRpb25zID09PSAnZnVuY3Rpb24nKSAmJlxuICAgICAgICAgICAgIWlzLnJlbmRlcmVyKGdsT3B0aW9ucykgJiZcbiAgICAgICAgICAgICFpcy5lcXUoZ2xPcHRpb25zLCBnbCwgc2hhbGxvd0xvb3NlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGFwcGx5UHJvcHMoZ2wsIGdsT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdG9yZSBldmVudHMgaW50ZXJuYWxseVxuICAgICAgICBpZiAoZXZlbnRzICYmICFzdGF0ZS5ldmVudHMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgIHN0YXRlVG9VcGRhdGUuZXZlbnRzID0gZXZlbnRzKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgcGVyZm9ybWFuY2VcbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlICYmICFpcy5lcXUocGVyZm9ybWFuY2UsIHN0YXRlLnBlcmZvcm1hbmNlLCBzaGFsbG93TG9vc2UpKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLnBlcmZvcm1hbmNlID0geyAuLi5zdGF0ZS5wZXJmb3JtYW5jZSwgLi4ucGVyZm9ybWFuY2UgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KHN0YXRlVG9VcGRhdGUpO1xuXG4gICAgICAgIC8vIENoZWNrIHBpeGVscmF0aW9cbiAgICAgICAgaWYgKGRwciAmJiBzdGF0ZS52aWV3cG9ydC5kcHIgIT09IG1ha2VEcHIoZHByKSkgc3RhdGUuc2V0RHByKGRwcik7XG4gICAgICAgIC8vIENoZWNrIHNpemUsIGFsbG93IGl0IHRvIHRha2Ugb24gY29udGFpbmVyIGJvdW5kcyBpbml0aWFsbHlcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGNvbXB1dGVJbml0aWFsU2l6ZShjYW52YXNFbGVtZW50LCBzaXplT3B0aW9ucyk7XG4gICAgICAgIGlmICghaXMuZXF1KHNpemUsIHN0YXRlLnNpemUsIHNoYWxsb3dMb29zZSkpIHN0YXRlLnNldFNpemUoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUudG9wLCBzaXplLmxlZnQpO1xuXG4gICAgICAgIC8vIENoZWNrIGZyYW1lbG9vcFxuICAgICAgICBpZiAoc3RhdGUuZnJhbWVsb29wICE9PSBmcmFtZWxvb3ApIHN0YXRlLnNldEZyYW1lbG9vcChmcmFtZWxvb3ApO1xuXG4gICAgICAgIGlmICghdGhpcy5nZXQoJ3JlYWR5JykpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KHsgcmVhZHk6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZSgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICBsZXQgb2xkU2l6ZSA9IHN0YXRlLnNpemU7XG4gICAgICAgIGxldCBvbGREcHIgPSBzdGF0ZS52aWV3cG9ydC5kcHI7XG4gICAgICAgIGxldCBvbGRDYW1lcmEgPSBzdGF0ZS5jYW1lcmE7XG5cbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc2VsZWN0KHNlbGVjdFNsaWNlKFsnY2FtZXJhJywgJ3NpemUnLCAndmlld3BvcnQnLCAnZ2wnXSkpLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGNhbWVyYSwgc2l6ZSwgdmlld3BvcnQsIGdsLCBzZXQgfSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgICAgICAvLyByZXNpemUgY2FtZXJhIGFuZCByZW5kZXJlciBvbiBjaGFuZ2VzIHRvIHNpemUgYW5kIGRwclxuICAgICAgICAgICAgaWYgKHNpemUgIT09IG9sZFNpemUgfHwgdmlld3BvcnQuZHByICE9PSBvbGREcHIpIHtcbiAgICAgICAgICAgICAgICBvbGRTaXplID0gc2l6ZTtcbiAgICAgICAgICAgICAgICBvbGREcHIgPSB2aWV3cG9ydC5kcHI7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIGNhbWVyYVxuICAgICAgICAgICAgICAgIHVwZGF0ZUNhbWVyYShjYW1lcmEsIHNpemUpO1xuICAgICAgICAgICAgICAgIGdsLnNldFBpeGVsUmF0aW8odmlld3BvcnQuZHByKTtcbiAgICAgICAgICAgICAgICBnbC5zZXRTaXplKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdXBkYXRlIHZpZXdwb3J0IHdoZW4gY2FtZXJhIGNoYW5nZXNcbiAgICAgICAgICAgIGlmIChjYW1lcmEgIT09IG9sZENhbWVyYSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNhbWVyYShjYW1lcmEsIHNpemUpO1xuICAgICAgICAgICAgICAgIG9sZENhbWVyYSA9IGNhbWVyYTtcbiAgICAgICAgICAgICAgICBzZXQoKHN0YXRlKSA9PiAoeyB2aWV3cG9ydDogeyAuLi5zdGF0ZS52aWV3cG9ydCwgLi4uc3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSkgfSB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW52YWxpZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc2VsZWN0KCksICgpID0+IGludmFsaWRhdGUodGhpcykpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZUluaXRpYWxTaXplKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBUSFJFRS5PZmZzY3JlZW5DYW52YXMsIGRlZmF1bHRTaXplPzogTmd0U2l6ZSk6IE5ndFNpemUge1xuICAgIGlmIChkZWZhdWx0U2l6ZSkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNhbnZhcyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50ICYmIGNhbnZhcy5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH0gPSBjYW52YXMucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAwLCBsZWZ0OiAwIH07XG59XG4iXX0=
|
|
373
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9zdG9yZXMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBV3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUV4QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFDckUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekQsTUFBTSxZQUFZLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtCLENBQUM7QUFHM0UsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFvQjtJQURsRDs7UUFFcUIsZ0JBQVcsR0FBRyxNQUFNLENB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Q0FBQzs7cUdBcFlRLFFBQVE7eUdBQVIsUUFBUTsyRkFBUixRQUFRO2tCQURwQixVQUFVOztBQXdZWCxTQUFTLGtCQUFrQixDQUFDLE1BQWlELEVBQUUsV0FBcUI7SUFDaEcsSUFBSSxXQUFXLEVBQUU7UUFDYixPQUFPLFdBQVcsQ0FBQztLQUN0QjtJQUVELElBQUksTUFBTSxZQUFZLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDN0QsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNsRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDdkM7SUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdFNsaWNlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgY3JlYXRlTG9vcCB9IGZyb20gJy4uL2xvb3AnO1xuaW1wb3J0IHR5cGUge1xuICAgIE5ndEJlZm9yZVJlbmRlclJlY29yZCxcbiAgICBOZ3RDYW52YXNJbnB1dHMsXG4gICAgTmd0RHByLFxuICAgIE5ndEVxdUNvbmZpZyxcbiAgICBOZ3RFdmVudE1hbmFnZXIsXG4gICAgTmd0U2l6ZSxcbiAgICBOZ3RTdGF0ZSxcbiAgICBOZ3RWaWV3cG9ydCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcyB9IGZyb20gJy4uL3V0aWxzL2FwcGx5LXByb3BzJztcbmltcG9ydCB7IHByZXBhcmUgfSBmcm9tICcuLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IG1ha2VEZWZhdWx0Q2FtZXJhLCBtYWtlRGVmYXVsdFJlbmRlcmVyLCBtYWtlRHByIH0gZnJvbSAnLi4vdXRpbHMvbWFrZSc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlLCB1cGRhdGVDYW1lcmEgfSBmcm9tICcuLi91dGlscy91cGRhdGUnO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSB9IGZyb20gJy4vcngtc3RvcmUnO1xuXG5leHBvcnQgY29uc3Qgcm9vdFN0YXRlTWFwID0gbmV3IE1hcDxFbGVtZW50LCBOZ3RSeFN0b3JlPE5ndFN0YXRlPj4oKTtcbmNvbnN0IHsgaW52YWxpZGF0ZSwgYWR2YW5jZSB9ID0gY3JlYXRlTG9vcChyb290U3RhdGVNYXApO1xuY29uc3Qgc2hhbGxvd0xvb3NlID0geyBvYmplY3RzOiAnc2hhbGxvdycsIHN0cmljdDogZmFsc2UgfSBhcyBOZ3RFcXVDb25maWc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3RTdG9yZSBleHRlbmRzIE5ndFJ4U3RvcmU8Tmd0U3RhdGU+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudFN0b3JlID0gaW5qZWN0KE5ndFN0b3JlLCB7IG9wdGlvbmFsOiB0cnVlLCBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdyA9IGluamVjdChET0NVTUVOVCkuZGVmYXVsdFZpZXcgYXMgV2luZG93ICYgdHlwZW9mIGdsb2JhbFRoaXM7XG5cbiAgICBpc0luaXQgPSBmYWxzZTtcblxuICAgIGluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0luaXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRUYXJnZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgY29uc3QgdGVtcFRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGdldEN1cnJlbnRWaWV3cG9ydCA9IChcbiAgICAgICAgICAgICAgICBjYW1lcmEgPSB0aGlzLmdldCgnY2FtZXJhJyksXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT4gPSBkZWZhdWx0VGFyZ2V0LFxuICAgICAgICAgICAgICAgIHNpemUgPSB0aGlzLmdldCgnc2l6ZScpXG4gICAgICAgICAgICApOiBPbWl0PE5ndFZpZXdwb3J0LCAnZHByJyB8ICdpbml0aWFsRHByJz4gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH0gPSBzaXplO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzcGVjdCA9IHdpZHRoIC8gaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzKSB0ZW1wVGFyZ2V0LmNvcHkodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBlbHNlIHRlbXBUYXJnZXQuc2V0KC4uLnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGNhbWVyYS5nZXRXb3JsZFBvc2l0aW9uKHBvc2l0aW9uKS5kaXN0YW5jZVRvKHRlbXBUYXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggLyBjYW1lcmEuem9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC8gY2FtZXJhLnpvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3BlY3QsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZm92ID0gKGNhbWVyYS5mb3YgKiBNYXRoLlBJKSAvIDE4MDsgLy8gY29udmVydCB2ZXJ0aWNhbCBmb3YgdG8gcmFkaWFuc1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSAyICogTWF0aC50YW4oZm92IC8gMikgKiBkaXN0YW5jZTsgLy8gdmlzaWJsZSBoZWlnaHRcbiAgICAgICAgICAgICAgICBjb25zdCB3ID0gaCAqIGFzcGVjdDtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB3aWR0aDogdywgaGVpZ2h0OiBoLCB0b3AsIGxlZnQsIGZhY3Rvcjogd2lkdGggLyB3LCBkaXN0YW5jZSwgYXNwZWN0IH07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBwb2ludGVyID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuICAgICAgICAgICAgbGV0IHBlcmZvcm1hbmNlVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gICAgICAgICAgICBjb25zdCBzZXRQZXJmb3JtYW5jZUN1cnJlbnQgPSAoY3VycmVudDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoKHN0YXRlKSA9PiAoeyBwZXJmb3JtYW5jZTogeyAuLi5zdGF0ZS5wZXJmb3JtYW5jZSwgY3VycmVudCB9IH0pKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgICAgICBnZXQ6IHRoaXMuZ2V0LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgc2V0OiB0aGlzLnNldC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdDogdGhpcy5zZWxlY3QuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICByZWFkeTogZmFsc2UsXG5cbiAgICAgICAgICAgICAgICBzY2VuZTogcHJlcGFyZShuZXcgVEhSRUUuU2NlbmUoKSwgeyBzdG9yZTogdGhpcyB9KSxcbiAgICAgICAgICAgICAgICBldmVudHM6IHsgcHJpb3JpdHk6IDEsIGVuYWJsZWQ6IHRydWUsIGNvbm5lY3RlZDogZmFsc2UgfSxcblxuICAgICAgICAgICAgICAgIGludmFsaWRhdGU6IChmcmFtZXMgPSAxKSA9PiBpbnZhbGlkYXRlKHRoaXMsIGZyYW1lcyksXG4gICAgICAgICAgICAgICAgYWR2YW5jZTogKHRpbWVzdGFtcDogbnVtYmVyLCBydW5HbG9iYWxFZmZlY3RzPzogYm9vbGVhbikgPT4gYWR2YW5jZSh0aW1lc3RhbXAsIHJ1bkdsb2JhbEVmZmVjdHMsIHRoaXMpLFxuXG4gICAgICAgICAgICAgICAgbGVnYWN5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsaW5lYXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZsYXQ6IGZhbHNlLFxuXG4gICAgICAgICAgICAgICAgY29udHJvbHM6IG51bGwsXG4gICAgICAgICAgICAgICAgY2xvY2s6IG5ldyBUSFJFRS5DbG9jaygpLFxuICAgICAgICAgICAgICAgIHBvaW50ZXIsXG5cbiAgICAgICAgICAgICAgICBmcmFtZWxvb3A6ICdhbHdheXMnLFxuICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IDEsXG4gICAgICAgICAgICAgICAgICAgIG1pbjogMC41LFxuICAgICAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlOiAyMDAsXG4gICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3M6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIHRpbWVvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZXJmb3JtYW5jZVRpbWVvdXQpIGNsZWFyVGltZW91dChwZXJmb3JtYW5jZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGxvd2VyIGJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUucGVyZm9ybWFuY2UuY3VycmVudCAhPT0gc3RhdGUucGVyZm9ybWFuY2UubWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGVyZm9ybWFuY2VDdXJyZW50KHN0YXRlLnBlcmZvcm1hbmNlLm1pbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBnbyBiYWNrIHRvIHVwcGVyIGJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZVRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHNldFBlcmZvcm1hbmNlQ3VycmVudCh0aGlzLmdldCgncGVyZm9ybWFuY2UnLCAnbWF4JykgfHwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucGVyZm9ybWFuY2UuZGVib3VuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAsIHRvcDogMCwgbGVmdDogMCB9LFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0OiB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxEcHI6IDAsXG4gICAgICAgICAgICAgICAgICAgIGRwcjogMCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICAgICAgICBhc3BlY3Q6IDAsXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiAwLFxuICAgICAgICAgICAgICAgICAgICBmYWN0b3I6IDAsXG4gICAgICAgICAgICAgICAgICAgIGdldEN1cnJlbnRWaWV3cG9ydCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByZXZpb3VzU3RvcmU6IHRoaXMucGFyZW50U3RvcmUgYXMgTmd0UnhTdG9yZTxOZ3RTdGF0ZT4sXG4gICAgICAgICAgICAgICAgaW50ZXJuYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZyYW1lczogMCxcbiAgICAgICAgICAgICAgICAgICAgbGFzdEV2ZW50OiBudWxsISxcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb246IFtdLFxuICAgICAgICAgICAgICAgICAgICBob3ZlcmVkOiBuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXJzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbENsaWNrOiBbMCwgMF0sXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxIaXRzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZWRNYXA6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6IE5ndEJlZm9yZVJlbmRlclJlY29yZFsnY2FsbGJhY2snXSwgcHJpb3JpdHkgPSAwLCBzdG9yZSA9IHRoaXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsID0gdGhpcy5nZXQoJ2ludGVybmFsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIHN1YnNjcmlwdGlvbiB3YXMgZ2l2ZW4gYSBwcmlvcml0eSwgaXQgdGFrZXMgcmVuZGVyaW5nIGludG8gaXRzIG93biBoYW5kc1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHRoYXQgcmVhc29uIHdlIHN3aXRjaCBvZmYgYXV0b21hdGljIHJlbmRlcmluZyBhbmQgaW5jcmVhc2UgdGhlIG1hbnVhbCBmbGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcyBsb25nIGFzIHRoaXMgZmxhZyBpcyBwb3NpdGl2ZSB0aGVyZSBjYW4gYmUgbm8gaW50ZXJuYWwgcmVuZGVyaW5nIGF0IGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSByZW5kZXIgc3Vic2NyaXB0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWwucHJpb3JpdHkgPSBpbnRlcm5hbC5wcmlvcml0eSArIChwcmlvcml0eSA+IDAgPyAxIDogMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5zdWJzY3JpYmVycy5wdXNoKHsgcHJpb3JpdHksIHN0b3JlLCBjYWxsYmFjayB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHN1YnNjcmliZXIgYW5kIHNvcnQgbGF5ZXJzIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QsIG1lYW5pbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBoaWdoZXN0IHByaW9yaXR5IHJlbmRlcnMgbGFzdCAob24gdG9wIG9mIHRoZSBvdGhlciBmcmFtZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5zdWJzY3JpYmVycy5zb3J0KChhLCBiKSA9PiAoYS5wcmlvcml0eSB8fCAwKSAtIChiLnByaW9yaXR5IHx8IDApKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbCA9IHRoaXMuZ2V0KCdpbnRlcm5hbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcm5hbD8uc3Vic2NyaWJlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVjcmVhc2UgbWFudWFsIGZsYWcgaWYgdGhpcyBzdWJzY3JpcHRpb24gaGFkIGEgcHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWwucHJpb3JpdHkgPSBpbnRlcm5hbC5wcmlvcml0eSAtIChwcmlvcml0eSA+IDAgPyAxIDogMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBzdWJzY3JpYmVyIGZyb20gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5zdWJzY3JpYmVycyA9IGludGVybmFsLnN1YnNjcmliZXJzLmZpbHRlcigocykgPT4gcy5jYWxsYmFjayAhPT0gY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRFdmVudHM6IChldmVudHM6IFBhcnRpYWw8Tmd0RXZlbnRNYW5hZ2VyPikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7IGV2ZW50czogeyAuLi5zdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9IH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbWVyYSA9IHRoaXMuZ2V0KCdjYW1lcmEnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IHsgd2lkdGgsIGhlaWdodCwgdG9wOiB0b3AgfHwgMCwgbGVmdDogbGVmdCB8fCAwIH07XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0OiB7IC4uLnN0YXRlLnZpZXdwb3J0LCAuLi5nZXRDdXJyZW50Vmlld3BvcnQoY2FtZXJhLCBkZWZhdWx0VGFyZ2V0LCBzaXplKSB9LFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXREcHI6IChkcHI6IE5ndERwcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IG1ha2VEcHIoZHByLCB0aGlzLndpbmRvdyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUudmlld3BvcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHByOiByZXNvbHZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsRHByOiBzdGF0ZS52aWV3cG9ydC5pbml0aWFsRHByIHx8IHJlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0RnJhbWVsb29wOiAoZnJhbWVsb29wOiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJyA9ICdhbHdheXMnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb2NrID0gdGhpcy5nZXQoJ2Nsb2NrJyk7XG4gICAgICAgICAgICAgICAgICAgIGNsb2NrLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgY2xvY2suZWxhcHNlZFRpbWUgPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZWxvb3AgIT09ICduZXZlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLnN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9jay5lbGFwc2VkVGltZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCh7IGZyYW1lbG9vcCB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFkZEludGVyYWN0aW9uOiAoaW50ZXJhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6IHsgLi4uc3RhdGUuaW50ZXJuYWwsIGludGVyYWN0aW9uOiBbLi4uc3RhdGUuaW50ZXJuYWwuaW50ZXJhY3Rpb24sIGludGVyYWN0aW9uXSB9LFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVJbnRlcmFjdGlvbjogKHV1aWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5pbnRlcm5hbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbjogc3RhdGUuaW50ZXJuYWwuaW50ZXJhY3Rpb24uZmlsdGVyKChpbnRlcmFjdGlvbikgPT4gaW50ZXJhY3Rpb24udXVpZCAhPT0gdXVpZCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uZmlndXJlKGlucHV0czogTmd0Q2FudmFzSW5wdXRzLCBjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBnbDogZ2xPcHRpb25zLFxuICAgICAgICAgICAgc2l6ZTogc2l6ZU9wdGlvbnMsXG4gICAgICAgICAgICBjYW1lcmE6IGNhbWVyYU9wdGlvbnMsXG4gICAgICAgICAgICByYXljYXN0ZXI6IHJheWNhc3Rlck9wdGlvbnMsXG4gICAgICAgICAgICBldmVudHMsXG4gICAgICAgICAgICBvcnRob2dyYXBoaWMsXG4gICAgICAgICAgICBsb29rQXQsXG4gICAgICAgICAgICBzaGFkb3dzLFxuICAgICAgICAgICAgbGluZWFyLFxuICAgICAgICAgICAgbGVnYWN5LFxuICAgICAgICAgICAgZmxhdCxcbiAgICAgICAgICAgIGRwcixcbiAgICAgICAgICAgIGZyYW1lbG9vcCxcbiAgICAgICAgICAgIHBlcmZvcm1hbmNlLFxuICAgICAgICB9ID0gaW5wdXRzO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3Qgc3RhdGVUb1VwZGF0ZTogUGFydGlhbDxOZ3RTdGF0ZT4gPSB7fTtcblxuICAgICAgICAvLyBzZXR1cCByZW5kZXJlclxuICAgICAgICBsZXQgZ2wgPSBzdGF0ZS5nbDtcbiAgICAgICAgaWYgKCFzdGF0ZS5nbCkge1xuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS5nbCA9IGdsID0gbWFrZURlZmF1bHRSZW5kZXJlcihnbE9wdGlvbnMsIGNhbnZhc0VsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dXAgcmF5Y2FzdGVyXG4gICAgICAgIGxldCByYXljYXN0ZXIgPSBzdGF0ZS5yYXljYXN0ZXI7XG4gICAgICAgIGlmICghcmF5Y2FzdGVyKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLnJheWNhc3RlciA9IHJheWNhc3RlciA9IG5ldyBUSFJFRS5SYXljYXN0ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldCByYXljYXN0ZXIgb3B0aW9uc1xuICAgICAgICBjb25zdCB7IHBhcmFtcywgLi4ub3B0aW9ucyB9ID0gcmF5Y2FzdGVyT3B0aW9ucyB8fCB7fTtcbiAgICAgICAgaWYgKCFpcy5lcXUob3B0aW9ucywgcmF5Y2FzdGVyLCBzaGFsbG93TG9vc2UpKSBhcHBseVByb3BzKHJheWNhc3RlciwgeyAuLi5vcHRpb25zIH0pO1xuICAgICAgICBpZiAoIWlzLmVxdShwYXJhbXMsIHJheWNhc3Rlci5wYXJhbXMsIHNoYWxsb3dMb29zZSkpIHtcbiAgICAgICAgICAgIGFwcGx5UHJvcHMocmF5Y2FzdGVyLCB7IHBhcmFtczogeyAuLi5yYXljYXN0ZXIucGFyYW1zLCAuLi4ocGFyYW1zIHx8IHt9KSB9IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIGRlZmF1bHQgY2FtZXJhXG4gICAgICAgIGlmICghc3RhdGUuY2FtZXJhKSB7XG4gICAgICAgICAgICBjb25zdCBpc0NhbWVyYSA9IGlzLmNhbWVyYShjYW1lcmFPcHRpb25zKTtcbiAgICAgICAgICAgIGxldCBjYW1lcmEgPSBpc0NhbWVyYSA/IGNhbWVyYU9wdGlvbnMgOiBtYWtlRGVmYXVsdENhbWVyYShvcnRob2dyYXBoaWMgfHwgZmFsc2UsIHN0YXRlLnNpemUpO1xuXG4gICAgICAgICAgICBpZiAoIWlzQ2FtZXJhKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbWVyYU9wdGlvbnMpIGFwcGx5UHJvcHMoY2FtZXJhLCBjYW1lcmFPcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIC8vIHNldCBwb3NpdGlvbi56XG4gICAgICAgICAgICAgICAgaWYgKCFjYW1lcmFPcHRpb25zPy5wb3NpdGlvbikgY2FtZXJhLnBvc2l0aW9uLnogPSA1O1xuXG4gICAgICAgICAgICAgICAgLy8gYWx3YXlzIGxvb2sgYXQgY2VudGVyIG9yIHBhc3NlZC1pbiBsb29rQXQgYnkgZGVmYXVsdFxuICAgICAgICAgICAgICAgIGlmICghY2FtZXJhT3B0aW9ucz8ucm90YXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9va0F0KSkgY2FtZXJhLmxvb2tBdChsb29rQXRbMF0sIGxvb2tBdFsxXSwgbG9va0F0WzJdKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobG9va0F0IGluc3RhbmNlb2YgVEhSRUUuVmVjdG9yMykgY2FtZXJhLmxvb2tBdChsb29rQXQpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbWVyYS5sb29rQXQoMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHByb2plY3Rpb24gbWF0cml4IGFmdGVyIGFwcGx5cHJvcHNcbiAgICAgICAgICAgICAgICBjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzLmluc3RhbmNlKGNhbWVyYSkpIGNhbWVyYSA9IHByZXBhcmUoY2FtZXJhLCB7IHN0b3JlOiB0aGlzIH0pO1xuXG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLmNhbWVyYSA9IGNhbWVyYTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCB1cCBYUiAob25lIHRpbWUgb25seSEpXG4gICAgICAgIGlmICghc3RhdGUueHIpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBmcmFtZSBiZWhhdmlvciBpbiBXZWJYUlxuICAgICAgICAgICAgY29uc3QgaGFuZGxlWFJGcmFtZTogWFJGcmFtZVJlcXVlc3RDYWxsYmFjayA9ICh0aW1lc3RhbXA6IG51bWJlciwgZnJhbWU/OiBYUkZyYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5mcmFtZWxvb3AgPT09ICduZXZlcicpIHJldHVybjtcbiAgICAgICAgICAgICAgICBhZHZhbmNlKHRpbWVzdGFtcCwgdHJ1ZSwgdGhpcywgZnJhbWUpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gVG9nZ2xlIHJlbmRlciBzd2l0Y2hpbmcgb24gc2Vzc2lvblxuICAgICAgICAgICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgICAgICAgICAgc3RhdGUuZ2wueHIuZW5hYmxlZCA9IHN0YXRlLmdsLnhyLmlzUHJlc2VudGluZztcblxuICAgICAgICAgICAgICAgIHN0YXRlLmdsLnhyLnNldEFuaW1hdGlvbkxvb3Aoc3RhdGUuZ2wueHIuaXNQcmVzZW50aW5nID8gaGFuZGxlWFJGcmFtZSA6IG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghc3RhdGUuZ2wueHIuaXNQcmVzZW50aW5nKSBpbnZhbGlkYXRlKHRoaXMpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gV2ViWFIgc2Vzc2lvbiBtYW5hZ2VyXG4gICAgICAgICAgICBjb25zdCB4ciA9IHtcbiAgICAgICAgICAgICAgICBjb25uZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGdsLnhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Nlc3Npb25zdGFydCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5hZGRFdmVudExpc3RlbmVyKCdzZXNzaW9uZW5kJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkaXNjb25uZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGdsLnhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nlc3Npb25zdGFydCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5yZW1vdmVFdmVudExpc3RlbmVyKCdzZXNzaW9uZW5kJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBXZWJYUiBzZXNzaW9uIGV2ZW50c1xuICAgICAgICAgICAgaWYgKGdsLnhyKSB4ci5jb25uZWN0KCk7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLnhyID0geHI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgc2hhZG93bWFwXG4gICAgICAgIGlmIChnbC5zaGFkb3dNYXApIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQm9vbGVhbiA9IHR5cGVvZiBzaGFkb3dzID09PSAnYm9vbGVhbic7XG4gICAgICAgICAgICBpZiAoKGlzQm9vbGVhbiAmJiBnbC5zaGFkb3dNYXAuZW5hYmxlZCAhPT0gc2hhZG93cykgfHwgIWlzLmVxdShzaGFkb3dzLCBnbC5zaGFkb3dNYXAsIHNoYWxsb3dMb29zZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGQgPSBnbC5zaGFkb3dNYXAuZW5hYmxlZDtcbiAgICAgICAgICAgICAgICBnbC5zaGFkb3dNYXAuZW5hYmxlZCA9ICEhc2hhZG93cztcbiAgICAgICAgICAgICAgICBpZiAoIWlzQm9vbGVhbikgT2JqZWN0LmFzc2lnbihnbC5zaGFkb3dNYXAsIHNoYWRvd3MpO1xuICAgICAgICAgICAgICAgIGVsc2UgZ2wuc2hhZG93TWFwLnR5cGUgPSBUSFJFRS5QQ0ZTb2Z0U2hhZG93TWFwO1xuXG4gICAgICAgICAgICAgICAgaWYgKG9sZCAhPT0gZ2wuc2hhZG93TWFwLmVuYWJsZWQpIGNoZWNrTmVlZHNVcGRhdGUoZ2wuc2hhZG93TWFwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNhZmVseSBzZXQgY29sb3IgbWFuYWdlbWVudCBpZiBhdmFpbGFibGUuXG4gICAgICAgIC8vIEF2b2lkIGFjY2Vzc2luZyBUSFJFRS5Db2xvck1hbmFnZW1lbnQgdG8gcGxheSBuaWNlIHdpdGggb2xkZXIgdmVyc2lvbnNcbiAgICAgICAgaWYgKFRIUkVFLkNvbG9yTWFuYWdlbWVudCkgVEhSRUUuQ29sb3JNYW5hZ2VtZW50LmxlZ2FjeU1vZGUgPSBsZWdhY3kgPz8gdHJ1ZTtcbiAgICAgICAgY29uc3Qgb3V0cHV0RW5jb2RpbmcgPSBsaW5lYXIgPyBUSFJFRS5MaW5lYXJFbmNvZGluZyA6IFRIUkVFLnNSR0JFbmNvZGluZztcbiAgICAgICAgY29uc3QgdG9uZU1hcHBpbmcgPSBmbGF0ID8gVEhSRUUuTm9Ub25lTWFwcGluZyA6IFRIUkVFLkFDRVNGaWxtaWNUb25lTWFwcGluZztcblxuICAgICAgICBpZiAoZ2wub3V0cHV0RW5jb2RpbmcgIT09IG91dHB1dEVuY29kaW5nKSBnbC5vdXRwdXRFbmNvZGluZyA9IG91dHB1dEVuY29kaW5nO1xuICAgICAgICBpZiAoZ2wudG9uZU1hcHBpbmcgIT09IHRvbmVNYXBwaW5nKSBnbC50b25lTWFwcGluZyA9IHRvbmVNYXBwaW5nO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBjb2xvciBtYW5hZ2VtZW50IHN0YXRlXG4gICAgICAgIGlmIChzdGF0ZS5sZWdhY3kgIT09IGxlZ2FjeSkgc3RhdGVUb1VwZGF0ZS5sZWdhY3kgPSBsZWdhY3k7XG4gICAgICAgIGlmIChzdGF0ZS5saW5lYXIgIT09IGxpbmVhcikgc3RhdGVUb1VwZGF0ZS5saW5lYXIgPSBsaW5lYXI7XG4gICAgICAgIGlmIChzdGF0ZS5mbGF0ICE9PSBmbGF0KSBzdGF0ZVRvVXBkYXRlLmZsYXQgPSBmbGF0O1xuXG4gICAgICAgIC8vIFNldCBnbCBwcm9wc1xuICAgICAgICBnbC5zZXRDbGVhckFscGhhKDApO1xuICAgICAgICBnbC5zZXRQaXhlbFJhdGlvKG1ha2VEcHIoc3RhdGUudmlld3BvcnQuZHByKSk7XG4gICAgICAgIGdsLnNldFNpemUoc3RhdGUuc2l6ZS53aWR0aCwgc3RhdGUuc2l6ZS5oZWlnaHQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzLm9iaihnbE9wdGlvbnMpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBnbE9wdGlvbnMgPT09ICdmdW5jdGlvbicpICYmXG4gICAgICAgICAgICAhaXMucmVuZGVyZXIoZ2xPcHRpb25zKSAmJlxuICAgICAgICAgICAgIWlzLmVxdShnbE9wdGlvbnMsIGdsLCBzaGFsbG93TG9vc2UpXG4gICAgICAgICkge1xuICAgICAgICAgICAgYXBwbHlQcm9wcyhnbCwgZ2xPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0b3JlIGV2ZW50cyBpbnRlcm5hbGx5XG4gICAgICAgIGlmIChldmVudHMgJiYgIXN0YXRlLmV2ZW50cy5oYW5kbGVycykgc3RhdGVUb1VwZGF0ZS5ldmVudHMgPSBldmVudHModGhpcyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgcGVyZm9ybWFuY2VcbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlICYmICFpcy5lcXUocGVyZm9ybWFuY2UsIHN0YXRlLnBlcmZvcm1hbmNlLCBzaGFsbG93TG9vc2UpKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLnBlcmZvcm1hbmNlID0geyAuLi5zdGF0ZS5wZXJmb3JtYW5jZSwgLi4ucGVyZm9ybWFuY2UgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KHN0YXRlVG9VcGRhdGUpO1xuXG4gICAgICAgIC8vIENoZWNrIHBpeGVscmF0aW9cbiAgICAgICAgaWYgKGRwciAmJiBzdGF0ZS52aWV3cG9ydC5kcHIgIT09IG1ha2VEcHIoZHByKSkgc3RhdGUuc2V0RHByKGRwcik7XG4gICAgICAgIC8vIENoZWNrIHNpemUsIGFsbG93IGl0IHRvIHRha2Ugb24gY29udGFpbmVyIGJvdW5kcyBpbml0aWFsbHlcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGNvbXB1dGVJbml0aWFsU2l6ZShjYW52YXNFbGVtZW50LCBzaXplT3B0aW9ucyk7XG4gICAgICAgIGlmICghaXMuZXF1KHNpemUsIHN0YXRlLnNpemUsIHNoYWxsb3dMb29zZSkpIHN0YXRlLnNldFNpemUoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUudG9wLCBzaXplLmxlZnQpO1xuXG4gICAgICAgIC8vIENoZWNrIGZyYW1lbG9vcFxuICAgICAgICBpZiAoc3RhdGUuZnJhbWVsb29wICE9PSBmcmFtZWxvb3ApIHN0YXRlLnNldEZyYW1lbG9vcChmcmFtZWxvb3ApO1xuXG4gICAgICAgIGlmICghdGhpcy5nZXQoJ3JlYWR5JykpIHRoaXMuc2V0KHsgcmVhZHk6IHRydWUgfSk7XG5cbiAgICAgICAgdGhpcy5pbnZhbGlkYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNpemUoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXQoKTtcbiAgICAgICAgbGV0IG9sZFNpemUgPSBzdGF0ZS5zaXplO1xuICAgICAgICBsZXQgb2xkRHByID0gc3RhdGUudmlld3BvcnQuZHByO1xuICAgICAgICBsZXQgb2xkQ2FtZXJhID0gc3RhdGUuY2FtZXJhO1xuXG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLnNlbGVjdChzZWxlY3RTbGljZShbJ2NhbWVyYScsICdzaXplJywgJ3ZpZXdwb3J0JywgJ2dsJ10pKSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBjYW1lcmEsIHNpemUsIHZpZXdwb3J0LCBnbCwgc2V0IH0gPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgLy8gcmVzaXplIGNhbWVyYSBhbmQgcmVuZGVyZXIgb24gY2hhbmdlcyB0byBzaXplIGFuZCBkcHJcbiAgICAgICAgICAgIGlmIChzaXplICE9PSBvbGRTaXplIHx8IHZpZXdwb3J0LmRwciAhPT0gb2xkRHByKSB7XG4gICAgICAgICAgICAgICAgb2xkU2l6ZSA9IHNpemU7XG4gICAgICAgICAgICAgICAgb2xkRHByID0gdmlld3BvcnQuZHByO1xuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjYW1lcmFcbiAgICAgICAgICAgICAgICB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcbiAgICAgICAgICAgICAgICBnbC5zZXRQaXhlbFJhdGlvKHZpZXdwb3J0LmRwcik7XG4gICAgICAgICAgICAgICAgZ2wuc2V0U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSB2aWV3cG9ydCB3aGVuIGNhbWVyYSBjaGFuZ2VzXG4gICAgICAgICAgICBpZiAoY2FtZXJhICE9PSBvbGRDYW1lcmEpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcbiAgICAgICAgICAgICAgICBvbGRDYW1lcmEgPSBjYW1lcmE7XG4gICAgICAgICAgICAgICAgc2V0KChzdGF0ZSkgPT4gKHsgdmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIC4uLnN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEpIH0gfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGludmFsaWRhdGUoKSB7XG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLnNlbGVjdCgpLCAoKSA9PiBpbnZhbGlkYXRlKHRoaXMpKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVJbml0aWFsU2l6ZShjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgVEhSRUUuT2Zmc2NyZWVuQ2FudmFzLCBkZWZhdWx0U2l6ZT86IE5ndFNpemUpOiBOZ3RTaXplIHtcbiAgICBpZiAoZGVmYXVsdFNpemUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplO1xuICAgIH1cblxuICAgIGlmIChjYW52YXMgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCAmJiBjYW52YXMucGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9ID0gY2FudmFzLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAsIHRvcDogMCwgbGVmdDogMCB9O1xufVxuIl19
|
|
@@ -41,9 +41,8 @@ export function applyProps(instance, props) {
|
|
|
41
41
|
value.constructor &&
|
|
42
42
|
targetProp.constructor.name === value.constructor.name) {
|
|
43
43
|
targetProp['copy'](value);
|
|
44
|
-
if (!THREE.ColorManagement && !rootState.linear && isColor)
|
|
44
|
+
if (!THREE.ColorManagement && !rootState.linear && isColor)
|
|
45
45
|
targetProp['convertSRGBToLinear']();
|
|
46
|
-
}
|
|
47
46
|
}
|
|
48
47
|
// if nothing else fits, just set the single value, ignore undefined
|
|
49
48
|
else if (value !== undefined) {
|
|
@@ -52,17 +51,14 @@ export function applyProps(instance, props) {
|
|
|
52
51
|
if (!isColor && targetProp['setScalar'])
|
|
53
52
|
targetProp['setScalar'](value);
|
|
54
53
|
// layers have no copy function, copy the mask
|
|
55
|
-
else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers)
|
|
54
|
+
else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers)
|
|
56
55
|
targetProp.mask = value.mask;
|
|
57
|
-
}
|
|
58
56
|
// otherwise just set ...
|
|
59
|
-
else
|
|
57
|
+
else
|
|
60
58
|
targetProp['set'](value);
|
|
61
|
-
}
|
|
62
59
|
// auto-convert srgb
|
|
63
|
-
if (!THREE.ColorManagement && !rootState?.linear && isColor)
|
|
60
|
+
if (!THREE.ColorManagement && !rootState?.linear && isColor)
|
|
64
61
|
targetProp.convertSRGBToLinear();
|
|
65
|
-
}
|
|
66
62
|
}
|
|
67
63
|
}
|
|
68
64
|
// else just overwrite the value
|
|
@@ -89,4 +85,4 @@ export function applyProps(instance, props) {
|
|
|
89
85
|
}
|
|
90
86
|
return instance;
|
|
91
87
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9hcHBseS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxTQUFTLFNBQVMsQ0FBQyxRQUFzQixFQUFFLEtBQW1CO0lBQzFELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsTUFBTSxPQUFPLEdBQW9DLEVBQUUsQ0FBQztJQUVwRCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksWUFBWSxFQUFFO1FBQzdDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDdEM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxRQUF5QixFQUFFLEtBQW1CO0lBQ3JFLG9CQUFvQjtJQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFFaEQsNkNBQTZDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENB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LFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2hDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBRS9DLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxnQkFBZ0IsS0FBSyxVQUFVLENBQUMsVUFBVSxFQUFFO1FBQzlHLG9EQUFvRDtRQUNwRCxTQUFTLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUMsd0VBQXdFO1FBQ3hFLElBQUksVUFBVSxDQUFDLFVBQVU7WUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2pFO0lBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxXQUFXLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6QztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW52YWxpZGF0ZUluc3RhbmNlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xuaW1wb3J0IHsgY2hlY2tVcGRhdGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhpbnN0YW5jZTogTmd0QW55UmVjb3JkLCBwcm9wczogTmd0QW55UmVjb3JkKSB7XG4gICAgY29uc3QgcHJvcHNFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvcHMpO1xuICAgIGNvbnN0IGNoYW5nZXM6IFtrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd25dW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW3Byb3BLZXksIHByb3BWYWx1ZV0gb2YgcHJvcHNFbnRyaWVzKSB7XG4gICAgICAgIGlmIChpcy5lcXUocHJvcFZhbHVlLCBpbnN0YW5jZVtwcm9wS2V5XSkpIGNvbnRpbnVlO1xuICAgICAgICBjaGFuZ2VzLnB1c2goW3Byb3BLZXksIHByb3BWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFuZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQcm9wcyhpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCBwcm9wczogTmd0QW55UmVjb3JkKTogTmd0SW5zdGFuY2VOb2RlIHtcbiAgICAvLyBpZiBwcm9wcyBpcyBlbXB0eVxuICAgIGlmICghT2JqZWN0LmtleXMocHJvcHMpLmxlbmd0aCkgcmV0dXJuIGluc3RhbmNlO1xuXG4gICAgLy8gZmlsdGVyIGVxdWFscywgZXZlbnRzICwgYW5kIHJlc2VydmVkIHByb3BzXG4gICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuICAgIGNvbnN0IHJvb3RTdGF0ZSA9IGxvY2FsU3RhdGUuc3RvcmU/LmdldCgpO1xuICAgIGNvbnN0IGNoYW5nZXMgPSBkaWZmUHJvcHMoaW5zdGFuY2UsIHByb3BzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBjaGFuZ2VzW2ldWzBdO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UHJvcCA9IGN1cnJlbnRJbnN0YW5jZVtrZXldIGFzIE5ndEFueVJlY29yZDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjaGFuZ2VzW2ldWzFdO1xuXG4gICAgICAgIC8vIHNwZWNpYWwgdHJlYXRtZW4gZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvciBzZXQvY29weSwgYW5kIGxheWVyc1xuICAgICAgICBpZiAodGFyZ2V0UHJvcCAmJiB0YXJnZXRQcm9wWydzZXQnXSAmJiAodGFyZ2V0UHJvcFsnY29weSddIHx8IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBpc0NvbG9yID0gdGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkNvbG9yO1xuICAgICAgICAgICAgLy8gaWYgdmFsdWUgaXMgYW4gYXJyYXlcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRQcm9wWydmcm9tQXJyYXknXSkgdGFyZ2V0UHJvcFsnZnJvbUFycmF5J10odmFsdWUpO1xuICAgICAgICAgICAgICAgIGVsc2UgdGFyZ2V0UHJvcFsnc2V0J10oLi4udmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCBhZ2FpbiB0YXJnZXQuY29weVxuICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGFyZ2V0UHJvcFsnY29weSddICYmXG4gICAgICAgICAgICAgICAgdmFsdWUgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZS5jb25zdHJ1Y3RvciAmJlxuICAgICAgICAgICAgICAgIHRhcmdldFByb3AuY29uc3RydWN0b3IubmFtZSA9PT0gdmFsdWUuY29uc3RydWN0b3IubmFtZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UHJvcFsnY29weSddKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoIVRIUkVFLkNvbG9yTWFuYWdlbWVudCAmJiAhcm9vdFN0YXRlLmxpbmVhciAmJiBpc0NvbG9yKSB0YXJnZXRQcm9wWydjb252ZXJ0U1JHQlRvTGluZWFyJ10oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIG5vdGhpbmcgZWxzZSBmaXRzLCBqdXN0IHNldCB0aGUgc2luZ2xlIHZhbHVlLCBpZ25vcmUgdW5kZWZpbmVkXG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDb2xvciA9IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5Db2xvcjtcbiAgICAgICAgICAgICAgICAvLyBhbGxvdyBzZXR0aW5nIGFycmF5IHNjYWxhcnNcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ29sb3IgJiYgdGFyZ2V0UHJvcFsnc2V0U2NhbGFyJ10pIHRhcmdldFByb3BbJ3NldFNjYWxhciddKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBsYXllcnMgaGF2ZSBubyBjb3B5IGZ1bmN0aW9uLCBjb3B5IHRoZSBtYXNrXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkxheWVycyAmJiB2YWx1ZSBpbnN0YW5jZW9mIFRIUkVFLkxheWVycylcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvcC5tYXNrID0gdmFsdWUubWFzaztcbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UganVzdCBzZXQgLi4uXG4gICAgICAgICAgICAgICAgZWxzZSB0YXJnZXRQcm9wWydzZXQnXSh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBhdXRvLWNvbnZlcnQgc3JnYlxuICAgICAgICAgICAgICAgIGlmICghVEhSRUUuQ29sb3JNYW5hZ2VtZW50ICYmICFyb290U3RhdGU/LmxpbmVhciAmJiBpc0NvbG9yKSB0YXJnZXRQcm9wLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBlbHNlIGp1c3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRJbnN0YW5jZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAvLyBhdXRvLWNvbnZlcnQgc3JnYiB0ZXh0dXJlc1xuICAgICAgICAgICAgaWYgKCFyb290U3RhdGU/LmxpbmVhciAmJiBjdXJyZW50SW5zdGFuY2Vba2V5XSBpbnN0YW5jZW9mIFRIUkVFLlRleHR1cmUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SW5zdGFuY2Vba2V5XVsnZW5jb2RpbmcnXSA9IFRIUkVFLnNSR0JFbmNvZGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNoZWNrVXBkYXRlKHRhcmdldFByb3ApO1xuICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2UoaW5zdGFuY2UpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlSGFuZGxlcnMgPSBsb2NhbFN0YXRlLmV2ZW50Q291bnQ7XG5cbiAgICBpZiAobG9jYWxTdGF0ZS5wYXJlbnQgJiYgcm9vdFN0YXRlLmludGVybmFsICYmIGluc3RhbmNlWydyYXljYXN0J10gJiYgaW5zdGFuY2VIYW5kbGVycyAhPT0gbG9jYWxTdGF0ZS5ldmVudENvdW50KSB7XG4gICAgICAgIC8vIHByZS1lbXB0aXZlbHkgcmVtb3ZlIHRoZSBpbnRlcmFjdGlvbiBmcm9tIG1hbmFnZXJcbiAgICAgICAgcm9vdFN0YXRlLnJlbW92ZUludGVyYWN0aW9uKGluc3RhbmNlWyd1dWlkJ10pO1xuICAgICAgICAvLyBhZGQgdGhlIGluc3RhbmNlIHRvIHRoZSBpbnRlcmFjdGlvbiBtYW5hZ2VyIG9ubHkgd2hlbiBpdCBoYXMgaGFuZGxlcnNcbiAgICAgICAgaWYgKGxvY2FsU3RhdGUuZXZlbnRDb3VudCkgcm9vdFN0YXRlLmFkZEludGVyYWN0aW9uKGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBpZiAobG9jYWxTdGF0ZS5wYXJlbnQgJiYgbG9jYWxTdGF0ZS5hZnRlclVwZGF0ZSAmJiBsb2NhbFN0YXRlLmFmdGVyVXBkYXRlLm9ic2VydmVkICYmIGNoYW5nZXMubGVuZ3RoKSB7XG4gICAgICAgIGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUuZW1pdChpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xufVxuIl19
|
|
@@ -2,19 +2,16 @@ import { is } from './is';
|
|
|
2
2
|
export function checkNeedsUpdate(value) {
|
|
3
3
|
if (value !== null && is.obj(value) && 'needsUpdate' in value) {
|
|
4
4
|
value['needsUpdate'] = true;
|
|
5
|
-
if ('uniformsNeedUpdate' in value)
|
|
5
|
+
if ('uniformsNeedUpdate' in value)
|
|
6
6
|
value['uniformsNeedUpdate'] = true;
|
|
7
|
-
}
|
|
8
7
|
}
|
|
9
8
|
}
|
|
10
9
|
export function checkUpdate(value) {
|
|
11
|
-
if (is.object3D(value))
|
|
10
|
+
if (is.object3D(value))
|
|
12
11
|
value.updateMatrix();
|
|
13
|
-
}
|
|
14
12
|
if (is.camera(value)) {
|
|
15
|
-
if (is.perspectiveCamera(value) || is.orthographicCamera(value))
|
|
13
|
+
if (is.perspectiveCamera(value) || is.orthographicCamera(value))
|
|
16
14
|
value.updateProjectionMatrix();
|
|
17
|
-
}
|
|
18
15
|
value.updateMatrixWorld();
|
|
19
16
|
}
|
|
20
17
|
checkNeedsUpdate(value);
|
|
@@ -27,11 +24,10 @@ export function updateCamera(camera, size) {
|
|
|
27
24
|
camera.top = size.height / 2;
|
|
28
25
|
camera.bottom = size.height / -2;
|
|
29
26
|
}
|
|
30
|
-
else
|
|
27
|
+
else
|
|
31
28
|
camera.aspect = size.width / size.height;
|
|
32
|
-
}
|
|
33
29
|
camera.updateProjectionMatrix();
|
|
34
30
|
camera.updateMatrixWorld();
|
|
35
31
|
}
|
|
36
32
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvdXRpbHMvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDM0MsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxJQUFLLEtBQXNCLEVBQUU7UUFDNUUsS0FBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUMsSUFBSSxvQkFBb0IsSUFBSyxLQUFzQjtZQUFHLEtBQXNCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDN0c7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFjO0lBQ3RDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFN0MsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2xCLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFBRSxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUM3QjtJQUVELGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQXVCLEVBQUUsSUFBYTtJQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNoQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwQzs7WUFBTSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUVoRCxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUM5QjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0Q2FtZXJhTWFudWFsLCBOZ3RTaXplIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL2lzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTmVlZHNVcGRhdGUodmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgaXMub2JqKHZhbHVlKSAmJiAnbmVlZHNVcGRhdGUnIGluICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpKSB7XG4gICAgICAgICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpWyduZWVkc1VwZGF0ZSddID0gdHJ1ZTtcbiAgICAgICAgaWYgKCd1bmlmb3Jtc05lZWRVcGRhdGUnIGluICh2YWx1ZSBhcyBOZ3RBbnlSZWNvcmQpKSAodmFsdWUgYXMgTmd0QW55UmVjb3JkKVsndW5pZm9ybXNOZWVkVXBkYXRlJ10gPSB0cnVlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVXBkYXRlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgaWYgKGlzLm9iamVjdDNEKHZhbHVlKSkgdmFsdWUudXBkYXRlTWF0cml4KCk7XG5cbiAgICBpZiAoaXMuY2FtZXJhKHZhbHVlKSkge1xuICAgICAgICBpZiAoaXMucGVyc3BlY3RpdmVDYW1lcmEodmFsdWUpIHx8IGlzLm9ydGhvZ3JhcGhpY0NhbWVyYSh2YWx1ZSkpIHZhbHVlLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICAgICAgdmFsdWUudXBkYXRlTWF0cml4V29ybGQoKTtcbiAgICB9XG5cbiAgICBjaGVja05lZWRzVXBkYXRlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUNhbWVyYShjYW1lcmE6IE5ndENhbWVyYU1hbnVhbCwgc2l6ZTogTmd0U2l6ZSkge1xuICAgIGlmICghY2FtZXJhLm1hbnVhbCkge1xuICAgICAgICBpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkpIHtcbiAgICAgICAgICAgIGNhbWVyYS5sZWZ0ID0gc2l6ZS53aWR0aCAvIC0yO1xuICAgICAgICAgICAgY2FtZXJhLnJpZ2h0ID0gc2l6ZS53aWR0aCAvIDI7XG4gICAgICAgICAgICBjYW1lcmEudG9wID0gc2l6ZS5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgY2FtZXJhLmJvdHRvbSA9IHNpemUuaGVpZ2h0IC8gLTI7XG4gICAgICAgIH0gZWxzZSBjYW1lcmEuYXNwZWN0ID0gc2l6ZS53aWR0aCAvIHNpemUuaGVpZ2h0O1xuXG4gICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgIGNhbWVyYS51cGRhdGVNYXRyaXhXb3JsZCgpO1xuICAgIH1cbn1cbiJdfQ==
|