@smarterplan/ngx-smarterplan-core 1.2.1 → 1.2.2
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/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +68 -0
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +36 -4
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -0
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -0
- package/esm2020/lib/services/matterport.service.mjs +30 -3
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +164 -10
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +164 -10
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -0
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts.map +1 -0
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts.map +1 -1
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -0
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts.map +1 -0
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -0
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts.map +1 -0
- package/lib/services/matterport.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { SceneComponent } from './../scene-component/SceneComponent';
|
|
2
|
+
// @ts-ignore
|
|
3
|
+
import Hls from 'hls.js';
|
|
4
|
+
export class HlsLoader extends SceneComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.video = null;
|
|
8
|
+
this.texture = null;
|
|
9
|
+
this.hls = null;
|
|
10
|
+
this.inputs = {
|
|
11
|
+
src: './../assets/video/121222-04.mp4',
|
|
12
|
+
enabled: true,
|
|
13
|
+
};
|
|
14
|
+
this.outputs = {
|
|
15
|
+
video: null,
|
|
16
|
+
aspect: 1,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
onInit(videoTexture) {
|
|
20
|
+
this.outputs.video = videoTexture;
|
|
21
|
+
this.outputs.aspect = 720 / 480;
|
|
22
|
+
if (this.inputs.enabled) {
|
|
23
|
+
this.setupStream();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
onInputsUpdated() {
|
|
27
|
+
this.setupStream();
|
|
28
|
+
}
|
|
29
|
+
onDestroy() {
|
|
30
|
+
this.releaseResources();
|
|
31
|
+
}
|
|
32
|
+
createVideoElement() {
|
|
33
|
+
const video = document.createElement('video');
|
|
34
|
+
video.crossOrigin = 'anonymous';
|
|
35
|
+
video.setAttribute('height', '480');
|
|
36
|
+
video.setAttribute('width', '720');
|
|
37
|
+
video.volume = 0.1;
|
|
38
|
+
return video;
|
|
39
|
+
}
|
|
40
|
+
setupStream() {
|
|
41
|
+
this.releaseResources();
|
|
42
|
+
if (this.inputs.enabled) {
|
|
43
|
+
this.video = this.createVideoElement();
|
|
44
|
+
this.hls = new Hls();
|
|
45
|
+
this.hls.loadSource(this.inputs.src);
|
|
46
|
+
this.hls.attachMedia(this.video);
|
|
47
|
+
this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
|
|
48
|
+
this.outputs.video = this.video;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
releaseResources() {
|
|
53
|
+
if (this.hls) {
|
|
54
|
+
this.hls.destroy();
|
|
55
|
+
this.hls = null;
|
|
56
|
+
}
|
|
57
|
+
if (this.texture) {
|
|
58
|
+
this.texture.dispose();
|
|
59
|
+
this.texture = null;
|
|
60
|
+
this.outputs.video = null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export const hlsLoaderType = 'mp.hlsLoader';
|
|
65
|
+
export function makeHlsLoader() {
|
|
66
|
+
return new HlsLoader();
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGxzTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvaHNsLWxvYWRlci9IbHNMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RixhQUFhO0FBQ2IsT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDO0FBWXpCLE1BQU0sT0FBTyxTQUFVLFNBQVEsY0FBYztJQUE3Qzs7UUFDVSxVQUFLLEdBQTRCLElBQUksQ0FBQztRQUN0QyxZQUFPLEdBQXdCLElBQUksQ0FBQztRQUNwQyxRQUFHLEdBQWUsSUFBSSxDQUFDO1FBRXRCLFdBQU0sR0FBVztZQUN4QixHQUFHLEVBQUUsaUNBQWlDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQTtRQUVRLFlBQU8sR0FBRztZQUNqQixLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxDQUFDO1NBQ0MsQ0FBQztJQXNEZixDQUFDO0lBcERVLE1BQU0sQ0FBQyxZQUEyQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFDLEdBQUcsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFUSxlQUFlO1FBRXRCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDaEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUM1QyxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZGVvVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgSGxzIGZyb20gJ2hscy5qcyc7XHJcblxyXG50eXBlIElucHV0cyA9IHtcclxuICBzcmM6IHN0cmluZztcclxuICBlbmFibGVkOiBib29sZWFuO1xyXG59O1xyXG5cclxudHlwZSBPdXRwdXRzID0ge1xyXG4gIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50IHwgbnVsbDtcclxuICBhc3BlY3Q6IG51bWJlcjtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbmV4cG9ydCBjbGFzcyBIbHNMb2FkZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgdGV4dHVyZTogVmlkZW9UZXh0dXJlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBobHM6IEhscyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIHNyYzogJy4vLi4vYXNzZXRzL3ZpZGVvLzEyMTIyMi0wNC5tcDQnLFxyXG4gICAgZW5hYmxlZDogdHJ1ZSxcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XHJcbiAgICB2aWRlbzogbnVsbCxcclxuICAgIGFzcGVjdDogMSxcclxuICB9IGFzIE91dHB1dHM7XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5pdCh2aWRlb1RleHR1cmU/OiBWaWRlb1RleHR1cmUpIHtcclxuICAgIHRoaXMub3V0cHV0cy52aWRlbyA9IHZpZGVvVGV4dHVyZTtcclxuICAgIHRoaXMub3V0cHV0cy5hc3BlY3QgPSA3MjAvNDgwO1xyXG4gICAgaWYgKHRoaXMuaW5wdXRzLmVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5zZXR1cFN0cmVhbSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xyXG5cclxuICAgIHRoaXMuc2V0dXBTdHJlYW0oKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucmVsZWFzZVJlc291cmNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVWaWRlb0VsZW1lbnQoKSB7XHJcbiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XHJcbiAgICB2aWRlby5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAnNDgwJyk7XHJcbiAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzcyMCcpO1xyXG4gICAgdmlkZW8udm9sdW1lID0gMC4xO1xyXG4gICAgcmV0dXJuIHZpZGVvO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFN0cmVhbSgpIHtcclxuICAgIHRoaXMucmVsZWFzZVJlc291cmNlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0cy5lbmFibGVkKSB7XHJcbiAgICAgIHRoaXMudmlkZW8gPSB0aGlzLmNyZWF0ZVZpZGVvRWxlbWVudCgpO1xyXG4gICAgICB0aGlzLmhscyA9IG5ldyBIbHMoKTtcclxuICAgICAgdGhpcy5obHMubG9hZFNvdXJjZSh0aGlzLmlucHV0cy5zcmMpO1xyXG4gICAgICB0aGlzLmhscy5hdHRhY2hNZWRpYSh0aGlzLnZpZGVvKTtcclxuICAgICAgdGhpcy5obHMub24oSGxzLkV2ZW50cy5NQU5JRkVTVF9QQVJTRUQsICgpID0+IHtcclxuICAgICAgICB0aGlzLm91dHB1dHMudmlkZW8gPSB0aGlzLnZpZGVvO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVsZWFzZVJlc291cmNlcygpIHtcclxuICAgIGlmICh0aGlzLmhscykge1xyXG4gICAgICB0aGlzLmhscy5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuaGxzID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50ZXh0dXJlKSB7XHJcbiAgICAgIHRoaXMudGV4dHVyZS5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMudGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMub3V0cHV0cy52aWRlbyA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaGxzTG9hZGVyVHlwZSA9ICdtcC5obHNMb2FkZXInO1xyXG5leHBvcnQgZnVuY3Rpb24gbWFrZUhsc0xvYWRlcigpIHtcclxuICByZXR1cm4gbmV3IEhsc0xvYWRlcigpO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SceneComponent } from '../scene-component/SceneComponent';
|
|
2
|
-
import { AnimationMixer, LoopOnce, AnimationClip, VectorKeyframeTrack, InterpolateSmooth, MeshBasicMaterial } from 'three';
|
|
2
|
+
import { AnimationMixer, LoopOnce, AnimationClip, Texture, VectorKeyframeTrack, InterpolateSmooth, MeshBasicMaterial, LinearFilter } from 'three';
|
|
3
3
|
const HoverEvent = 'hover';
|
|
4
4
|
const UnhoverEvent = 'unhover';
|
|
5
5
|
const RepaintEvent = 'repaint';
|
|
@@ -69,8 +69,40 @@ export class NestThermostat extends SceneComponent {
|
|
|
69
69
|
const materials = this.mesh.material;
|
|
70
70
|
materials.forEach((m, idx) => {
|
|
71
71
|
if (m && m.map.source.data.outerHTML.indexOf('_5b76dbe388862300126c1e14') !== -1) {
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
let video, videoImage, videoImageContext, videoTexture;
|
|
73
|
+
// create the video element
|
|
74
|
+
video = document.createElement('video');
|
|
75
|
+
video.src = "./../assets/video/121222-04.mp4";
|
|
76
|
+
video.load(); // must call after setting/changing source
|
|
77
|
+
video.loop = true;
|
|
78
|
+
video.play();
|
|
79
|
+
videoImage = document.createElement('canvas');
|
|
80
|
+
videoImage.width = 480;
|
|
81
|
+
videoImage.height = 204;
|
|
82
|
+
videoImageContext = videoImage.getContext('2d');
|
|
83
|
+
// background color if no video present
|
|
84
|
+
videoImageContext.fillStyle = '#000000';
|
|
85
|
+
videoImageContext.fillRect(0, 0, videoImage.width, videoImage.height);
|
|
86
|
+
videoTexture = new Texture(videoImage);
|
|
87
|
+
videoTexture.minFilter = LinearFilter;
|
|
88
|
+
videoTexture.magFilter = LinearFilter;
|
|
89
|
+
const movieMaterial = new MeshBasicMaterial({ map: videoTexture });
|
|
90
|
+
// const newMaterial = new MeshBasicMaterial({map: this.inputs.texture});
|
|
91
|
+
// const newMaterial = new MeshBasicMaterial({map: this.inputs.texture});
|
|
92
|
+
// this.mesh.material[idx] = newMaterial;
|
|
93
|
+
this.mesh.material[idx] = movieMaterial;
|
|
94
|
+
const render = () => {
|
|
95
|
+
if (video.readyState === video.HAVE_ENOUGH_DATA) {
|
|
96
|
+
videoImageContext.drawImage(video, 0, 0);
|
|
97
|
+
if (videoTexture)
|
|
98
|
+
videoTexture.needsUpdate = true;
|
|
99
|
+
}
|
|
100
|
+
const camera = this.rootScene.children.find(u => u.constructor.name === 'CameraRig');
|
|
101
|
+
this.context.renderer.render(this.context.scene, camera);
|
|
102
|
+
};
|
|
103
|
+
setInterval(() => {
|
|
104
|
+
render();
|
|
105
|
+
}, 200);
|
|
74
106
|
}
|
|
75
107
|
});
|
|
76
108
|
}
|
|
@@ -155,4 +187,4 @@ export const nestThermostatType = 'mp.nestThermostat';
|
|
|
155
187
|
export const makeNestThermostat = function () {
|
|
156
188
|
return new NestThermostat();
|
|
157
189
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdFRoZXJtb3N0YXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvTmVzdFRoZXJtb3N0YXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBb0MsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRyxPQUFPLEVBRUwsY0FBYyxFQUVkLFFBQVEsRUFDUixhQUFhLEVBSWIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixpQkFBaUIsRUFFbEIsTUFBTSxPQUFPLENBQUM7QUFJZixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBQy9CLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQztBQWMvQixNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBQ1UsT0FBRSxHQUEwQixJQUFJLENBQUM7UUFDakMsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGNBQVMsR0FBb0IsSUFBSSxDQUFDO1FBQ2xDLFVBQUssR0FBMEIsSUFBSSxDQUFDO1FBQ3BDLGdCQUFXLEdBQXlCLElBQUksQ0FBQztRQUN6QyxTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBSTNCLFdBQU0sR0FBVztZQUN4QixZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsSUFBSTtZQUNiLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNKLENB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QUUsQ0FBQztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLE9BQU8sSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUM5QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQsIENvbXBvbmVudENvbnRleHR9IGZyb20gJy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBPYmplY3QzRCxcbiAgQW5pbWF0aW9uTWl4ZXIsXG4gIEFuaW1hdGlvbkFjdGlvbixcbiAgTG9vcE9uY2UsXG4gIEFuaW1hdGlvbkNsaXAsXG4gIE1lc2gsXG4gIFRleHR1cmUsXG4gIE1lc2hMYW1iZXJ0TWF0ZXJpYWwsXG4gIFZlY3RvcktleWZyYW1lVHJhY2ssXG4gIEludGVycG9sYXRlU21vb3RoLFxuICBNZXNoQmFzaWNNYXRlcmlhbCxcbiAgTGluZVNlZ21lbnRzXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7Q2FudmFzUmVuZGVyZXIsIElQYWludGVyMmR9IGZyb20gJy4vQ2FudmFzUmVuZGVyZXInO1xuaW1wb3J0IHtQbGFuZVJlbmRlcmVyLCBTaXplfSBmcm9tICcuL1BsYW5lUmVuZGVyZXInO1xuXG5jb25zdCBIb3ZlckV2ZW50ID0gJ2hvdmVyJztcbmNvbnN0IFVuaG92ZXJFdmVudCA9ICd1bmhvdmVyJztcbmNvbnN0IFJlcGFpbnRFdmVudCA9ICdyZXBhaW50JztcblxudHlwZSBJbnB1dHMgPSB7XG4gIGxvYWRpbmdTdGF0ZTogc3RyaW5nO1xuICB0ZXh0dXJlOiBUZXh0dXJlIHwgbnVsbDtcbiAgdXBkYXRlSW50ZXJ2YWw6IG51bWJlcjtcbn1cblxudHlwZSBPdXRwdXRzID0ge1xuICBwYWludGVyOiBJUGFpbnRlcjJkIHwgbnVsbDtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbn0gJiBDb21wb25lbnRPdXRwdXQ7XG5cblxuZXhwb3J0IGNsYXNzIE5lc3RUaGVybW9zdGF0IGV4dGVuZHMgU2NlbmVDb21wb25lbnQgaW1wbGVtZW50cyBJUGFpbnRlcjJkIHtcbiAgcHJpdmF0ZSBjdjogQ2FudmFzUmVuZGVyZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwbGFuZVJlbmRlcmVyOiBQbGFuZVJlbmRlcmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcm9vdFNjZW5lOiBPYmplY3QzRCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1peGVyOiBBbmltYXRpb25NaXhlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG9uRW50ZXJDbGlwOiBBbmltYXRpb25DbGlwIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWVzaDogTWVzaCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIG5leHRVcGRhdGU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgdGVtcGVyYXR1cmU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgdGVtcENoYW5nZVJhbmdlOiBudW1iZXIgPSA1O1xuICBwcml2YXRlIGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQ7XG5cblxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBsb2FkaW5nU3RhdGU6ICdJZGxlJyxcbiAgICB0ZXh0dXJlOiBudWxsLFxuICAgIHVwZGF0ZUludGVydmFsOiAxMDAwLFxuICB9XG5cbiAgb3ZlcnJpZGUgb3V0cHV0cyA9IHtcbiAgICBwYWludGVyOiBudWxsLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICB9IGFzIE91dHB1dHM7XG5cbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xuICAgIFtIb3ZlckV2ZW50XTogdHJ1ZSxcbiAgICBbVW5ob3ZlckV2ZW50XTogdHJ1ZSxcbiAgfTtcblxuICBvdmVycmlkZSBvbkluaXQobW9kZWxOb2RlPzogYW55LCBwbGFuZT86IFBsYW5lUmVuZGVyZXIsIGlucHV0VGV4dHVyZT86IGFueSkge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICAgIHJvb3Q6IG1vZGVsTm9kZVxuICAgICAgfSBhcyBDb21wb25lbnRDb250ZXh0O1xuICAgIH1cbiAgICB0aGlzLmlucHV0cy50ZXh0dXJlID0gaW5wdXRUZXh0dXJlO1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmNvbnRleHQucm9vdDtcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcblxuICAgIHRoaXMucGxhbmVSZW5kZXJlciA9IHBsYW5lO1xuICAgIHRoaXMucGxhbmVSZW5kZXJlci5vdXRwdXRzLm9iamVjdFJvb3QudHJhbnNsYXRlWigwLjA1KTtcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290LnRyYW5zbGF0ZVkoMC40KTtcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290LnNjYWxlLnNldCgwLjUsIDAuNSwgMC41KTtcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFBvc2l0aW9uLnogPSAwLjA1O1xuICAgIC8vIHBsYW5lUmVuZGVyZXIuaW5wdXRzLmxvY2FsUG9zaXRpb24ueSA9IDAuNDtcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFNjYWxlID0ge3g6IDAuNSwgeTogMC41LCB6OiAwLjV9O1xuXG4gICAgdGhpcy5vdXRwdXRzLnBhaW50ZXIgPSB0aGlzO1xuXG4gICAgdGhpcy5taXhlciA9IG5ldyBBbmltYXRpb25NaXhlcih0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290KTtcblxuICAgIGNvbnN0IHRtID0gMC4yO1xuICAgIGNvbnN0IHBvc2l0aW9uVHJhY2sgPSBuZXcgVmVjdG9yS2V5ZnJhbWVUcmFjaygnLnNjYWxlJywgWzAsIHRtXSwgW1xuICAgICAgMCwgMCwgMCxcbiAgICAgIDAuNSwgMC41LCAwLjVcbiAgICBdLCBJbnRlcnBvbGF0ZVNtb290aCk7XG4gICAgdGhpcy5vbkVudGVyQ2xpcCA9IG5ldyBBbmltYXRpb25DbGlwKG51bGwsIHRtLCBbcG9zaXRpb25UcmFja10pO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xuICAgIGlmICh0aGlzLmlucHV0cy5sb2FkaW5nU3RhdGUgPT09ICdMb2FkZWQnKSB7XG4gICAgICBjb25zdCBsaW5lczogTGluZVNlZ21lbnRzW10gPSBbXTtcblxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aGlzLmNvbnRleHQucm9vdC5vYmozRC50cmF2ZXJzZSgob2JqOiBPYmplY3QzRCkgPT4ge1xuICAgICAgICAvLyB3ZSBkb250IHdhbnQgbGluZSBzZWdtZW50cywgdHJhY2sgdGhlbSBhbmQgcmVtb3ZlIHRoZW0uXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ0xpbmVTZWdtZW50cycpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKG9iaiBhcyBMaW5lU2VnbWVudHMpO1xuICAgICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnTWVzaCcpIHtcbiAgICAgICAgICB0aGlzLm1lc2ggPSBvYmogYXMgTWVzaDtcblxuICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IHRoaXMubWVzaC5tYXRlcmlhbCBhcyBNZXNoTGFtYmVydE1hdGVyaWFsO1xuICAgICAgICAgIG1hdGVyaWFscy5mb3JFYWNoKChtLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChtICYmIG0ubWFwLnNvdXJjZS5kYXRhLm91dGVySFRNTC5pbmRleE9mKCdfNWI3NmRiZTM4ODg2MjMwMDEyNmMxZTE0JykgIT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld01hdGVyaWFsID0gbmV3IE1lc2hCYXNpY01hdGVyaWFsKHttYXA6IHRoaXMuaW5wdXRzLnRleHR1cmV9KTtcbiAgICAgICAgICAgICAgdGhpcy5tZXNoLm1hdGVyaWFsW2lkeF0gPSBuZXdNYXRlcmlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyByZW1vdmUgdGhlIGxpbmUgc2VnbWVudHMuXG4gICAgICBsaW5lcy5mb3JFYWNoKChsaW5lOiBMaW5lU2VnbWVudHMpID0+IHtcbiAgICAgICAgbGluZS5wYXJlbnQucmVtb3ZlKGxpbmUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgb25FdmVudChldmVudFR5cGU6IHN0cmluZywgZXZlbnREYXRhOiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gSG92ZXJFdmVudCkge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gZXZlbnREYXRhO1xuICAgICAgaWYgKGRhdGEuaG92ZXIpIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBvbkVudGVyQWN0aW9uOiBBbmltYXRpb25BY3Rpb24gPSB0aGlzLm1peGVyLmNsaXBBY3Rpb24odGhpcy5vbkVudGVyQ2xpcCk7XG4gICAgICAgIG9uRW50ZXJBY3Rpb24uc3RvcCgpO1xuICAgICAgICBvbkVudGVyQWN0aW9uLmxvb3AgPSBMb29wT25jZTtcbiAgICAgICAgb25FbnRlckFjdGlvbi5jbGFtcFdoZW5GaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIG9uRW50ZXJBY3Rpb24ucGxheSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYWludChjb250ZXh0MmQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgc2l6ZTogU2l6ZSk6IHZvaWQge1xuICAgIGNvbnN0IHggPSA0OTA7XG4gICAgY29uc3QgeSA9IDQ5MDtcblxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0MmQuYXJjKHgsIHksIDQwMCwgMCwgTWF0aC5QSSAqIDIpO1xuICAgIGNvbnRleHQyZC5maWxsKCk7XG5cbiAgICBjb250ZXh0MmQuZmlsbFN0eWxlID0gJyNDRjUzMDAnO1xuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0MmQuYXJjKHgsIHksIDMwMCwgMCwgTWF0aC5QSSAqIDIpO1xuICAgIGNvbnRleHQyZC5maWxsKCk7XG5cbiAgICBjb250ZXh0MmQuYmVnaW5QYXRoKCk7XG4gICAgY29udGV4dDJkLnN0cm9rZVN0eWxlID0gJ29yYW5nZSc7XG4gICAgY29udGV4dDJkLmFyYyh4LCB5LCAyNDAsIDAuNzUgKiBNYXRoLlBJLCAwLjI1ICogTWF0aC5QSSk7XG4gICAgY29udGV4dDJkLmxpbmVDYXAgPSAnYnV0dCc7XG4gICAgY29udGV4dDJkLmxpbmVXaWR0aCA9IDgwO1xuICAgIGNvbnRleHQyZC5zdHJva2UoKTtcblxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGNvbnRleHQyZC5mb250ID0gJzIyMHB4IEFyaWFsJztcbiAgICBjb250ZXh0MmQuZmlsbFRleHQoYCR7dGhpcy50ZW1wZXJhdHVyZX1gLCB4IC0gMTE1LCB5ICsgNzUpO1xuICAgIHRoaXMub3V0cHV0cy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uVGljayhkZWx0YTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50VGltZSArPSBkZWx0YTtcblxuICAgIGlmICh0aGlzLm1peGVyKSB7XG4gICAgICB0aGlzLm1peGVyLnVwZGF0ZShkZWx0YSAvIDEwMDApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lID4gdGhpcy5uZXh0VXBkYXRlKSB7XG4gICAgICB0aGlzLm5leHRVcGRhdGUgKz0gdGhpcy5pbnB1dHMudXBkYXRlSW50ZXJ2YWw7XG5cbiAgICAgIHRoaXMudGVtcGVyYXR1cmUgKz0gKE1hdGgucmFuZG9tKCkgKiB0aGlzLnRlbXBDaGFuZ2VSYW5nZSk7XG4gICAgICB0aGlzLnRlbXBlcmF0dXJlID0gTWF0aC50cnVuYyh0aGlzLnRlbXBlcmF0dXJlKTtcblxuICAgICAgaWYgKHRoaXMudGVtcGVyYXR1cmUgPiA5OSkge1xuICAgICAgICB0aGlzLnRlbXBlcmF0dXJlID0gOTk7XG4gICAgICAgIHRoaXMudGVtcENoYW5nZVJhbmdlID0gLXRoaXMudGVtcENoYW5nZVJhbmdlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGVtcGVyYXR1cmUgPCAxMCkge1xuICAgICAgICB0aGlzLnRlbXBlcmF0dXJlID0gMTA7XG4gICAgICAgIHRoaXMudGVtcENoYW5nZVJhbmdlID0gLXRoaXMudGVtcENoYW5nZVJhbmdlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbXBvbmVudC5ub3RpZnkoUmVwYWludEV2ZW50KTtcbiAgICAgIHRoaXMuY3YucmVwYWludCgpXG4gICAgfVxuICB9XG5cbiAgc2V0Q29tcG9uZW50KGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQsIHBsYW5lOiBQbGFuZVJlbmRlcmVyLCBjdjogQ2FudmFzUmVuZGVyZXIpIHtcbiAgICBjb21wb25lbnQub25UaWNrID0gdGhpcy5vblRpY2suYmluZCh0aGlzKTtcbiAgICAvLyBwbGFuZS5vblRpY2sgPSB0aGlzLm9uVGljay5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY3YgPSBjdjtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmNvbnRleHQgPSBjb21wb25lbnQuY29udGV4dDtcbiAgfVxuXG4gIHNldFJvb3RTY2VuZShyb290U2NlbmU6IE9iamVjdDNEKSB7XG4gICAgdGhpcy5yb290U2NlbmUgPSByb290U2NlbmU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5lc3RUaGVybW9zdGF0VHlwZSA9ICdtcC5uZXN0VGhlcm1vc3RhdCc7XG5leHBvcnQgY29uc3QgbWFrZU5lc3RUaGVybW9zdGF0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE5lc3RUaGVybW9zdGF0KCk7XG59XG4iXX0=
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdFRoZXJtb3N0YXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvTmVzdFRoZXJtb3N0YXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBb0MsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRyxPQUFPLEVBRUwsY0FBYyxFQUVkLFFBQVEsRUFDUixhQUFhLEVBRWIsT0FBTyxFQUVQLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBRWpCLFlBQVksRUFFYixNQUFNLE9BQU8sQ0FBQztBQUlmLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUMzQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUM7QUFDL0IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBYy9CLE1BQU0sT0FBTyxjQUFlLFNBQVEsY0FBYztJQUFsRDs7UUFDVSxPQUFFLEdBQTBCLElBQUksQ0FBQztRQUNqQyxrQkFBYSxHQUF5QixJQUFJLENBQUM7UUFDM0MsY0FBUyxHQUFvQixJQUFJLENBQUM7UUFDbEMsVUFBSyxHQUEwQixJQUFJLENBQUM7UUFDcEMsZ0JBQVcsR0FBeUIsSUFBSSxDQUFDO1FBQ3pDLFNBQUksR0FBZ0IsSUFBSSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFJM0IsV0FBTSxHQUFXO1lBQ3hCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQTtRQUVRLFlBQU8sR0FBRztZQUNqQixPQUFPLEVBQUUsSUFBSTtZQUNiLE9B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LENBQUMsV0FBVyxHQUFHLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2FBQzlDO1lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNsQjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsU0FBeUIsRUFBRSxLQUFvQixFQUFFLEVBQWtCO1FBQzlFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBbUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2NlbmVDb21wb25lbnQsIENvbXBvbmVudE91dHB1dCwgQ29tcG9uZW50Q29udGV4dH0gZnJvbSAnLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcbmltcG9ydCB7XG4gIE9iamVjdDNELFxuICBBbmltYXRpb25NaXhlcixcbiAgQW5pbWF0aW9uQWN0aW9uLFxuICBMb29wT25jZSxcbiAgQW5pbWF0aW9uQ2xpcCxcbiAgTWVzaCxcbiAgVGV4dHVyZSxcbiAgTWVzaExhbWJlcnRNYXRlcmlhbCxcbiAgVmVjdG9yS2V5ZnJhbWVUcmFjayxcbiAgSW50ZXJwb2xhdGVTbW9vdGgsXG4gIE1lc2hCYXNpY01hdGVyaWFsLFxuICBMaW5lU2VnbWVudHMsXG4gIExpbmVhckZpbHRlcixcbiAgRG91YmxlU2lkZVxufSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge0NhbnZhc1JlbmRlcmVyLCBJUGFpbnRlcjJkfSBmcm9tICcuL0NhbnZhc1JlbmRlcmVyJztcbmltcG9ydCB7UGxhbmVSZW5kZXJlciwgU2l6ZX0gZnJvbSAnLi9QbGFuZVJlbmRlcmVyJztcblxuY29uc3QgSG92ZXJFdmVudCA9ICdob3Zlcic7XG5jb25zdCBVbmhvdmVyRXZlbnQgPSAndW5ob3Zlcic7XG5jb25zdCBSZXBhaW50RXZlbnQgPSAncmVwYWludCc7XG5cbnR5cGUgSW5wdXRzID0ge1xuICBsb2FkaW5nU3RhdGU6IHN0cmluZztcbiAgdGV4dHVyZTogVGV4dHVyZSB8IG51bGw7XG4gIHVwZGF0ZUludGVydmFsOiBudW1iZXI7XG59XG5cbnR5cGUgT3V0cHV0cyA9IHtcbiAgcGFpbnRlcjogSVBhaW50ZXIyZCB8IG51bGw7XG4gIHZpc2libGU6IGJvb2xlYW47XG59ICYgQ29tcG9uZW50T3V0cHV0O1xuXG5cbmV4cG9ydCBjbGFzcyBOZXN0VGhlcm1vc3RhdCBleHRlbmRzIFNjZW5lQ29tcG9uZW50IGltcGxlbWVudHMgSVBhaW50ZXIyZCB7XG4gIHByaXZhdGUgY3Y6IENhbnZhc1JlbmRlcmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGxhbmVSZW5kZXJlcjogUGxhbmVSZW5kZXJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJvb3RTY2VuZTogT2JqZWN0M0QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBtaXhlcjogQW5pbWF0aW9uTWl4ZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBvbkVudGVyQ2xpcDogQW5pbWF0aW9uQ2xpcCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1lc2g6IE1lc2ggfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50VGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBuZXh0VXBkYXRlOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHRlbXBlcmF0dXJlOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHRlbXBDaGFuZ2VSYW5nZTogbnVtYmVyID0gNTtcbiAgcHJpdmF0ZSBjb21wb25lbnQ6IFNjZW5lQ29tcG9uZW50O1xuXG5cbiAgb3ZlcnJpZGUgaW5wdXRzOiBJbnB1dHMgPSB7XG4gICAgbG9hZGluZ1N0YXRlOiAnSWRsZScsXG4gICAgdGV4dHVyZTogbnVsbCxcbiAgICB1cGRhdGVJbnRlcnZhbDogMTAwMCxcbiAgfVxuXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XG4gICAgcGFpbnRlcjogbnVsbCxcbiAgICB2aXNpYmxlOiBmYWxzZSxcbiAgfSBhcyBPdXRwdXRzO1xuXG4gIG92ZXJyaWRlIGV2ZW50cyA9IHtcbiAgICBbSG92ZXJFdmVudF06IHRydWUsXG4gICAgW1VuaG92ZXJFdmVudF06IHRydWUsXG4gIH07XG5cbiAgb3ZlcnJpZGUgb25Jbml0KG1vZGVsTm9kZT86IGFueSwgcGxhbmU/OiBQbGFuZVJlbmRlcmVyLCBpbnB1dFRleHR1cmU/OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xuICAgICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgICByb290OiBtb2RlbE5vZGVcbiAgICAgIH0gYXMgQ29tcG9uZW50Q29udGV4dDtcbiAgICB9XG4gICAgdGhpcy5pbnB1dHMudGV4dHVyZSA9IGlucHV0VGV4dHVyZTtcbiAgICBjb25zdCByb290ID0gdGhpcy5jb250ZXh0LnJvb3Q7XG4gICAgY29uc3QgVEhSRUUgPSB0aGlzLmNvbnRleHQudGhyZWU7XG5cbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIgPSBwbGFuZTtcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290LnRyYW5zbGF0ZVooMC4wNSk7XG4gICAgdGhpcy5wbGFuZVJlbmRlcmVyLm91dHB1dHMub2JqZWN0Um9vdC50cmFuc2xhdGVZKDAuNCk7XG4gICAgdGhpcy5wbGFuZVJlbmRlcmVyLm91dHB1dHMub2JqZWN0Um9vdC5zY2FsZS5zZXQoMC41LCAwLjUsIDAuNSk7XG4gICAgLy8gcGxhbmVSZW5kZXJlci5pbnB1dHMubG9jYWxQb3NpdGlvbi56ID0gMC4wNTtcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFBvc2l0aW9uLnkgPSAwLjQ7XG4gICAgLy8gcGxhbmVSZW5kZXJlci5pbnB1dHMubG9jYWxTY2FsZSA9IHt4OiAwLjUsIHk6IDAuNSwgejogMC41fTtcblxuICAgIHRoaXMub3V0cHV0cy5wYWludGVyID0gdGhpcztcblxuICAgIHRoaXMubWl4ZXIgPSBuZXcgQW5pbWF0aW9uTWl4ZXIodGhpcy5wbGFuZVJlbmRlcmVyLm91dHB1dHMub2JqZWN0Um9vdCk7XG5cbiAgICBjb25zdCB0bSA9IDAuMjtcbiAgICBjb25zdCBwb3NpdGlvblRyYWNrID0gbmV3IFZlY3RvcktleWZyYW1lVHJhY2soJy5zY2FsZScsIFswLCB0bV0sIFtcbiAgICAgIDAsIDAsIDAsXG4gICAgICAwLjUsIDAuNSwgMC41XG4gICAgXSwgSW50ZXJwb2xhdGVTbW9vdGgpO1xuICAgIHRoaXMub25FbnRlckNsaXAgPSBuZXcgQW5pbWF0aW9uQ2xpcChudWxsLCB0bSwgW3Bvc2l0aW9uVHJhY2tdKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uSW5wdXRzVXBkYXRlZCgpIHtcbiAgICBpZiAodGhpcy5pbnB1dHMubG9hZGluZ1N0YXRlID09PSAnTG9hZGVkJykge1xuICAgICAgY29uc3QgbGluZXM6IExpbmVTZWdtZW50c1tdID0gW107XG5cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdGhpcy5jb250ZXh0LnJvb3Qub2JqM0QudHJhdmVyc2UoKG9iajogT2JqZWN0M0QpID0+IHtcbiAgICAgICAgLy8gd2UgZG9udCB3YW50IGxpbmUgc2VnbWVudHMsIHRyYWNrIHRoZW0gYW5kIHJlbW92ZSB0aGVtLlxuICAgICAgICBpZiAob2JqLnR5cGUgPT09ICdMaW5lU2VnbWVudHMnKSB7XG4gICAgICAgICAgbGluZXMucHVzaChvYmogYXMgTGluZVNlZ21lbnRzKTtcbiAgICAgICAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ01lc2gnKSB7XG4gICAgICAgICAgdGhpcy5tZXNoID0gb2JqIGFzIE1lc2g7XG5cbiAgICAgICAgICBjb25zdCBtYXRlcmlhbHMgPSB0aGlzLm1lc2gubWF0ZXJpYWwgYXMgTWVzaExhbWJlcnRNYXRlcmlhbDtcbiAgICAgICAgICBtYXRlcmlhbHMuZm9yRWFjaCgobSwgaWR4KSA9PiB7XG4gICAgICAgICAgICBpZiAobSAmJiBtLm1hcC5zb3VyY2UuZGF0YS5vdXRlckhUTUwuaW5kZXhPZignXzViNzZkYmUzODg4NjIzMDAxMjZjMWUxNCcpICE9PSAtMSkge1xuICAgICAgICAgICAgICBsZXQgdmlkZW8sIHZpZGVvSW1hZ2UsIHZpZGVvSW1hZ2VDb250ZXh0LCB2aWRlb1RleHR1cmU7XG4gICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgdmlkZW8gZWxlbWVudFxuICAgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XG4gICAgICAgICAgICAgIHZpZGVvLnNyYyA9IFwiLi8uLi9hc3NldHMvdmlkZW8vMTIxMjIyLTA0Lm1wNFwiO1xuICAgICAgICAgICAgICB2aWRlby5sb2FkKCk7IC8vIG11c3QgY2FsbCBhZnRlciBzZXR0aW5nL2NoYW5naW5nIHNvdXJjZVxuICAgICAgICAgICAgICB2aWRlby5sb29wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdmlkZW8ucGxheSgpO1xuXG4gICAgICAgICAgICAgIHZpZGVvSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICAgICAgdmlkZW9JbWFnZS53aWR0aCA9IDQ4MDtcbiAgICAgICAgICAgICAgdmlkZW9JbWFnZS5oZWlnaHQgPSAyMDQ7XG5cbiAgICAgICAgICAgICAgdmlkZW9JbWFnZUNvbnRleHQgPSB2aWRlb0ltYWdlLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICAgIC8vIGJhY2tncm91bmQgY29sb3IgaWYgbm8gdmlkZW8gcHJlc2VudFxuICAgICAgICAgICAgICB2aWRlb0ltYWdlQ29udGV4dC5maWxsU3R5bGUgPSAnIzAwMDAwMCc7XG4gICAgICAgICAgICAgIHZpZGVvSW1hZ2VDb250ZXh0LmZpbGxSZWN0KDAsIDAsIHZpZGVvSW1hZ2Uud2lkdGgsIHZpZGVvSW1hZ2UuaGVpZ2h0KTtcblxuICAgICAgICAgICAgICB2aWRlb1RleHR1cmUgPSBuZXcgVGV4dHVyZSh2aWRlb0ltYWdlKVxuICAgICAgICAgICAgICB2aWRlb1RleHR1cmUubWluRmlsdGVyID0gTGluZWFyRmlsdGVyO1xuICAgICAgICAgICAgICB2aWRlb1RleHR1cmUubWFnRmlsdGVyID0gTGluZWFyRmlsdGVyO1xuICAgICAgICAgICAgICBjb25zdCBtb3ZpZU1hdGVyaWFsID0gbmV3IE1lc2hCYXNpY01hdGVyaWFsKHttYXA6IHZpZGVvVGV4dHVyZX0pXG4gICAgICAgICAgICAgIC8vIGNvbnN0IG5ld01hdGVyaWFsID0gbmV3IE1lc2hCYXNpY01hdGVyaWFsKHttYXA6IHRoaXMuaW5wdXRzLnRleHR1cmV9KTtcbiAgICAgICAgICAgICAgLy8gY29uc3QgbmV3TWF0ZXJpYWwgPSBuZXcgTWVzaEJhc2ljTWF0ZXJpYWwoe21hcDogdGhpcy5pbnB1dHMudGV4dHVyZX0pO1xuICAgICAgICAgICAgICAvLyB0aGlzLm1lc2gubWF0ZXJpYWxbaWR4XSA9IG5ld01hdGVyaWFsO1xuICAgICAgICAgICAgICB0aGlzLm1lc2gubWF0ZXJpYWxbaWR4XSA9IG1vdmllTWF0ZXJpYWw7XG5cblxuICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZpZGVvLnJlYWR5U3RhdGUgPT09IHZpZGVvLkhBVkVfRU5PVUdIX0RBVEEpIHtcbiAgICAgICAgICAgICAgICAgIHZpZGVvSW1hZ2VDb250ZXh0LmRyYXdJbWFnZSh2aWRlbywgMCwgMCk7XG4gICAgICAgICAgICAgICAgICBpZiAodmlkZW9UZXh0dXJlKVxuICAgICAgICAgICAgICAgICAgICB2aWRlb1RleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjYW1lcmEgPSB0aGlzLnJvb3RTY2VuZS5jaGlsZHJlbi5maW5kKHU9PnUuY29uc3RydWN0b3IubmFtZSA9PT0gJ0NhbWVyYVJpZycpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5yZW5kZXJlci5yZW5kZXIodGhpcy5jb250ZXh0LnNjZW5lLCBjYW1lcmEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAgICAgcmVuZGVyKCk7XG4gICAgICAgICAgICAgIH0sMjAwKTtcblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIHJlbW92ZSB0aGUgbGluZSBzZWdtZW50cy5cbiAgICAgIGxpbmVzLmZvckVhY2goKGxpbmU6IExpbmVTZWdtZW50cykgPT4ge1xuICAgICAgICBsaW5lLnBhcmVudC5yZW1vdmUobGluZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBvbkV2ZW50KGV2ZW50VHlwZTogc3RyaW5nLCBldmVudERhdGE6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnRUeXBlID09PSBIb3ZlckV2ZW50KSB7XG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBldmVudERhdGE7XG4gICAgICBpZiAoZGF0YS5ob3Zlcikge1xuICAgICAgICB0aGlzLm91dHB1dHMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IG9uRW50ZXJBY3Rpb246IEFuaW1hdGlvbkFjdGlvbiA9IHRoaXMubWl4ZXIuY2xpcEFjdGlvbih0aGlzLm9uRW50ZXJDbGlwKTtcbiAgICAgICAgb25FbnRlckFjdGlvbi5zdG9wKCk7XG4gICAgICAgIG9uRW50ZXJBY3Rpb24ubG9vcCA9IExvb3BPbmNlO1xuICAgICAgICBvbkVudGVyQWN0aW9uLmNsYW1wV2hlbkZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgb25FbnRlckFjdGlvbi5wbGF5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm91dHB1dHMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhaW50KGNvbnRleHQyZDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBzaXplOiBTaXplKTogdm9pZCB7XG4gICAgY29uc3QgeCA9IDQ5MDtcbiAgICBjb25zdCB5ID0gNDkwO1xuXG4gICAgY29udGV4dDJkLmZpbGxTdHlsZSA9ICdibGFjayc7XG4gICAgY29udGV4dDJkLmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQyZC5hcmMoeCwgeSwgNDAwLCAwLCBNYXRoLlBJICogMik7XG4gICAgY29udGV4dDJkLmZpbGwoKTtcblxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnI0NGNTMwMCc7XG4gICAgY29udGV4dDJkLmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQyZC5hcmMoeCwgeSwgMzAwLCAwLCBNYXRoLlBJICogMik7XG4gICAgY29udGV4dDJkLmZpbGwoKTtcblxuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0MmQuc3Ryb2tlU3R5bGUgPSAnb3JhbmdlJztcbiAgICBjb250ZXh0MmQuYXJjKHgsIHksIDI0MCwgMC43NSAqIE1hdGguUEksIDAuMjUgKiBNYXRoLlBJKTtcbiAgICBjb250ZXh0MmQubGluZUNhcCA9ICdidXR0JztcbiAgICBjb250ZXh0MmQubGluZVdpZHRoID0gODA7XG4gICAgY29udGV4dDJkLnN0cm9rZSgpO1xuXG4gICAgY29udGV4dDJkLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgY29udGV4dDJkLmZvbnQgPSAnMjIwcHggQXJpYWwnO1xuICAgIGNvbnRleHQyZC5maWxsVGV4dChgJHt0aGlzLnRlbXBlcmF0dXJlfWAsIHggLSAxMTUsIHkgKyA3NSk7XG4gICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25UaWNrKGRlbHRhOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRUaW1lICs9IGRlbHRhO1xuXG4gICAgaWYgKHRoaXMubWl4ZXIpIHtcbiAgICAgIHRoaXMubWl4ZXIudXBkYXRlKGRlbHRhIC8gMTAwMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFRpbWUgPiB0aGlzLm5leHRVcGRhdGUpIHtcbiAgICAgIHRoaXMubmV4dFVwZGF0ZSArPSB0aGlzLmlucHV0cy51cGRhdGVJbnRlcnZhbDtcblxuICAgICAgdGhpcy50ZW1wZXJhdHVyZSArPSAoTWF0aC5yYW5kb20oKSAqIHRoaXMudGVtcENoYW5nZVJhbmdlKTtcbiAgICAgIHRoaXMudGVtcGVyYXR1cmUgPSBNYXRoLnRydW5jKHRoaXMudGVtcGVyYXR1cmUpO1xuXG4gICAgICBpZiAodGhpcy50ZW1wZXJhdHVyZSA+IDk5KSB7XG4gICAgICAgIHRoaXMudGVtcGVyYXR1cmUgPSA5OTtcbiAgICAgICAgdGhpcy50ZW1wQ2hhbmdlUmFuZ2UgPSAtdGhpcy50ZW1wQ2hhbmdlUmFuZ2U7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50ZW1wZXJhdHVyZSA8IDEwKSB7XG4gICAgICAgIHRoaXMudGVtcGVyYXR1cmUgPSAxMDtcbiAgICAgICAgdGhpcy50ZW1wQ2hhbmdlUmFuZ2UgPSAtdGhpcy50ZW1wQ2hhbmdlUmFuZ2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29tcG9uZW50Lm5vdGlmeShSZXBhaW50RXZlbnQpO1xuICAgICAgdGhpcy5jdi5yZXBhaW50KClcbiAgICB9XG4gIH1cblxuICBzZXRDb21wb25lbnQoY29tcG9uZW50OiBTY2VuZUNvbXBvbmVudCwgcGxhbmU6IFBsYW5lUmVuZGVyZXIsIGN2OiBDYW52YXNSZW5kZXJlcikge1xuICAgIGNvbXBvbmVudC5vblRpY2sgPSB0aGlzLm9uVGljay5iaW5kKHRoaXMpO1xuICAgIC8vIHBsYW5lLm9uVGljayA9IHRoaXMub25UaWNrLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jdiA9IGN2O1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHRoaXMuY29udGV4dCA9IGNvbXBvbmVudC5jb250ZXh0O1xuICB9XG5cbiAgc2V0Um9vdFNjZW5lKHJvb3RTY2VuZTogT2JqZWN0M0QpIHtcbiAgICB0aGlzLnJvb3RTY2VuZSA9IHJvb3RTY2VuZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbmVzdFRoZXJtb3N0YXRUeXBlID0gJ21wLm5lc3RUaGVybW9zdGF0JztcbmV4cG9ydCBjb25zdCBtYWtlTmVzdFRoZXJtb3N0YXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTmVzdFRoZXJtb3N0YXQoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { SceneComponent } from '../scene-component/SceneComponent';
|
|
2
|
+
import { Texture, MeshBasicMaterial, LinearFilter, } from 'three';
|
|
3
|
+
const HoverEvent = 'hover';
|
|
4
|
+
const UnhoverEvent = 'unhover';
|
|
5
|
+
export class TvPlayer extends SceneComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.rootScene = null;
|
|
9
|
+
this.mesh = null;
|
|
10
|
+
this.inputs = {
|
|
11
|
+
loadingState: 'Idle',
|
|
12
|
+
texture: null,
|
|
13
|
+
updateInterval: 1000,
|
|
14
|
+
};
|
|
15
|
+
this.events = {
|
|
16
|
+
[HoverEvent]: true,
|
|
17
|
+
[UnhoverEvent]: true,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
onInit(modelNode) {
|
|
21
|
+
if (!this.context) {
|
|
22
|
+
this.context = {
|
|
23
|
+
root: modelNode
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const root = this.context.root;
|
|
27
|
+
const THREE = this.context.three;
|
|
28
|
+
}
|
|
29
|
+
onDestroy() {
|
|
30
|
+
super.onDestroy();
|
|
31
|
+
clearInterval(this.intervalVideoTexture);
|
|
32
|
+
}
|
|
33
|
+
onInputsUpdated() {
|
|
34
|
+
if (this.inputs.loadingState === 'Loaded') {
|
|
35
|
+
const lines = [];
|
|
36
|
+
//@ts-ignore
|
|
37
|
+
this.context.root.obj3D.traverse((obj) => {
|
|
38
|
+
// we dont want line segments, track them and remove them.
|
|
39
|
+
if (obj.type === 'LineSegments') {
|
|
40
|
+
lines.push(obj);
|
|
41
|
+
}
|
|
42
|
+
else if (obj.type === 'Mesh') {
|
|
43
|
+
this.mesh = obj;
|
|
44
|
+
let video, videoImage, videoImageContext, videoTexture;
|
|
45
|
+
// create the video element
|
|
46
|
+
video = document.createElement('video');
|
|
47
|
+
// video.src = "./../assets/video/video_samsic.mp4";
|
|
48
|
+
video.src = "./../assets/video/121222-04.mp4";
|
|
49
|
+
video.load(); // must call after setting/changing source
|
|
50
|
+
video.loop = true;
|
|
51
|
+
video.play();
|
|
52
|
+
videoImage = document.createElement('canvas');
|
|
53
|
+
// videoImage.width = 640;
|
|
54
|
+
videoImage.width = 1280;
|
|
55
|
+
// videoImage.height = 360;
|
|
56
|
+
videoImage.height = 720;
|
|
57
|
+
videoImageContext = videoImage.getContext('2d');
|
|
58
|
+
// background color if no video present
|
|
59
|
+
videoImageContext.fillStyle = '#000000';
|
|
60
|
+
videoImageContext.fillRect(0, 0, videoImage.width, videoImage.height);
|
|
61
|
+
videoTexture = new Texture(videoImage);
|
|
62
|
+
videoTexture.minFilter = LinearFilter;
|
|
63
|
+
videoTexture.magFilter = LinearFilter;
|
|
64
|
+
const movieMaterial = new MeshBasicMaterial({ map: videoTexture });
|
|
65
|
+
this.mesh.material = movieMaterial;
|
|
66
|
+
const render = () => {
|
|
67
|
+
if (video.readyState === video.HAVE_ENOUGH_DATA) {
|
|
68
|
+
videoImageContext.drawImage(video, 0, 0);
|
|
69
|
+
if (videoTexture)
|
|
70
|
+
videoTexture.needsUpdate = true;
|
|
71
|
+
}
|
|
72
|
+
const camera = (this.context.scene.children.find(u => u.constructor.name === 'CameraRig')).camera;
|
|
73
|
+
this.context.renderer.render(this.context.scene, camera);
|
|
74
|
+
};
|
|
75
|
+
this.intervalVideoTexture = setInterval(() => {
|
|
76
|
+
render();
|
|
77
|
+
}, 180);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
// remove the line segments.
|
|
81
|
+
lines.forEach((line) => {
|
|
82
|
+
line.parent.remove(line);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
setComponent(component) {
|
|
87
|
+
this.component = component;
|
|
88
|
+
this.context = component.context;
|
|
89
|
+
}
|
|
90
|
+
setRootScene(rootScene) {
|
|
91
|
+
this.rootScene = rootScene;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export const TvPlayerType = 'mp.TvPlayer';
|
|
95
|
+
export const makeTvPlayer = function () {
|
|
96
|
+
return new TvPlayer();
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHZQbGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy90di1wbGF5ZXIvVHZQbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRixPQUFPLEVBR0wsT0FBTyxFQUNQLGlCQUFpQixFQUVqQixZQUFZLEdBQ2IsTUFBTSxPQUFPLENBQUM7QUFFZixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBUy9CLE1BQU0sT0FBTyxRQUFTLFNBQVEsY0FBYztJQUE1Qzs7UUFDVSxjQUFTLEdBQW9CLElBQUksQ0FBQztRQUNsQyxTQUFJLEdBQWdCLElBQUksQ0FBQztRQUl4QixXQUFNLEdBQVc7WUFDeEIsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLElBQUk7WUFDYixjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFBO1FBR1EsV0FBTSxHQUFHO1lBQ2hCLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSTtZQUNsQixDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUk7U0FDckIsQ0FBQztJQXVGSixDQUFDO0lBcEZVLE1BQU0sQ0FBQyxTQUFlO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLFNBQVM7YUFDSSxDQUFDO1NBQ3ZCO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVRLFNBQVM7UUFDaEIsS0FBSyxDQUFDLFNBQVMsRUFB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QW9CLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTt3QkFDM0MsTUFBTSxFQUFFLENBQUM7b0JBQ1gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUVUO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCw0QkFBNEI7WUFDNUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsU0FBeUI7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBbUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2NlbmVDb21wb25lbnQsIENvbXBvbmVudENvbnRleHR9IGZyb20gJy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBPYmplY3QzRCxcbiAgTWVzaCxcbiAgVGV4dHVyZSxcbiAgTWVzaEJhc2ljTWF0ZXJpYWwsXG4gIExpbmVTZWdtZW50cyxcbiAgTGluZWFyRmlsdGVyLFxufSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IEhvdmVyRXZlbnQgPSAnaG92ZXInO1xuY29uc3QgVW5ob3ZlckV2ZW50ID0gJ3VuaG92ZXInO1xuXG50eXBlIElucHV0cyA9IHtcbiAgbG9hZGluZ1N0YXRlOiBzdHJpbmc7XG4gIHRleHR1cmU6IFRleHR1cmUgfCBudWxsO1xuICB1cGRhdGVJbnRlcnZhbDogbnVtYmVyO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBUdlBsYXllciBleHRlbmRzIFNjZW5lQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByb290U2NlbmU6IE9iamVjdDNEIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWVzaDogTWVzaCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQ7XG5cblxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBsb2FkaW5nU3RhdGU6ICdJZGxlJyxcbiAgICB0ZXh0dXJlOiBudWxsLFxuICAgIHVwZGF0ZUludGVydmFsOiAxMDAwLFxuICB9XG5cblxuICBvdmVycmlkZSBldmVudHMgPSB7XG4gICAgW0hvdmVyRXZlbnRdOiB0cnVlLFxuICAgIFtVbmhvdmVyRXZlbnRdOiB0cnVlLFxuICB9O1xuICBwcml2YXRlIGludGVydmFsVmlkZW9UZXh0dXJlOiBOb2RlSlMuVGltZW91dDtcblxuICBvdmVycmlkZSBvbkluaXQobW9kZWxOb2RlPzogYW55KSB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHtcbiAgICAgICAgcm9vdDogbW9kZWxOb2RlXG4gICAgICB9IGFzIENvbXBvbmVudENvbnRleHQ7XG4gICAgfVxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmNvbnRleHQucm9vdDtcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcbiAgICBzdXBlci5vbkRlc3Ryb3koKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxWaWRlb1RleHR1cmUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xuICAgIGlmICh0aGlzLmlucHV0cy5sb2FkaW5nU3RhdGUgPT09ICdMb2FkZWQnKSB7XG4gICAgICBjb25zdCBsaW5lczogTGluZVNlZ21lbnRzW10gPSBbXTtcblxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aGlzLmNvbnRleHQucm9vdC5vYmozRC50cmF2ZXJzZSgob2JqOiBPYmplY3QzRCkgPT4ge1xuICAgICAgICAvLyB3ZSBkb250IHdhbnQgbGluZSBzZWdtZW50cywgdHJhY2sgdGhlbSBhbmQgcmVtb3ZlIHRoZW0uXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ0xpbmVTZWdtZW50cycpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKG9iaiBhcyBMaW5lU2VnbWVudHMpO1xuICAgICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnTWVzaCcpIHtcbiAgICAgICAgICB0aGlzLm1lc2ggPSBvYmogYXMgTWVzaDtcblxuICAgICAgICAgIGxldCB2aWRlbywgdmlkZW9JbWFnZSwgdmlkZW9JbWFnZUNvbnRleHQsIHZpZGVvVGV4dHVyZTtcbiAgICAgICAgICAvLyBjcmVhdGUgdGhlIHZpZGVvIGVsZW1lbnRcbiAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XG4gICAgICAgICAgLy8gdmlkZW8uc3JjID0gXCIuLy4uL2Fzc2V0cy92aWRlby92aWRlb19zYW1zaWMubXA0XCI7XG4gICAgICAgICAgdmlkZW8uc3JjID0gXCIuLy4uL2Fzc2V0cy92aWRlby8xMjEyMjItMDQubXA0XCI7XG4gICAgICAgICAgdmlkZW8ubG9hZCgpOyAvLyBtdXN0IGNhbGwgYWZ0ZXIgc2V0dGluZy9jaGFuZ2luZyBzb3VyY2VcbiAgICAgICAgICB2aWRlby5sb29wID0gdHJ1ZTtcbiAgICAgICAgICB2aWRlby5wbGF5KCk7XG5cbiAgICAgICAgICB2aWRlb0ltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgLy8gdmlkZW9JbWFnZS53aWR0aCA9IDY0MDtcbiAgICAgICAgICB2aWRlb0ltYWdlLndpZHRoID0gMTI4MDtcbiAgICAgICAgICAvLyB2aWRlb0ltYWdlLmhlaWdodCA9IDM2MDtcbiAgICAgICAgICB2aWRlb0ltYWdlLmhlaWdodCA9IDcyMDtcblxuICAgICAgICAgIHZpZGVvSW1hZ2VDb250ZXh0ID0gdmlkZW9JbWFnZS5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgIC8vIGJhY2tncm91bmQgY29sb3IgaWYgbm8gdmlkZW8gcHJlc2VudFxuICAgICAgICAgIHZpZGVvSW1hZ2VDb250ZXh0LmZpbGxTdHlsZSA9ICcjMDAwMDAwJztcbiAgICAgICAgICB2aWRlb0ltYWdlQ29udGV4dC5maWxsUmVjdCgwLCAwLCB2aWRlb0ltYWdlLndpZHRoLCB2aWRlb0ltYWdlLmhlaWdodCk7XG5cbiAgICAgICAgICB2aWRlb1RleHR1cmUgPSBuZXcgVGV4dHVyZSh2aWRlb0ltYWdlKVxuICAgICAgICAgIHZpZGVvVGV4dHVyZS5taW5GaWx0ZXIgPSBMaW5lYXJGaWx0ZXI7XG4gICAgICAgICAgdmlkZW9UZXh0dXJlLm1hZ0ZpbHRlciA9IExpbmVhckZpbHRlcjtcbiAgICAgICAgICBjb25zdCBtb3ZpZU1hdGVyaWFsID0gbmV3IE1lc2hCYXNpY01hdGVyaWFsKHttYXA6IHZpZGVvVGV4dHVyZX0pXG4gICAgICAgICAgdGhpcy5tZXNoLm1hdGVyaWFsID0gbW92aWVNYXRlcmlhbDtcblxuICAgICAgICAgIGNvbnN0IHJlbmRlciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh2aWRlby5yZWFkeVN0YXRlID09PSB2aWRlby5IQVZFX0VOT1VHSF9EQVRBKSB7XG4gICAgICAgICAgICAgIHZpZGVvSW1hZ2VDb250ZXh0LmRyYXdJbWFnZSh2aWRlbywgMCwgMCk7XG4gICAgICAgICAgICAgIGlmICh2aWRlb1RleHR1cmUpXG4gICAgICAgICAgICAgICAgdmlkZW9UZXh0dXJlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNhbWVyYSA9ICh0aGlzLmNvbnRleHQuc2NlbmUuY2hpbGRyZW4uZmluZCh1ID0+IHUuY29uc3RydWN0b3IubmFtZSA9PT0gJ0NhbWVyYVJpZycpKS5jYW1lcmE7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQucmVuZGVyZXIucmVuZGVyKHRoaXMuY29udGV4dC5zY2VuZSwgY2FtZXJhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pbnRlcnZhbFZpZGVvVGV4dHVyZSA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIHJlbmRlcigpO1xuICAgICAgICAgIH0sIDE4MCk7XG5cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIHJlbW92ZSB0aGUgbGluZSBzZWdtZW50cy5cbiAgICAgIGxpbmVzLmZvckVhY2goKGxpbmU6IExpbmVTZWdtZW50cykgPT4ge1xuICAgICAgICBsaW5lLnBhcmVudC5yZW1vdmUobGluZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRDb21wb25lbnQoY29tcG9uZW50OiBTY2VuZUNvbXBvbmVudCkge1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHRoaXMuY29udGV4dCA9IGNvbXBvbmVudC5jb250ZXh0O1xuICB9XG5cbiAgc2V0Um9vdFNjZW5lKHJvb3RTY2VuZTogT2JqZWN0M0QpIHtcbiAgICB0aGlzLnJvb3RTY2VuZSA9IHJvb3RTY2VuZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgVHZQbGF5ZXJUeXBlID0gJ21wLlR2UGxheWVyJztcbmV4cG9ydCBjb25zdCBtYWtlVHZQbGF5ZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVHZQbGF5ZXIoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { SceneComponent } from './../scene-component/SceneComponent';
|
|
2
|
+
import { VideoTexture, LinearFilter, RGBAFormat } from 'three';
|
|
3
|
+
export class VideoRenderer extends SceneComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.inputs = {
|
|
7
|
+
src: null,
|
|
8
|
+
};
|
|
9
|
+
this.outputs = {
|
|
10
|
+
texture: null,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
onInit() {
|
|
14
|
+
}
|
|
15
|
+
onInputsUpdated() {
|
|
16
|
+
this.releaseTexture();
|
|
17
|
+
// if (!this.inputs.src) {
|
|
18
|
+
// this.video.src = '';
|
|
19
|
+
// return;
|
|
20
|
+
// }
|
|
21
|
+
if (this.inputs.src instanceof HTMLVideoElement) {
|
|
22
|
+
// TODO 'https://www.smarterplan.io/wp-content/uploads/2023/03/121222-04.mp4';
|
|
23
|
+
this.video = this.inputs.src;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.video = this.createVideoElement();
|
|
27
|
+
// if (typeof this.inputs.src === 'string') {
|
|
28
|
+
// this.video.src = this.inputs.src;
|
|
29
|
+
// } else {
|
|
30
|
+
// this.video.srcObject = this.inputs.src;
|
|
31
|
+
// }
|
|
32
|
+
this.video.src = './../assets/video/121222-04.mp4';
|
|
33
|
+
this.video.load();
|
|
34
|
+
}
|
|
35
|
+
this.texture = new VideoTexture(this.video);
|
|
36
|
+
this.texture.minFilter = LinearFilter;
|
|
37
|
+
this.texture.magFilter = LinearFilter;
|
|
38
|
+
this.texture.format = RGBAFormat;
|
|
39
|
+
this.outputs.texture = this.texture;
|
|
40
|
+
this.video.play();
|
|
41
|
+
}
|
|
42
|
+
onDestroy() {
|
|
43
|
+
this.releaseTexture();
|
|
44
|
+
}
|
|
45
|
+
releaseTexture() {
|
|
46
|
+
if (this.texture) {
|
|
47
|
+
this.outputs.texture = null;
|
|
48
|
+
this.texture.dispose();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
createVideoElement() {
|
|
52
|
+
const video = document.createElement('video');
|
|
53
|
+
video.crossOrigin = 'anonymous';
|
|
54
|
+
video.autoplay = true;
|
|
55
|
+
video.muted = true;
|
|
56
|
+
video.loop = true;
|
|
57
|
+
return video;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export const videoRendererType = 'mp.videoRenderer';
|
|
61
|
+
export function makeVideoRenderer() {
|
|
62
|
+
return new VideoRenderer();
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlkZW9SZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvbWF0dGVycG9ydC1leHRlbnNpb25zL3ZpZGVvLXJlbmRlcmVyL1ZpZGVvUmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQVUsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFVdEUsTUFBTSxPQUFPLGFBQWMsU0FBUSxjQUFjO0lBQWpEOztRQUlXLFdBQU0sR0FBVztZQUN4QixHQUFHLEVBQUUsSUFBSTtTQUNWLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO0lBMkRmLENBQUM7SUF6RFUsTUFBTTtJQUNmLENBQUM7SUFFUSxlQUFlO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QiwwQkFBMEI7UUFDMUIseUJBQXlCO1FBQ3pCLFlBQVk7UUFDWixJQUFJO1FBRUosSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsWUFBWSxnQkFBZ0IsRUFBRTtZQUMvQyw4RUFBOEU7WUFDOUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUM5QjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUV2Qyw2Q0FBNkM7WUFDN0Msc0NBQXNDO1lBQ3RDLFdBQVc7WUFDWCw0Q0FBNEM7WUFDNUMsSUFBSTtZQUVKLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLGlDQUFpQyxDQUFDO1lBRW5ELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbkI7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUVqQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVRLFNBQVM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWxCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBT0QsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFFcEQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2NlbmVDb21wb25lbnQsIENvbXBvbmVudE91dHB1dH0gZnJvbSAnLi8uLi9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQnO1xyXG5pbXBvcnQge1RleHR1cmUsIFZpZGVvVGV4dHVyZSwgTGluZWFyRmlsdGVyLCBSR0JBRm9ybWF0fSBmcm9tICd0aHJlZSc7XHJcblxyXG50eXBlIElucHV0cyA9IHtcclxuICBzcmM6IE1lZGlhU3RyZWFtIHwgc3RyaW5nIHwgSFRNTFZpZGVvRWxlbWVudCB8IG51bGw7XHJcbn07XHJcblxyXG50eXBlIE91dHB1dHMgPSB7XHJcbiAgdGV4dHVyZTogVGV4dHVyZSB8IG51bGw7XHJcbn0gJiBDb21wb25lbnRPdXRwdXQ7XHJcblxyXG5leHBvcnQgY2xhc3MgVmlkZW9SZW5kZXJlciBleHRlbmRzIFNjZW5lQ29tcG9uZW50IHtcclxuICBwcml2YXRlIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50O1xyXG4gIHByaXZhdGUgdGV4dHVyZTogVmlkZW9UZXh0dXJlO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIHNyYzogbnVsbCxcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XHJcbiAgICB0ZXh0dXJlOiBudWxsLFxyXG4gIH0gYXMgT3V0cHV0cztcclxuXHJcbiAgb3ZlcnJpZGUgb25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xyXG4gICAgdGhpcy5yZWxlYXNlVGV4dHVyZSgpO1xyXG5cclxuICAgIC8vIGlmICghdGhpcy5pbnB1dHMuc3JjKSB7XHJcbiAgICAvLyAgIHRoaXMudmlkZW8uc3JjID0gJyc7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5pbnB1dHMuc3JjIGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCkge1xyXG4gICAgICAvLyBUT0RPICdodHRwczovL3d3dy5zbWFydGVycGxhbi5pby93cC1jb250ZW50L3VwbG9hZHMvMjAyMy8wMy8xMjEyMjItMDQubXA0JztcclxuICAgICAgdGhpcy52aWRlbyA9IHRoaXMuaW5wdXRzLnNyYztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlkZW8gPSB0aGlzLmNyZWF0ZVZpZGVvRWxlbWVudCgpO1xyXG5cclxuICAgICAgLy8gaWYgKHR5cGVvZiB0aGlzLmlucHV0cy5zcmMgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIC8vICAgdGhpcy52aWRlby5zcmMgPSB0aGlzLmlucHV0cy5zcmM7XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy52aWRlby5zcmNPYmplY3QgPSB0aGlzLmlucHV0cy5zcmM7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIHRoaXMudmlkZW8uc3JjID0gJy4vLi4vYXNzZXRzL3ZpZGVvLzEyMTIyMi0wNC5tcDQnO1xyXG5cclxuICAgICAgdGhpcy52aWRlby5sb2FkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZXh0dXJlID0gbmV3IFZpZGVvVGV4dHVyZSh0aGlzLnZpZGVvKTtcclxuICAgIHRoaXMudGV4dHVyZS5taW5GaWx0ZXIgPSBMaW5lYXJGaWx0ZXI7XHJcbiAgICB0aGlzLnRleHR1cmUubWFnRmlsdGVyID0gTGluZWFyRmlsdGVyO1xyXG4gICAgdGhpcy50ZXh0dXJlLmZvcm1hdCA9IFJHQkFGb3JtYXQ7XHJcblxyXG4gICAgdGhpcy5vdXRwdXRzLnRleHR1cmUgPSB0aGlzLnRleHR1cmU7XHJcbiAgICB0aGlzLnZpZGVvLnBsYXkoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucmVsZWFzZVRleHR1cmUoKTtcclxuICB9XHJcblxyXG4gIHJlbGVhc2VUZXh0dXJlKCkge1xyXG4gICAgaWYgKHRoaXMudGV4dHVyZSkge1xyXG4gICAgICB0aGlzLm91dHB1dHMudGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGV4dHVyZS5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVZpZGVvRWxlbWVudCgpIHtcclxuICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTtcclxuICAgIHZpZGVvLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XHJcbiAgICB2aWRlby5hdXRvcGxheSA9IHRydWU7XHJcbiAgICB2aWRlby5tdXRlZCA9IHRydWU7XHJcbiAgICB2aWRlby5sb29wID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdmlkZW87XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElWaWRlb1JlbmRlcmVyIGV4dGVuZHMgU2NlbmVDb21wb25lbnQge1xyXG4gIGlucHV0czogSW5wdXRzO1xyXG4gIG91dHB1dHM6IE91dHB1dHM7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB2aWRlb1JlbmRlcmVyVHlwZSA9ICdtcC52aWRlb1JlbmRlcmVyJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmlkZW9SZW5kZXJlcigpIHtcclxuICByZXR1cm4gbmV3IFZpZGVvUmVuZGVyZXIoKTtcclxufVxyXG4iXX0=
|