Эх сурвалжийг харах

[ts] Modularized spine-threejs, removed threejs typings

Mario Zechner 4 жил өмнө
parent
commit
bf347df8af
100 өөрчлөгдсөн 9983 нэмэгдсэн , 4672 устгасан
  1. 3 2
      spine-ts/package.json
  2. 127 112
      spine-ts/spine-threejs/example/index.html
  3. 9372 0
      spine-ts/spine-threejs/package-lock.json
  4. 40 0
      spine-ts/spine-threejs/package.json
  5. 8 7
      spine-ts/spine-threejs/src/AssetManager.ts
  6. 86 84
      spine-ts/spine-threejs/src/MeshBatcher.ts
  7. 240 237
      spine-ts/spine-threejs/src/SkeletonMesh.ts
  8. 36 35
      spine-ts/spine-threejs/src/ThreeJsTexture.ts
  9. 29 0
      spine-ts/spine-threejs/src/index.ts
  10. 42 0
      spine-ts/spine-threejs/src/require-shim.ts
  11. 0 13
      spine-ts/spine-threejs/src/threejs/Three.Legacy.d.ts
  12. 0 180
      spine-ts/spine-threejs/src/threejs/Three.d.ts
  13. 0 62
      spine-ts/spine-threejs/src/threejs/animation/AnimationAction.d.ts
  14. 0 41
      spine-ts/spine-threejs/src/threejs/animation/AnimationClip.d.ts
  15. 0 23
      spine-ts/spine-threejs/src/threejs/animation/AnimationMixer.d.ts
  16. 0 18
      spine-ts/spine-threejs/src/threejs/animation/AnimationObjectGroup.d.ts
  17. 0 26
      spine-ts/spine-threejs/src/threejs/animation/AnimationUtils.d.ts
  18. 0 43
      spine-ts/spine-threejs/src/threejs/animation/KeyframeTrack.d.ts
  19. 0 51
      spine-ts/spine-threejs/src/threejs/animation/PropertyBinding.d.ts
  20. 0 17
      spine-ts/spine-threejs/src/threejs/animation/PropertyMixer.d.ts
  21. 0 7
      spine-ts/spine-threejs/src/threejs/animation/tracks/BooleanKeyframeTrack.d.ts
  22. 0 13
      spine-ts/spine-threejs/src/threejs/animation/tracks/ColorKeyframeTrack.d.ts
  23. 0 13
      spine-ts/spine-threejs/src/threejs/animation/tracks/NumberKeyframeTrack.d.ts
  24. 0 13
      spine-ts/spine-threejs/src/threejs/animation/tracks/QuaternionKeyframeTrack.d.ts
  25. 0 13
      spine-ts/spine-threejs/src/threejs/animation/tracks/StringKeyframeTrack.d.ts
  26. 0 13
      spine-ts/spine-threejs/src/threejs/animation/tracks/VectorKeyframeTrack.d.ts
  27. 0 70
      spine-ts/spine-threejs/src/threejs/audio/Audio.d.ts
  28. 0 16
      spine-ts/spine-threejs/src/threejs/audio/AudioAnalyser.d.ts
  29. 0 1
      spine-ts/spine-threejs/src/threejs/audio/AudioContext.d.ts
  30. 0 21
      spine-ts/spine-threejs/src/threejs/audio/AudioListener.d.ts
  31. 0 24
      spine-ts/spine-threejs/src/threejs/audio/PositionalAudio.d.ts
  32. 0 10
      spine-ts/spine-threejs/src/threejs/cameras/ArrayCamera.d.ts
  33. 0 38
      spine-ts/spine-threejs/src/threejs/cameras/Camera.d.ts
  34. 0 19
      spine-ts/spine-threejs/src/threejs/cameras/CubeCamera.d.ts
  35. 0 91
      spine-ts/spine-threejs/src/threejs/cameras/OrthographicCamera.d.ts
  36. 0 121
      spine-ts/spine-threejs/src/threejs/cameras/PerspectiveCamera.d.ts
  37. 0 17
      spine-ts/spine-threejs/src/threejs/cameras/StereoCamera.d.ts
  38. 0 290
      spine-ts/spine-threejs/src/threejs/constants.d.ts
  39. 0 245
      spine-ts/spine-threejs/src/threejs/core/BufferAttribute.d.ts
  40. 0 157
      spine-ts/spine-threejs/src/threejs/core/BufferGeometry.d.ts
  41. 0 61
      spine-ts/spine-threejs/src/threejs/core/Clock.d.ts
  42. 0 44
      spine-ts/spine-threejs/src/threejs/core/DirectGeometry.d.ts
  43. 0 42
      spine-ts/spine-threejs/src/threejs/core/EventDispatcher.d.ts
  44. 0 101
      spine-ts/spine-threejs/src/threejs/core/Face3.d.ts
  45. 0 255
      spine-ts/spine-threejs/src/threejs/core/Geometry.d.ts
  46. 0 49
      spine-ts/spine-threejs/src/threejs/core/InstancedBufferAttribute.d.ts
  47. 0 15
      spine-ts/spine-threejs/src/threejs/core/InstancedBufferGeometry.d.ts
  48. 0 16
      spine-ts/spine-threejs/src/threejs/core/InstancedInterleavedBuffer.d.ts
  49. 0 30
      spine-ts/spine-threejs/src/threejs/core/InterleavedBuffer.d.ts
  50. 0 47
      spine-ts/spine-threejs/src/threejs/core/InterleavedBufferAttribute.d.ts
  51. 0 15
      spine-ts/spine-threejs/src/threejs/core/Layers.d.ts
  52. 0 351
      spine-ts/spine-threejs/src/threejs/core/Object3D.d.ts
  53. 0 109
      spine-ts/spine-threejs/src/threejs/core/Raycaster.d.ts
  54. 0 24
      spine-ts/spine-threejs/src/threejs/core/Uniform.d.ts
  55. 0 34
      spine-ts/spine-threejs/src/threejs/extras/ImageUtils.d.ts
  56. 0 10
      spine-ts/spine-threejs/src/threejs/extras/ShapeUtils.d.ts
  57. 0 79
      spine-ts/spine-threejs/src/threejs/extras/core/Curve.d.ts
  58. 0 35
      spine-ts/spine-threejs/src/threejs/extras/core/CurvePath.d.ts
  59. 0 9
      spine-ts/spine-threejs/src/threejs/extras/core/Font.d.ts
  60. 0 5
      spine-ts/spine-threejs/src/threejs/extras/core/Interpolations.d.ts
  61. 0 82
      spine-ts/spine-threejs/src/threejs/extras/core/Path.d.ts
  62. 0 40
      spine-ts/spine-threejs/src/threejs/extras/core/Shape.d.ts
  63. 0 25
      spine-ts/spine-threejs/src/threejs/extras/core/ShapePath.d.ts
  64. 0 13
      spine-ts/spine-threejs/src/threejs/extras/curves/ArcCurve.d.ts
  65. 0 48
      spine-ts/spine-threejs/src/threejs/extras/curves/CatmullRomCurve3.d.ts
  66. 0 13
      spine-ts/spine-threejs/src/threejs/extras/curves/CubicBezierCurve.d.ts
  67. 0 15
      spine-ts/spine-threejs/src/threejs/extras/curves/CubicBezierCurve3.d.ts
  68. 0 10
      spine-ts/spine-threejs/src/threejs/extras/curves/Curves.d.ts
  69. 0 26
      spine-ts/spine-threejs/src/threejs/extras/curves/EllipseCurve.d.ts
  70. 0 11
      spine-ts/spine-threejs/src/threejs/extras/curves/LineCurve.d.ts
  71. 0 13
      spine-ts/spine-threejs/src/threejs/extras/curves/LineCurve3.d.ts
  72. 0 12
      spine-ts/spine-threejs/src/threejs/extras/curves/QuadraticBezierCurve.d.ts
  73. 0 14
      spine-ts/spine-threejs/src/threejs/extras/curves/QuadraticBezierCurve3.d.ts
  74. 0 10
      spine-ts/spine-threejs/src/threejs/extras/curves/SplineCurve.d.ts
  75. 0 13
      spine-ts/spine-threejs/src/threejs/extras/objects/ImmediateRenderObject.d.ts
  76. 0 58
      spine-ts/spine-threejs/src/threejs/geometries/BoxGeometry.d.ts
  77. 0 38
      spine-ts/spine-threejs/src/threejs/geometries/CircleGeometry.d.ts
  78. 0 30
      spine-ts/spine-threejs/src/threejs/geometries/ConeGeometry.d.ts
  79. 0 62
      spine-ts/spine-threejs/src/threejs/geometries/CylinderGeometry.d.ts
  80. 0 19
      spine-ts/spine-threejs/src/threejs/geometries/DodecahedronGeometry.d.ts
  81. 0 8
      spine-ts/spine-threejs/src/threejs/geometries/EdgesGeometry.d.ts
  82. 0 59
      spine-ts/spine-threejs/src/threejs/geometries/ExtrudeGeometry.d.ts
  83. 0 22
      spine-ts/spine-threejs/src/threejs/geometries/Geometries.d.ts
  84. 0 16
      spine-ts/spine-threejs/src/threejs/geometries/IcosahedronGeometry.d.ts
  85. 0 39
      spine-ts/spine-threejs/src/threejs/geometries/LatheGeometry.d.ts
  86. 0 16
      spine-ts/spine-threejs/src/threejs/geometries/OctahedronGeometry.d.ts
  87. 0 35
      spine-ts/spine-threejs/src/threejs/geometries/ParametricGeometry.d.ts
  88. 0 38
      spine-ts/spine-threejs/src/threejs/geometries/PlaneGeometry.d.ts
  89. 0 40
      spine-ts/spine-threejs/src/threejs/geometries/PolyhedronGeometry.d.ts
  90. 0 46
      spine-ts/spine-threejs/src/threejs/geometries/RingGeometry.d.ts
  91. 0 18
      spine-ts/spine-threejs/src/threejs/geometries/ShapeGeometry.d.ts
  92. 0 64
      spine-ts/spine-threejs/src/threejs/geometries/SphereGeometry.d.ts
  93. 0 13
      spine-ts/spine-threejs/src/threejs/geometries/TetrahedronGeometry.d.ts
  94. 0 50
      spine-ts/spine-threejs/src/threejs/geometries/TextGeometry.d.ts
  95. 0 42
      spine-ts/spine-threejs/src/threejs/geometries/TorusGeometry.d.ts
  96. 0 48
      spine-ts/spine-threejs/src/threejs/geometries/TorusKnotGeometry.d.ts
  97. 0 50
      spine-ts/spine-threejs/src/threejs/geometries/TubeGeometry.d.ts
  98. 0 8
      spine-ts/spine-threejs/src/threejs/geometries/WireframeGeometry.d.ts
  99. 0 27
      spine-ts/spine-threejs/src/threejs/helpers/ArrowHelper.d.ts
  100. 0 7
      spine-ts/spine-threejs/src/threejs/helpers/AxesHelper.d.ts

+ 3 - 2
spine-ts/package.json

@@ -3,11 +3,12 @@
   "version": "4.0.1",
   "description": "The official Spine Runtimes for the web.",
   "scripts": {
-    "build": "rm -rf build && npm run build:core && npm run build:canvas && npm run build:webgl && npm run build:player",
+    "build": "rm -rf build && npm run build:core && npm run build:canvas && npm run build:webgl && npm run build:player && npm run build:threejs",
     "build:core": "npx esbuild --bundle spine-core/src/index.ts --tsconfig=spine-core/tsconfig.json --minify --sourcemap --outfile=build/spine-core.js --format=iife --global-name=\"spine\"",
     "build:canvas": "npx esbuild --bundle spine-canvas/src/index.ts --tsconfig=spine-canvas/tsconfig.json --minify --sourcemap --outfile=build/spine-canvas.js --format=iife --global-name=\"spine\"",
     "build:webgl": "npx esbuild --bundle spine-webgl/src/index.ts --tsconfig=spine-webgl/tsconfig.json --minify --sourcemap --outfile=build/spine-webgl.js --format=iife --global-name=\"spine\"",
-    "build:player": "npx esbuild --bundle spine-player/src/index.ts --tsconfig=spine-player/tsconfig.json --sourcemap --outfile=build/spine-player.js --format=iife --global-name=\"spine\""
+    "build:player": "npx esbuild --bundle spine-player/src/index.ts --tsconfig=spine-player/tsconfig.json --sourcemap --outfile=build/spine-player.js --format=iife --global-name=\"spine\"",
+    "build:threejs": "npx esbuild --bundle spine-threejs/src/index.ts --tsconfig=spine-threejs/tsconfig.json --sourcemap --outfile=build/spine-threejs.js --external:three --format=iife --global-name=\"spine\""
   },
   "repository": {
     "type": "git",

+ 127 - 112
spine-ts/spine-threejs/example/index.html

@@ -1,122 +1,137 @@
 <html>
+
 <head>
-<meta charset="UTF-8">
-<title>spine-threejs</title>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
-<script src="../../build/spine-threejs.js"></script>
+	<meta charset="UTF-8">
+	<title>spine-threejs</title>
+	<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.js"></script>
+	<script src="../../build/spine-threejs.js"></script>
 </head>
 <style>
-	* { margin: 0; padding: 0; }
-	body, html { height: 100% }
-	canvas { position: absolute; width: 100% ;height: 100%; }
-</style>
-<body>
-<script>
-
-var scene, camera, renderer;
-var geometry, material, mesh, skeletonMesh;
-var assetManager;
-var canvas;
-var lastFrameTime = Date.now() / 1000;
-
-var baseUrl = "assets/";
-var skeletonFile = "raptor-pro.json";
-var atlasFile = skeletonFile.replace("-pro", "").replace("-ess", "").replace(".json", ".atlas");
-var animation = "walk";
-
-function init () {
-	// create the THREE.JS camera, scene and renderer (WebGL)
-	var width = window.innerWidth, height = window.innerHeight;
-	camera = new THREE.PerspectiveCamera(75, width / height, 1, 3000);
-	camera.position.y = 100;
-	camera.position.z = 400;
-	scene = new THREE.Scene();
-	renderer = new THREE.WebGLRenderer();
-	renderer.setSize(width, height);
-	document.body.appendChild(renderer.domElement);
-	canvas = renderer.domElement;
-
-	// load the assets required to display the Raptor model
-	assetManager = new spine.threejs.AssetManager(baseUrl);
-	assetManager.loadText(skeletonFile);
-	assetManager.loadTextureAtlas(atlasFile);
-
-	requestAnimationFrame(load);
-}
-
-function load (name, scale) {
-	if (assetManager.isLoadingComplete()) {
-		// Add a box to the scene to which we attach the skeleton mesh
-		geometry = new THREE.BoxGeometry(200, 200, 200);
-		material = new THREE.MeshBasicMaterial({ color: 0xff0000, wireframe: true });
-		mesh = new THREE.Mesh(geometry, material);
-		scene.add(mesh);
-
-		// Load the texture atlas using name.atlas and name.png from the AssetManager.
-		// The function passed to TextureAtlas is used to resolve relative paths.
-		atlas = assetManager.require(atlasFile);
-
-		// Create a AtlasAttachmentLoader that resolves region, mesh, boundingbox and path attachments
-		atlasLoader = new spine.AtlasAttachmentLoader(atlas);
-
-		// Create a SkeletonJson instance for parsing the .json file.
-		var skeletonJson = new spine.SkeletonJson(atlasLoader);
-
-		// Set the scale to apply during parsing, parse the file, and create a new skeleton.
-		skeletonJson.scale = 0.4;
-		var skeletonData = skeletonJson.readSkeletonData(assetManager.require(skeletonFile));
-
-		// Create a SkeletonMesh from the data and attach it to the scene
-		skeletonMesh = new spine.threejs.SkeletonMesh(skeletonData, function(parameters) {
-			parameters.depthTest = false;
-		});
-		skeletonMesh.state.setAnimation(0, animation, true);
-		mesh.add(skeletonMesh);
-
-		requestAnimationFrame(render);
-	} else requestAnimationFrame(load);
-}
-
-var lastTime = Date.now();
-function render() {
-	// calculate delta time for animation purposes
-	var now = Date.now() / 1000;
-	var delta = now - lastFrameTime;
-	lastFrameTime = now;
-
-	// resize canvas to use full page, adjust camera/renderer
-	resize();
-
-	// rotate the cube
-	mesh.rotation.x = Math.sin(now) * Math.PI * 0.2;
-	mesh.rotation.y = Math.cos(now) * Math.PI * 0.4;
-
-	// update the animation
-	skeletonMesh.update(delta);
-
-	// render the scene
-	renderer.render(scene, camera);
-
-	requestAnimationFrame(render);
-}
-
-function resize () {
-	var w = window.innerWidth;
-	var h = window.innerHeight;
-	if (canvas.width != w || canvas.height != h) {
-		canvas.width = w;
-		canvas.height = h;
+	* {
+		margin: 0;
+		padding: 0;
 	}
 
-	camera.aspect = w / h;
-    camera.updateProjectionMatrix();
+	body,
+	html {
+		height: 100%
+	}
 
-    renderer.setSize(w, h);
-}
+	canvas {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+	}
+</style>
 
-(function() {
-	init();
-}());
-</script>
+<body>
+	<script>
+
+		var scene, camera, renderer;
+		var geometry, material, mesh, skeletonMesh;
+		var assetManager;
+		var canvas;
+		var lastFrameTime = Date.now() / 1000;
+
+		var baseUrl = "assets/";
+		var skeletonFile = "raptor-pro.json";
+		var atlasFile = skeletonFile.replace("-pro", "").replace("-ess", "").replace(".json", ".atlas");
+		var animation = "walk";
+
+		function init() {
+			// create the THREE.JS camera, scene and renderer (WebGL)
+			var width = window.innerWidth, height = window.innerHeight;
+			camera = new THREE.PerspectiveCamera(75, width / height, 1, 3000);
+			camera.position.y = 100;
+			camera.position.z = 400;
+			scene = new THREE.Scene();
+			renderer = new THREE.WebGLRenderer();
+			renderer.setSize(width, height);
+			document.body.appendChild(renderer.domElement);
+			canvas = renderer.domElement;
+
+			// load the assets required to display the Raptor model
+			assetManager = new spine.threejs.AssetManager(baseUrl);
+			assetManager.loadText(skeletonFile);
+			assetManager.loadTextureAtlas(atlasFile);
+
+			requestAnimationFrame(load);
+		}
+
+		function load(name, scale) {
+			if (assetManager.isLoadingComplete()) {
+				// Add a box to the scene to which we attach the skeleton mesh
+				geometry = new THREE.BoxGeometry(200, 200, 200);
+				material = new THREE.MeshBasicMaterial({ color: 0xff0000, wireframe: true });
+				mesh = new THREE.Mesh(geometry, material);
+				scene.add(mesh);
+
+				// Load the texture atlas using name.atlas and name.png from the AssetManager.
+				// The function passed to TextureAtlas is used to resolve relative paths.
+				atlas = assetManager.require(atlasFile);
+
+				// Create a AtlasAttachmentLoader that resolves region, mesh, boundingbox and path attachments
+				atlasLoader = new spine.AtlasAttachmentLoader(atlas);
+
+				// Create a SkeletonJson instance for parsing the .json file.
+				var skeletonJson = new spine.SkeletonJson(atlasLoader);
+
+				// Set the scale to apply during parsing, parse the file, and create a new skeleton.
+				skeletonJson.scale = 0.4;
+				var skeletonData = skeletonJson.readSkeletonData(assetManager.require(skeletonFile));
+
+				// Create a SkeletonMesh from the data and attach it to the scene
+				skeletonMesh = new spine.threejs.SkeletonMesh(skeletonData, function (parameters) {
+					parameters.depthTest = false;
+				});
+				skeletonMesh.state.setAnimation(0, animation, true);
+				mesh.add(skeletonMesh);
+
+				requestAnimationFrame(render);
+			} else requestAnimationFrame(load);
+		}
+
+		var lastTime = Date.now();
+		function render() {
+			// calculate delta time for animation purposes
+			var now = Date.now() / 1000;
+			var delta = now - lastFrameTime;
+			lastFrameTime = now;
+
+			// resize canvas to use full page, adjust camera/renderer
+			resize();
+
+			// rotate the cube
+			mesh.rotation.x = Math.sin(now) * Math.PI * 0.2;
+			mesh.rotation.y = Math.cos(now) * Math.PI * 0.4;
+
+			// update the animation
+			skeletonMesh.update(delta);
+
+			// render the scene
+			renderer.render(scene, camera);
+
+			requestAnimationFrame(render);
+		}
+
+		function resize() {
+			var w = window.innerWidth;
+			var h = window.innerHeight;
+			if (canvas.width != w || canvas.height != h) {
+				canvas.width = w;
+				canvas.height = h;
+			}
+
+			camera.aspect = w / h;
+			camera.updateProjectionMatrix();
+
+			renderer.setSize(w, h);
+		}
+
+		(function () {
+			init();
+		}());
+	</script>
 </body>
+
 </html>

+ 9372 - 0
spine-ts/spine-threejs/package-lock.json

@@ -0,0 +1,9372 @@
+{
+  "name": "@esotericsoftware/spine-canvas",
+  "version": "4.0.1",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "@esotericsoftware/spine-canvas",
+      "version": "4.0.1",
+      "license": "LicenseRef-LICENSE",
+      "dependencies": {
+        "@types/three": "^0.131.0",
+        "three": "^0.132.0"
+      },
+      "devDependencies": {
+        "npx": "^10.2.2",
+        "rollup": "^2.56.2",
+        "rollup-plugin-dts": "^3.0.2",
+        "typescript": "^4.3.5"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
+      "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "@babel/highlight": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.14.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
+      "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+      "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@types/three": {
+      "version": "0.131.0",
+      "resolved": "https://registry.npmjs.org/@types/three/-/three-0.131.0.tgz",
+      "integrity": "sha512-4VCtsDi6mIId96GcGKG91e2Y6VwU2T0u/YB7vCFJh1kXik93arxn7l9tVZHo1LXOtgCJJDdC+e1fwf2Vu/4ySw=="
+    },
+    "node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/magic-string": {
+      "version": "0.25.7",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "dev": true,
+      "dependencies": {
+        "sourcemap-codec": "^1.4.4"
+      }
+    },
+    "node_modules/npx": {
+      "version": "10.2.2",
+      "resolved": "https://registry.npmjs.org/npx/-/npx-10.2.2.tgz",
+      "integrity": "sha512-eImmySusyeWphzs5iNh791XbZnZG0FSNvM4KSah34pdQQIDsdTDhIwg1sjN3AIVcjGLpbQ/YcfqHPshKZQK1fA==",
+      "bundleDependencies": [
+        "npm",
+        "libnpx"
+      ],
+      "dev": true,
+      "dependencies": {
+        "libnpx": "10.2.2",
+        "npm": "5.1.0"
+      },
+      "bin": {
+        "npx": "index.js"
+      }
+    },
+    "node_modules/npx/node_modules/ansi-align": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/ansi-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/balanced-match": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/boxen": {
+      "version": "1.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-align": "^2.0.0",
+        "camelcase": "^4.0.0",
+        "chalk": "^2.0.1",
+        "cli-boxes": "^1.0.0",
+        "string-width": "^2.0.0",
+        "term-size": "^1.2.0",
+        "widest-line": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/builtins": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/camelcase": {
+      "version": "4.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/capture-stack-trace": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/chalk": {
+      "version": "2.4.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/ci-info": {
+      "version": "1.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/cli-boxes": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/cliui": {
+      "version": "4.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^2.1.1",
+        "strip-ansi": "^4.0.0",
+        "wrap-ansi": "^2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/code-point-at": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/color-convert": {
+      "version": "1.9.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/npx/node_modules/color-name": {
+      "version": "1.1.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/concat-map": {
+      "version": "0.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/configstore": {
+      "version": "3.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dot-prop": "^4.1.0",
+        "graceful-fs": "^4.1.2",
+        "make-dir": "^1.0.0",
+        "unique-string": "^1.0.0",
+        "write-file-atomic": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/create-error-class": {
+      "version": "3.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "capture-stack-trace": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/cross-spawn": {
+      "version": "5.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/npx/node_modules/crypto-random-string": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/decamelize": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/deep-extend": {
+      "version": "0.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/dot-prop": {
+      "version": "4.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/dotenv": {
+      "version": "5.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.6.0"
+      }
+    },
+    "node_modules/npx/node_modules/duplexer3": {
+      "version": "0.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/npx/node_modules/end-of-stream": {
+      "version": "1.4.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/npx/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/npx/node_modules/execa": {
+      "version": "0.7.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^5.0.1",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/find-up": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/get-caller-file": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/get-stream": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/glob": {
+      "version": "7.1.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/npx/node_modules/global-dirs": {
+      "version": "0.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ini": "^1.3.4"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/got": {
+      "version": "6.7.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "create-error-class": "^3.0.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^3.0.0",
+        "is-redirect": "^1.0.0",
+        "is-retry-allowed": "^1.0.0",
+        "is-stream": "^1.0.0",
+        "lowercase-keys": "^1.0.0",
+        "safe-buffer": "^5.0.1",
+        "timed-out": "^4.0.0",
+        "unzip-response": "^2.0.1",
+        "url-parse-lax": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/graceful-fs": {
+      "version": "4.2.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/has-flag": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/hosted-git-info": {
+      "version": "2.8.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/import-lazy": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/npx/node_modules/inflight": {
+      "version": "1.0.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/npx/node_modules/inherits": {
+      "version": "2.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/ini": {
+      "version": "1.3.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/invert-kv": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/is-ci": {
+      "version": "1.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ci-info": "^1.5.0"
+      },
+      "bin": {
+        "is-ci": "bin.js"
+      }
+    },
+    "node_modules/npx/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/is-installed-globally": {
+      "version": "0.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "global-dirs": "^0.1.0",
+        "is-path-inside": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/is-npm": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/is-obj": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/is-path-inside": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-is-inside": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/is-redirect": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/is-retry-allowed": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/is-stream": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/isexe": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/latest-version": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "package-json": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/lcid": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "invert-kv": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/libnpx": {
+      "version": "10.2.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "dotenv": "^5.0.1",
+        "npm-package-arg": "^6.0.0",
+        "rimraf": "^2.6.2",
+        "safe-buffer": "^5.1.0",
+        "update-notifier": "^2.3.0",
+        "which": "^1.3.0",
+        "y18n": "^4.0.0",
+        "yargs": "^11.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/locate-path": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/lowercase-keys": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/npx/node_modules/make-dir": {
+      "version": "1.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/map-age-cleaner": {
+      "version": "0.1.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-defer": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/mem": {
+      "version": "4.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "map-age-cleaner": "^0.1.1",
+        "mimic-fn": "^2.0.0",
+        "p-is-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/minimatch": {
+      "version": "3.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/minimist": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/nice-try": {
+      "version": "1.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm": {
+      "version": "5.1.0",
+      "bundleDependencies": [
+        "abbrev",
+        "ansi-regex",
+        "ansicolors",
+        "ansistyles",
+        "aproba",
+        "archy",
+        "cacache",
+        "call-limit",
+        "bluebird",
+        "chownr",
+        "cmd-shim",
+        "columnify",
+        "config-chain",
+        "debuglog",
+        "detect-indent",
+        "dezalgo",
+        "editor",
+        "fs-vacuum",
+        "fs-write-stream-atomic",
+        "fstream",
+        "fstream-npm",
+        "glob",
+        "graceful-fs",
+        "has-unicode",
+        "hosted-git-info",
+        "iferr",
+        "imurmurhash",
+        "inflight",
+        "inherits",
+        "ini",
+        "init-package-json",
+        "JSONStream",
+        "lazy-property",
+        "lockfile",
+        "lodash._baseindexof",
+        "lodash._baseuniq",
+        "lodash._bindcallback",
+        "lodash._cacheindexof",
+        "lodash._createcache",
+        "lodash._getnative",
+        "lodash.clonedeep",
+        "lodash.restparam",
+        "lodash.union",
+        "lodash.uniq",
+        "lodash.without",
+        "lru-cache",
+        "mkdirp",
+        "mississippi",
+        "move-concurrently",
+        "node-gyp",
+        "nopt",
+        "normalize-package-data",
+        "npm-cache-filename",
+        "npm-install-checks",
+        "npm-package-arg",
+        "npm-registry-client",
+        "npm-user-validate",
+        "npmlog",
+        "once",
+        "opener",
+        "osenv",
+        "pacote",
+        "path-is-inside",
+        "promise-inflight",
+        "read",
+        "read-cmd-shim",
+        "read-installed",
+        "read-package-json",
+        "read-package-tree",
+        "readable-stream",
+        "readdir-scoped-modules",
+        "request",
+        "retry",
+        "rimraf",
+        "semver",
+        "sha",
+        "slide",
+        "sorted-object",
+        "sorted-union-stream",
+        "ssri",
+        "strip-ansi",
+        "tar",
+        "text-table",
+        "uid-number",
+        "umask",
+        "unique-filename",
+        "unpipe",
+        "update-notifier",
+        "uuid",
+        "validate-npm-package-license",
+        "validate-npm-package-name",
+        "which",
+        "wrappy",
+        "write-file-atomic",
+        "safe-buffer",
+        "worker-farm"
+      ],
+      "dev": true,
+      "inBundle": true,
+      "license": "Artistic-2.0",
+      "dependencies": {
+        "abbrev": "~1.1.0",
+        "ansi-regex": "~3.0.0",
+        "ansicolors": "~0.3.2",
+        "ansistyles": "~0.1.3",
+        "aproba": "~1.1.2",
+        "archy": "~1.0.0",
+        "bluebird": "~3.5.0",
+        "cacache": "~9.2.9",
+        "call-limit": "~1.1.0",
+        "chownr": "~1.0.1",
+        "cmd-shim": "~2.0.2",
+        "columnify": "~1.5.4",
+        "config-chain": "~1.1.11",
+        "debuglog": "*",
+        "detect-indent": "~5.0.0",
+        "dezalgo": "~1.0.3",
+        "editor": "~1.0.0",
+        "fs-vacuum": "~1.2.10",
+        "fs-write-stream-atomic": "~1.0.10",
+        "fstream": "~1.0.11",
+        "fstream-npm": "~1.2.1",
+        "glob": "~7.1.2",
+        "graceful-fs": "~4.1.11",
+        "has-unicode": "~2.0.1",
+        "hosted-git-info": "~2.5.0",
+        "iferr": "~0.1.5",
+        "imurmurhash": "*",
+        "inflight": "~1.0.6",
+        "inherits": "~2.0.3",
+        "ini": "~1.3.4",
+        "init-package-json": "~1.10.1",
+        "JSONStream": "~1.3.1",
+        "lazy-property": "~1.0.0",
+        "lockfile": "~1.0.3",
+        "lodash._baseindexof": "*",
+        "lodash._baseuniq": "~4.6.0",
+        "lodash._bindcallback": "*",
+        "lodash._cacheindexof": "*",
+        "lodash._createcache": "*",
+        "lodash._getnative": "*",
+        "lodash.clonedeep": "~4.5.0",
+        "lodash.restparam": "*",
+        "lodash.union": "~4.6.0",
+        "lodash.uniq": "~4.5.0",
+        "lodash.without": "~4.4.0",
+        "lru-cache": "~4.1.1",
+        "mississippi": "~1.3.0",
+        "mkdirp": "~0.5.1",
+        "move-concurrently": "~1.0.1",
+        "node-gyp": "~3.6.2",
+        "nopt": "~4.0.1",
+        "normalize-package-data": "~2.4.0",
+        "npm-cache-filename": "~1.0.2",
+        "npm-install-checks": "~3.0.0",
+        "npm-package-arg": "~5.1.2",
+        "npm-registry-client": "~8.4.0",
+        "npm-user-validate": "~1.0.0",
+        "npmlog": "~4.1.2",
+        "once": "~1.4.0",
+        "opener": "~1.4.3",
+        "osenv": "~0.1.4",
+        "pacote": "~2.7.38",
+        "path-is-inside": "~1.0.2",
+        "promise-inflight": "~1.0.1",
+        "read": "~1.0.7",
+        "read-cmd-shim": "~1.0.1",
+        "read-installed": "~4.0.3",
+        "read-package-json": "~2.0.9",
+        "read-package-tree": "~5.1.6",
+        "readable-stream": "~2.3.2",
+        "readdir-scoped-modules": "*",
+        "request": "~2.81.0",
+        "retry": "~0.10.1",
+        "rimraf": "~2.6.1",
+        "safe-buffer": "~5.1.1",
+        "semver": "~5.3.0",
+        "sha": "~2.0.1",
+        "slide": "~1.1.6",
+        "sorted-object": "~2.0.1",
+        "sorted-union-stream": "~2.1.3",
+        "ssri": "~4.1.6",
+        "strip-ansi": "~4.0.0",
+        "tar": "~2.2.1",
+        "text-table": "~0.2.0",
+        "uid-number": "0.0.6",
+        "umask": "~1.1.0",
+        "unique-filename": "~1.1.0",
+        "unpipe": "~1.0.0",
+        "update-notifier": "~2.2.0",
+        "uuid": "~3.1.0",
+        "validate-npm-package-license": "*",
+        "validate-npm-package-name": "~3.0.0",
+        "which": "~1.2.14",
+        "worker-farm": "~1.3.1",
+        "wrappy": "~1.0.2",
+        "write-file-atomic": "~2.1.0"
+      },
+      "bin": {
+        "npm": "bin/npm-cli.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm-package-arg": {
+      "version": "6.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "hosted-git-info": "^2.7.1",
+        "osenv": "^0.1.5",
+        "semver": "^5.6.0",
+        "validate-npm-package-name": "^3.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm-run-path": {
+      "version": "2.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/abbrev": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/ansi-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/ansicolors": {
+      "version": "0.3.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/ansistyles": {
+      "version": "0.1.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/aproba": {
+      "version": "1.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/archy": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/bluebird": {
+      "version": "3.5.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/cacache": {
+      "version": "9.2.9",
+      "dev": true,
+      "inBundle": true,
+      "license": "CC0-1.0",
+      "dependencies": {
+        "bluebird": "^3.5.0",
+        "chownr": "^1.0.1",
+        "glob": "^7.1.2",
+        "graceful-fs": "^4.1.11",
+        "lru-cache": "^4.1.1",
+        "mississippi": "^1.3.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.1",
+        "ssri": "^4.1.6",
+        "unique-filename": "^1.1.0",
+        "y18n": "^3.2.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/cacache/node_modules/lru-cache": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/cacache/node_modules/lru-cache/node_modules/pseudomap": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/cacache/node_modules/lru-cache/node_modules/yallist": {
+      "version": "2.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/cacache/node_modules/y18n": {
+      "version": "3.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/call-limit": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/chownr": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/cmd-shim": {
+      "version": "2.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "mkdirp": "~0.5.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/columnify": {
+      "version": "1.5.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "strip-ansi": "^3.0.0",
+        "wcwidth": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/columnify/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/columnify/node_modules/wcwidth": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "clone": "^1.0.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/config-chain": {
+      "version": "1.1.11",
+      "dev": true,
+      "inBundle": true,
+      "dependencies": {
+        "ini": "^1.3.4",
+        "proto-list": "~1.2.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/config-chain/node_modules/proto-list": {
+      "version": "1.2.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/debuglog": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/detect-indent": {
+      "version": "5.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/dezalgo": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "asap": "^2.0.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/dezalgo/node_modules/asap": {
+      "version": "2.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/editor": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fs-vacuum": {
+      "version": "1.2.10",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "path-is-inside": "^1.0.1",
+        "rimraf": "^2.5.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fstream": {
+      "version": "1.0.11",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fstream-npm": {
+      "version": "1.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "fstream-ignore": "^1.0.0",
+        "inherits": "2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore": {
+      "version": "1.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "fstream": "^1.0.0",
+        "inherits": "2",
+        "minimatch": "^3.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch": {
+      "version": "3.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion": {
+      "version": "1.1.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map": {
+      "version": "0.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/glob": {
+      "version": "7.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/glob/node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/glob/node_modules/minimatch": {
+      "version": "3.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": {
+      "version": "1.1.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map": {
+      "version": "0.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/glob/node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/graceful-fs": {
+      "version": "4.1.11",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/has-unicode": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/hosted-git-info": {
+      "version": "2.5.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/iferr": {
+      "version": "0.1.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/inflight": {
+      "version": "1.0.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/inherits": {
+      "version": "2.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/ini": {
+      "version": "1.3.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/init-package-json": {
+      "version": "1.10.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.1",
+        "npm-package-arg": "^4.0.0 || ^5.0.0",
+        "promzard": "^0.3.0",
+        "read": "~1.0.1",
+        "read-package-json": "1 || 2",
+        "semver": "2.x || 3.x || 4 || 5",
+        "validate-npm-package-license": "^3.0.1",
+        "validate-npm-package-name": "^3.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/init-package-json/node_modules/promzard": {
+      "version": "0.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "read": "1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/JSONStream": {
+      "version": "1.3.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "(MIT OR Apache-2.0)",
+      "dependencies": {
+        "jsonparse": "^1.2.0",
+        "through": ">=2.2.7 <3"
+      },
+      "bin": {
+        "JSONStream": "index.js"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/JSONStream/node_modules/jsonparse": {
+      "version": "1.3.1",
+      "dev": true,
+      "engines": [
+        "node >= 0.2.0"
+      ],
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/JSONStream/node_modules/through": {
+      "version": "2.3.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lazy-property": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lockfile": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._baseindexof": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._baseuniq": {
+      "version": "4.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "lodash._createset": "~4.0.0",
+        "lodash._root": "~3.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset": {
+      "version": "4.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._baseuniq/node_modules/lodash._root": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._bindcallback": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._cacheindexof": {
+      "version": "3.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._createcache": {
+      "version": "3.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "lodash._getnative": "^3.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash._getnative": {
+      "version": "3.9.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash.clonedeep": {
+      "version": "4.5.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash.restparam": {
+      "version": "3.6.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash.union": {
+      "version": "4.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash.uniq": {
+      "version": "4.5.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lodash.without": {
+      "version": "4.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lru-cache": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lru-cache/node_modules/pseudomap": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/lru-cache/node_modules/yallist": {
+      "version": "2.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi": {
+      "version": "1.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^1.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/concat-stream": {
+      "version": "1.6.0",
+      "dev": true,
+      "engines": [
+        "node >= 0.8"
+      ],
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/concat-stream/node_modules/typedarray": {
+      "version": "0.0.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/duplexify": {
+      "version": "3.5.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/duplexify/node_modules/end-of-stream": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "once": "~1.3.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/duplexify/node_modules/end-of-stream/node_modules/once": {
+      "version": "1.3.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/duplexify/node_modules/stream-shift": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/end-of-stream": {
+      "version": "1.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/flush-write-stream": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/from2": {
+      "version": "2.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/parallel-transform": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "cyclist": "~0.2.2",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/parallel-transform/node_modules/cyclist": {
+      "version": "0.2.2",
+      "dev": true,
+      "inBundle": true
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/pump": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/pumpify": {
+      "version": "1.3.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "duplexify": "^3.1.2",
+        "inherits": "^2.0.1",
+        "pump": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/stream-each": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/stream-each/node_modules/stream-shift": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/through2": {
+      "version": "2.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "^2.1.5",
+        "xtend": "~4.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mississippi/node_modules/through2/node_modules/xtend": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mkdirp": {
+      "version": "0.5.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "0.0.8"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/mkdirp/node_modules/minimist": {
+      "version": "0.0.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/move-concurrently": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/move-concurrently/node_modules/copy-concurrently": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/move-concurrently/node_modules/run-queue": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/node-gyp": {
+      "version": "3.6.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "minimatch": "^3.0.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": "2",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
+      },
+      "bin": {
+        "node-gyp": "bin/node-gyp.js"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": {
+      "version": "3.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/node-gyp/node_modules/minimatch/node_modules/brace-expansion": {
+      "version": "1.1.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/node-gyp/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/node-gyp/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map": {
+      "version": "0.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/node-gyp/node_modules/nopt": {
+      "version": "3.0.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "abbrev": "1"
+      },
+      "bin": {
+        "nopt": "bin/nopt.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/nopt": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "abbrev": "1",
+        "osenv": "^0.1.4"
+      },
+      "bin": {
+        "nopt": "bin/nopt.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/normalize-package-data": {
+      "version": "2.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "is-builtin-module": "^1.0.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/normalize-package-data/node_modules/is-builtin-module": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "builtin-modules": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules": {
+      "version": "1.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npm-cache-filename": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npm-install-checks": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "semver": "^2.3.0 || 3.x || 4 || 5"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npm-package-arg": {
+      "version": "5.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "hosted-git-info": "^2.4.2",
+        "osenv": "^0.1.4",
+        "semver": "^5.1.0",
+        "validate-npm-package-name": "^3.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npm-registry-client": {
+      "version": "8.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "concat-stream": "^1.5.2",
+        "graceful-fs": "^4.1.6",
+        "normalize-package-data": "~1.0.1 || ^2.0.0",
+        "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0",
+        "once": "^1.3.3",
+        "request": "^2.74.0",
+        "retry": "^0.10.0",
+        "semver": "2 >=2.2.1 || 3.x || 4 || 5",
+        "slide": "^1.1.3",
+        "ssri": "^4.1.2"
+      },
+      "optionalDependencies": {
+        "npmlog": "2 || ^3.1.0 || ^4.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npm-registry-client/node_modules/concat-stream": {
+      "version": "1.6.0",
+      "dev": true,
+      "engines": [
+        "node >= 0.8"
+      ],
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/typedarray": {
+      "version": "0.0.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npm-user-validate": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog": {
+      "version": "4.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": {
+      "version": "1.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/console-control-strings": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge": {
+      "version": "2.7.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/object-assign": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit": {
+      "version": "3.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/wide-align": {
+      "version": "1.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^1.0.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/npmlog/node_modules/set-blocking": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/once": {
+      "version": "1.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/opener": {
+      "version": "1.4.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "(WTFPL OR MIT)",
+      "bin": {
+        "opener": "opener.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/osenv": {
+      "version": "0.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/osenv/node_modules/os-homedir": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/osenv/node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote": {
+      "version": "2.7.38",
+      "dev": true,
+      "inBundle": true,
+      "license": "CC0-1.0",
+      "dependencies": {
+        "bluebird": "^3.5.0",
+        "cacache": "^9.2.9",
+        "glob": "^7.1.2",
+        "lru-cache": "^4.1.1",
+        "make-fetch-happen": "^2.4.13",
+        "minimatch": "^3.0.4",
+        "mississippi": "^1.2.0",
+        "normalize-package-data": "^2.4.0",
+        "npm-package-arg": "^5.1.2",
+        "npm-pick-manifest": "^1.0.4",
+        "osenv": "^0.1.4",
+        "promise-inflight": "^1.0.1",
+        "promise-retry": "^1.1.1",
+        "protoduck": "^4.0.0",
+        "safe-buffer": "^5.1.1",
+        "semver": "^5.3.0",
+        "ssri": "^4.1.6",
+        "tar-fs": "^1.15.3",
+        "tar-stream": "^1.5.4",
+        "unique-filename": "^1.1.0",
+        "which": "^1.2.12"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen": {
+      "version": "2.4.13",
+      "dev": true,
+      "inBundle": true,
+      "license": "CC0-1.0",
+      "dependencies": {
+        "agentkeepalive": "^3.3.0",
+        "cacache": "^9.2.9",
+        "http-cache-semantics": "^3.7.3",
+        "http-proxy-agent": "^2.0.0",
+        "https-proxy-agent": "^2.0.0",
+        "lru-cache": "^4.1.1",
+        "mississippi": "^1.2.0",
+        "node-fetch-npm": "^2.0.1",
+        "promise-retry": "^1.1.1",
+        "socks-proxy-agent": "^3.0.0",
+        "ssri": "^4.1.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/agentkeepalive": {
+      "version": "3.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "humanize-ms": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/agentkeepalive/node_modules/humanize-ms": {
+      "version": "1.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/agentkeepalive/node_modules/humanize-ms/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics": {
+      "version": "3.7.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-proxy-agent": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "4",
+        "debug": "2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-proxy-agent/node_modules/agent-base": {
+      "version": "4.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "es6-promisify": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-proxy-agent/node_modules/agent-base/node_modules/es6-promisify": {
+      "version": "5.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "es6-promise": "^4.0.3"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-proxy-agent/node_modules/agent-base/node_modules/es6-promisify/node_modules/es6-promise": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-proxy-agent/node_modules/debug": {
+      "version": "2.6.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-proxy-agent/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^4.1.0",
+        "debug": "^2.4.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent/node_modules/agent-base": {
+      "version": "4.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "es6-promisify": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent/node_modules/agent-base/node_modules/es6-promisify": {
+      "version": "5.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "es6-promise": "^4.0.3"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent/node_modules/agent-base/node_modules/es6-promisify/node_modules/es6-promise": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent/node_modules/debug": {
+      "version": "2.6.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "encoding": "^0.1.11",
+        "json-parse-helpfulerror": "^1.0.3",
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/node_modules/encoding": {
+      "version": "0.1.12",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "iconv-lite": "~0.4.13"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/node_modules/encoding/node_modules/iconv-lite": {
+      "version": "0.4.18",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/node_modules/json-parse-helpfulerror": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "jju": "^1.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/node_modules/json-parse-helpfulerror/node_modules/jju": {
+      "version": "1.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "WTFPL"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/socks-proxy-agent": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^4.0.1",
+        "socks": "^1.1.10"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/socks-proxy-agent/node_modules/agent-base": {
+      "version": "4.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "es6-promisify": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/socks-proxy-agent/node_modules/agent-base/node_modules/es6-promisify": {
+      "version": "5.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "es6-promise": "^4.0.3"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/socks-proxy-agent/node_modules/agent-base/node_modules/es6-promisify/node_modules/es6-promise": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/socks-proxy-agent/node_modules/socks": {
+      "version": "1.1.10",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ip": "^1.1.4",
+        "smart-buffer": "^1.0.13"
+      },
+      "engines": {
+        "node": ">= 0.10.0",
+        "npm": ">= 1.3.5"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/socks-proxy-agent/node_modules/socks/node_modules/ip": {
+      "version": "1.1.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/socks-proxy-agent/node_modules/socks/node_modules/smart-buffer": {
+      "version": "1.1.15",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10.15",
+        "npm": ">= 1.3.5"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/minimatch": {
+      "version": "3.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/minimatch/node_modules/brace-expansion": {
+      "version": "1.1.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map": {
+      "version": "0.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/npm-pick-manifest": {
+      "version": "1.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "CC0-1.0",
+      "dependencies": {
+        "npm-package-arg": "^5.1.2",
+        "semver": "^5.3.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/promise-retry": {
+      "version": "1.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "err-code": "^1.0.0",
+        "retry": "^0.10.0"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/promise-retry/node_modules/err-code": {
+      "version": "1.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/protoduck": {
+      "version": "4.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "CC0-1.0",
+      "dependencies": {
+        "genfun": "^4.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/protoduck/node_modules/genfun": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "CC0-1.0"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/tar-fs": {
+      "version": "1.15.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "chownr": "^1.0.1",
+        "mkdirp": "^0.5.1",
+        "pump": "^1.0.0",
+        "tar-stream": "^1.1.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/tar-fs/node_modules/pump": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/tar-fs/node_modules/pump/node_modules/end-of-stream": {
+      "version": "1.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/tar-stream": {
+      "version": "1.5.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "bl": "^1.0.0",
+        "end-of-stream": "^1.0.0",
+        "readable-stream": "^2.0.0",
+        "xtend": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/tar-stream/node_modules/bl": {
+      "version": "1.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "^2.0.5"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/tar-stream/node_modules/end-of-stream": {
+      "version": "1.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/pacote/node_modules/tar-stream/node_modules/xtend": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/path-is-inside": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "(WTFPL OR MIT)"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/promise-inflight": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read": {
+      "version": "1.0.7",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "mute-stream": "~0.0.4"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read-cmd-shim": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read-installed": {
+      "version": "4.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "debuglog": "^1.0.1",
+        "read-package-json": "^2.0.0",
+        "readdir-scoped-modules": "^1.0.0",
+        "semver": "2 || 3 || 4 || 5",
+        "slide": "~1.1.3",
+        "util-extend": "^1.0.1"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read-installed/node_modules/util-extend": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read-package-json": {
+      "version": "2.0.9",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.1",
+        "json-parse-helpfulerror": "^1.0.2",
+        "normalize-package-data": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "jju": "^1.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju": {
+      "version": "1.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "WTFPL"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read-package-tree": {
+      "version": "5.1.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "debuglog": "^1.0.1",
+        "dezalgo": "^1.0.0",
+        "once": "^1.3.0",
+        "read-package-json": "^2.0.0",
+        "readdir-scoped-modules": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/read/node_modules/mute-stream": {
+      "version": "0.0.7",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/readable-stream": {
+      "version": "2.3.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~1.0.6",
+        "safe-buffer": "~5.1.0",
+        "string_decoder": "~1.0.0",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/readable-stream/node_modules/core-util-is": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/readable-stream/node_modules/isarray": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/readable-stream/node_modules/process-nextick-args": {
+      "version": "1.0.7",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/readable-stream/node_modules/string_decoder": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/readable-stream/node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/readdir-scoped-modules": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "debuglog": "^1.0.1",
+        "dezalgo": "^1.0.0",
+        "graceful-fs": "^4.1.2",
+        "once": "^1.3.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request": {
+      "version": "2.81.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "aws-sign2": "~0.6.0",
+        "aws4": "^1.2.1",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.5",
+        "extend": "~3.0.0",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.1.1",
+        "har-validator": "~4.2.1",
+        "hawk": "~3.1.3",
+        "http-signature": "~1.1.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.7",
+        "oauth-sign": "~0.8.1",
+        "performance-now": "^0.2.0",
+        "qs": "~6.4.0",
+        "safe-buffer": "^5.0.1",
+        "stringstream": "~0.0.4",
+        "tough-cookie": "~2.3.0",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/aws-sign2": {
+      "version": "0.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/aws4": {
+      "version": "1.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/caseless": {
+      "version": "0.12.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/combined-stream": {
+      "version": "1.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/extend": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/forever-agent": {
+      "version": "0.6.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/form-data": {
+      "version": "2.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.5",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 0.12"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/asynckit": {
+      "version": "0.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/har-validator": {
+      "version": "4.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "ajv": "^4.9.1",
+        "har-schema": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/har-validator/node_modules/ajv": {
+      "version": "4.11.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "co": "^4.6.0",
+        "json-stable-stringify": "^1.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co": {
+      "version": "4.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "iojs": ">= 1.0.0",
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "jsonify": "~0.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify": {
+      "version": "0.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "Public Domain",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/har-validator/node_modules/har-schema": {
+      "version": "1.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/hawk": {
+      "version": "3.1.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "boom": "2.x.x",
+        "cryptiles": "2.x.x",
+        "hoek": "2.x.x",
+        "sntp": "1.x.x"
+      },
+      "engines": {
+        "node": ">=0.10.32"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom": {
+      "version": "2.10.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "hoek": "2.x.x"
+      },
+      "engines": {
+        "node": ">=0.10.40"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles": {
+      "version": "2.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "boom": "2.x.x"
+      },
+      "engines": {
+        "node": ">=0.10.40"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek": {
+      "version": "2.16.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.40"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp": {
+      "version": "1.0.9",
+      "dev": true,
+      "inBundle": true,
+      "dependencies": {
+        "hoek": "2.x.x"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature": {
+      "version": "1.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "^0.2.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      },
+      "engines": {
+        "node": ">=0.8",
+        "npm": ">=1.3.7"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus": {
+      "version": "0.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim": {
+      "version": "1.4.0",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.0.2",
+        "json-schema": "0.2.3",
+        "verror": "1.3.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf": {
+      "version": "1.0.2",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "inBundle": true
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema": {
+      "version": "0.2.3",
+      "dev": true,
+      "inBundle": true
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror": {
+      "version": "1.3.6",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "inBundle": true,
+      "dependencies": {
+        "extsprintf": "1.0.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk": {
+      "version": "1.13.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "getpass": "^0.1.1"
+      },
+      "bin": {
+        "sshpk-conv": "bin/sshpk-conv",
+        "sshpk-sign": "bin/sshpk-sign",
+        "sshpk-verify": "bin/sshpk-verify"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      },
+      "optionalDependencies": {
+        "bcrypt-pbkdf": "^1.0.0",
+        "ecc-jsbn": "~0.1.1",
+        "jsbn": "~0.1.0",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1": {
+      "version": "0.2.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause",
+      "optional": true,
+      "dependencies": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash": {
+      "version": "1.14.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn": {
+      "version": "0.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "jsbn": "~0.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass": {
+      "version": "0.1.7",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn": {
+      "version": "0.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl": {
+      "version": "0.14.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "Unlicense",
+      "optional": true
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/is-typedarray": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/isstream": {
+      "version": "0.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/json-stringify-safe": {
+      "version": "5.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/mime-types": {
+      "version": "2.1.15",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "~1.27.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db": {
+      "version": "1.27.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/oauth-sign": {
+      "version": "0.8.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/performance-now": {
+      "version": "0.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/qs": {
+      "version": "6.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/stringstream": {
+      "version": "0.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/tough-cookie": {
+      "version": "2.3.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "punycode": "^1.4.1"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode": {
+      "version": "1.4.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/request/node_modules/tunnel-agent": {
+      "version": "0.6.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/retry": {
+      "version": "0.10.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/rimraf": {
+      "version": "2.6.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.0.5"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/safe-buffer": {
+      "version": "5.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/semver": {
+      "version": "5.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sha": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "(BSD-2-Clause OR MIT)",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/slide": {
+      "version": "1.1.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-object": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "(WTFPL OR MIT)"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream": {
+      "version": "2.1.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "from2": "^1.3.0",
+        "stream-iterate": "^1.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream/node_modules/from2": {
+      "version": "1.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "~2.0.1",
+        "readable-stream": "~1.1.10"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream/node_modules/from2/node_modules/readable-stream": {
+      "version": "1.1.14",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream/node_modules/from2/node_modules/readable-stream/node_modules/core-util-is": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream/node_modules/from2/node_modules/readable-stream/node_modules/isarray": {
+      "version": "0.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream/node_modules/from2/node_modules/readable-stream/node_modules/string_decoder": {
+      "version": "0.10.31",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream/node_modules/stream-iterate": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "^2.1.5",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/sorted-union-stream/node_modules/stream-iterate/node_modules/stream-shift": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/ssri": {
+      "version": "4.1.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "CC0-1.0",
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/strip-ansi/node_modules/ansi-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/tar": {
+      "version": "2.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "block-stream": "*",
+        "fstream": "^1.0.2",
+        "inherits": "2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/tar/node_modules/block-stream": {
+      "version": "0.0.9",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "inherits": "~2.0.0"
+      },
+      "engines": {
+        "node": "0.4 || >=0.5.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/text-table": {
+      "version": "0.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/uid-number": {
+      "version": "0.0.6",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/umask": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/unique-filename": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/unique-filename/node_modules/unique-slug": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/unpipe": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier": {
+      "version": "2.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boxen": "^1.0.0",
+        "chalk": "^1.0.0",
+        "configstore": "^3.0.0",
+        "import-lazy": "^2.1.0",
+        "is-npm": "^1.0.0",
+        "latest-version": "^3.0.0",
+        "semver-diff": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-align": "^2.0.0",
+        "camelcase": "^4.0.0",
+        "chalk": "^1.1.1",
+        "cli-boxes": "^1.0.0",
+        "string-width": "^2.0.0",
+        "term-size": "^0.1.0",
+        "widest-line": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^2.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase": {
+      "version": "4.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/string-width": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size": {
+      "version": "0.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "execa": "^0.4.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa": {
+      "version": "0.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn-async": "^2.1.1",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "path-key": "^1.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async": {
+      "version": "2.2.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "lru-cache": "^4.0.0",
+        "which": "^1.2.8"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "string-width": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk": {
+      "version": "1.1.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^2.2.1",
+        "escape-string-regexp": "^1.0.2",
+        "has-ansi": "^2.0.0",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles": {
+      "version": "2.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/configstore": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dot-prop": "^4.1.0",
+        "graceful-fs": "^4.1.2",
+        "make-dir": "^1.0.0",
+        "unique-string": "^1.0.0",
+        "write-file-atomic": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop": {
+      "version": "4.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/configstore/node_modules/make-dir": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^2.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/configstore/node_modules/make-dir/node_modules/pify": {
+      "version": "2.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "crypto-random-string": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/import-lazy": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/is-npm": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "package-json": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "got": "^6.7.1",
+        "registry-auth-token": "^3.0.1",
+        "registry-url": "^3.0.3",
+        "semver": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got": {
+      "version": "6.7.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "create-error-class": "^3.0.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^3.0.0",
+        "is-redirect": "^1.0.0",
+        "is-retry-allowed": "^1.0.0",
+        "is-stream": "^1.0.0",
+        "lowercase-keys": "^1.0.0",
+        "safe-buffer": "^5.0.1",
+        "timed-out": "^4.0.0",
+        "unzip-response": "^2.0.1",
+        "url-parse-lax": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class": {
+      "version": "3.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "capture-stack-trace": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3": {
+      "version": "0.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream": {
+      "version": "1.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "prepend-http": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http": {
+      "version": "1.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token": {
+      "version": "3.3.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "rc": "^1.1.6",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc": {
+      "version": "1.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+      "dependencies": {
+        "deep-extend": "~0.4.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "bin": {
+        "rc": "index.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend": {
+      "version": "0.4.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "rc": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc": {
+      "version": "1.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+      "dependencies": {
+        "deep-extend": "~0.4.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "bin": {
+        "rc": "index.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend": {
+      "version": "0.4.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/semver-diff": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^5.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/update-notifier/node_modules/xdg-basedir": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/uuid": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/validate-npm-package-license": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-correct": "~1.0.0",
+        "spdx-expression-parse": "~1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-license-ids": "^1.0.2"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids": {
+      "version": "1.2.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "Unlicense"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
+      "version": "1.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "(MIT AND CC-BY-3.0)"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/validate-npm-package-name": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "builtins": "^1.0.3"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/validate-npm-package-name/node_modules/builtins": {
+      "version": "1.0.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/which": {
+      "version": "1.2.14",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/which/node_modules/isexe": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/worker-farm": {
+      "version": "1.3.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "errno": ">=0.1.1 <0.2.0-0",
+        "xtend": ">=4.0.0 <4.1.0-0"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/worker-farm/node_modules/errno": {
+      "version": "0.1.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "prr": "~0.0.0"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/worker-farm/node_modules/errno/node_modules/prr": {
+      "version": "0.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/worker-farm/node_modules/xtend": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/npx/node_modules/npm/node_modules/wrappy": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/npm/node_modules/write-file-atomic": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "imurmurhash": "^0.1.4",
+        "slide": "^1.1.5"
+      }
+    },
+    "node_modules/npx/node_modules/number-is-nan": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/once": {
+      "version": "1.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/npx/node_modules/os-homedir": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/os-locale": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "execa": "^1.0.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/os-locale/node_modules/cross-spawn": {
+      "version": "6.0.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "engines": {
+        "node": ">=4.8"
+      }
+    },
+    "node_modules/npx/node_modules/os-locale/node_modules/execa": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/os-locale/node_modules/get-stream": {
+      "version": "4.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/osenv": {
+      "version": "0.1.5",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "node_modules/npx/node_modules/p-defer": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/p-finally": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/p-is-promise": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/npx/node_modules/p-limit": {
+      "version": "1.3.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/p-locate": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/p-try": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/package-json": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "got": "^6.7.1",
+        "registry-auth-token": "^3.0.1",
+        "registry-url": "^3.0.3",
+        "semver": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/path-exists": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/path-is-inside": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "(WTFPL OR MIT)"
+    },
+    "node_modules/npx/node_modules/path-key": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/pify": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/prepend-http": {
+      "version": "1.0.4",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/pseudomap": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/pump": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/npx/node_modules/rc": {
+      "version": "1.2.8",
+      "dev": true,
+      "inBundle": true,
+      "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+      "dependencies": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "bin": {
+        "rc": "cli.js"
+      }
+    },
+    "node_modules/npx/node_modules/registry-auth-token": {
+      "version": "3.4.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "rc": "^1.1.6",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/npx/node_modules/registry-url": {
+      "version": "3.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "rc": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/require-directory": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/require-main-filename": {
+      "version": "1.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/rimraf": {
+      "version": "2.7.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/npx/node_modules/safe-buffer": {
+      "version": "5.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT"
+    },
+    "node_modules/npx/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/npx/node_modules/semver-diff": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^5.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/set-blocking": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/shebang-command": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/signal-exit": {
+      "version": "3.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/string-width": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/strip-eof": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/supports-color": {
+      "version": "5.5.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/term-size": {
+      "version": "1.2.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "execa": "^0.7.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/timed-out": {
+      "version": "4.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/unique-string": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "crypto-random-string": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/unzip-response": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/update-notifier": {
+      "version": "2.5.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boxen": "^1.2.1",
+        "chalk": "^2.0.1",
+        "configstore": "^3.0.0",
+        "import-lazy": "^2.1.0",
+        "is-ci": "^1.0.10",
+        "is-installed-globally": "^0.1.0",
+        "is-npm": "^1.0.0",
+        "latest-version": "^3.0.0",
+        "semver-diff": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/url-parse-lax": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "prepend-http": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/validate-npm-package-name": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "builtins": "^1.0.3"
+      }
+    },
+    "node_modules/npx/node_modules/which": {
+      "version": "1.3.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/npx/node_modules/which-module": {
+      "version": "2.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/widest-line": {
+      "version": "2.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "string-width": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/wrap-ansi": {
+      "version": "2.1.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/wrap-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/wrap-ansi/node_modules/string-width": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/wrap-ansi/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npx/node_modules/wrappy": {
+      "version": "1.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/write-file-atomic": {
+      "version": "2.4.3",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^3.0.2"
+      }
+    },
+    "node_modules/npx/node_modules/xdg-basedir": {
+      "version": "3.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npx/node_modules/y18n": {
+      "version": "4.0.0",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/yallist": {
+      "version": "2.1.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/npx/node_modules/yargs": {
+      "version": "11.1.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^4.0.0",
+        "decamelize": "^1.1.1",
+        "find-up": "^2.1.0",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^3.1.0",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^2.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^3.2.1",
+        "yargs-parser": "^9.0.2"
+      }
+    },
+    "node_modules/npx/node_modules/yargs-parser": {
+      "version": "9.0.2",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC",
+      "dependencies": {
+        "camelcase": "^4.1.0"
+      }
+    },
+    "node_modules/npx/node_modules/yargs/node_modules/y18n": {
+      "version": "3.2.1",
+      "dev": true,
+      "inBundle": true,
+      "license": "ISC"
+    },
+    "node_modules/rollup": {
+      "version": "2.56.3",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz",
+      "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/rollup-plugin-dts": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-3.0.2.tgz",
+      "integrity": "sha512-hswlsdWu/x7k5pXzaLP6OvKRKcx8Bzprksz9i9mUe72zvt8LvqAb/AZpzs6FkLgmyRaN8B6rUQOVtzA3yEt9Yw==",
+      "dev": true,
+      "dependencies": {
+        "magic-string": "^0.25.7"
+      },
+      "engines": {
+        "node": ">=v12.22.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/Swatinem"
+      },
+      "optionalDependencies": {
+        "@babel/code-frame": "^7.12.13"
+      },
+      "peerDependencies": {
+        "rollup": "^2.48.0",
+        "typescript": "^4.2.4"
+      }
+    },
+    "node_modules/sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "dev": true
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/three": {
+      "version": "0.132.0",
+      "resolved": "https://registry.npmjs.org/three/-/three-0.132.0.tgz",
+      "integrity": "sha512-kv4WeP3O5/8mcHyuGYnqBQYdEfzSz9kEkq4H/9J966epNlGSVJ8gYC3SwT9qIITdgC0OvLr3zPltCS4dUyg2eg=="
+    },
+    "node_modules/typescript": {
+      "version": "4.3.5",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+      "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+      "dev": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=4.2.0"
+      }
+    }
+  },
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
+      "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "@babel/highlight": "^7.14.5"
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.14.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
+      "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
+      "dev": true,
+      "optional": true
+    },
+    "@babel/highlight": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+      "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@types/three": {
+      "version": "0.131.0",
+      "resolved": "https://registry.npmjs.org/@types/three/-/three-0.131.0.tgz",
+      "integrity": "sha512-4VCtsDi6mIId96GcGKG91e2Y6VwU2T0u/YB7vCFJh1kXik93arxn7l9tVZHo1LXOtgCJJDdC+e1fwf2Vu/4ySw=="
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true,
+      "optional": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true,
+      "optional": true
+    },
+    "fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "optional": true
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true,
+      "optional": true
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true,
+      "optional": true
+    },
+    "magic-string": {
+      "version": "0.25.7",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "dev": true,
+      "requires": {
+        "sourcemap-codec": "^1.4.4"
+      }
+    },
+    "npx": {
+      "version": "10.2.2",
+      "resolved": "https://registry.npmjs.org/npx/-/npx-10.2.2.tgz",
+      "integrity": "sha512-eImmySusyeWphzs5iNh791XbZnZG0FSNvM4KSah34pdQQIDsdTDhIwg1sjN3AIVcjGLpbQ/YcfqHPshKZQK1fA==",
+      "dev": true,
+      "requires": {
+        "libnpx": "10.2.2",
+        "npm": "5.1.0"
+      },
+      "dependencies": {
+        "ansi-align": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "string-width": "^2.0.0"
+          }
+        },
+        "ansi-regex": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "boxen": {
+          "version": "1.3.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-align": "^2.0.0",
+            "camelcase": "^4.0.0",
+            "chalk": "^2.0.1",
+            "cli-boxes": "^1.0.0",
+            "string-width": "^2.0.0",
+            "term-size": "^1.2.0",
+            "widest-line": "^2.0.0"
+          }
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "builtins": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true
+        },
+        "camelcase": {
+          "version": "4.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "capture-stack-trace": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "ci-info": {
+          "version": "1.6.0",
+          "bundled": true,
+          "dev": true
+        },
+        "cli-boxes": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "cliui": {
+          "version": "4.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.0.0"
+          }
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3",
+          "bundled": true,
+          "dev": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "configstore": {
+          "version": "3.1.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.0",
+            "graceful-fs": "^4.1.2",
+            "make-dir": "^1.0.0",
+            "unique-string": "^1.0.0",
+            "write-file-atomic": "^2.0.0",
+            "xdg-basedir": "^3.0.0"
+          }
+        },
+        "create-error-class": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "capture-stack-trace": "^1.0.0"
+          }
+        },
+        "cross-spawn": {
+          "version": "5.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "crypto-random-string": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "decamelize": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true
+        },
+        "deep-extend": {
+          "version": "0.6.0",
+          "bundled": true,
+          "dev": true
+        },
+        "dot-prop": {
+          "version": "4.2.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "is-obj": "^1.0.0"
+          }
+        },
+        "dotenv": {
+          "version": "5.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "duplexer3": {
+          "version": "0.1.4",
+          "bundled": true,
+          "dev": true
+        },
+        "end-of-stream": {
+          "version": "1.4.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "once": "^1.4.0"
+          }
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5",
+          "bundled": true,
+          "dev": true
+        },
+        "execa": {
+          "version": "0.7.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "get-caller-file": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true
+        },
+        "get-stream": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "glob": {
+          "version": "7.1.6",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "global-dirs": {
+          "version": "0.1.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ini": "^1.3.4"
+          }
+        },
+        "got": {
+          "version": "6.7.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "create-error-class": "^3.0.0",
+            "duplexer3": "^0.1.4",
+            "get-stream": "^3.0.0",
+            "is-redirect": "^1.0.0",
+            "is-retry-allowed": "^1.0.0",
+            "is-stream": "^1.0.0",
+            "lowercase-keys": "^1.0.0",
+            "safe-buffer": "^5.0.1",
+            "timed-out": "^4.0.0",
+            "unzip-response": "^2.0.1",
+            "url-parse-lax": "^1.0.0"
+          }
+        },
+        "graceful-fs": {
+          "version": "4.2.3",
+          "bundled": true,
+          "dev": true
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "hosted-git-info": {
+          "version": "2.8.5",
+          "bundled": true,
+          "dev": true
+        },
+        "import-lazy": {
+          "version": "2.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "imurmurhash": {
+          "version": "0.1.4",
+          "bundled": true,
+          "dev": true
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
+        },
+        "inherits": {
+          "version": "2.0.4",
+          "bundled": true,
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "dev": true
+        },
+        "invert-kv": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "is-ci": {
+          "version": "1.2.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ci-info": "^1.5.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "is-installed-globally": {
+          "version": "0.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "global-dirs": "^0.1.0",
+            "is-path-inside": "^1.0.0"
+          }
+        },
+        "is-npm": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "is-obj": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "is-path-inside": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "path-is-inside": "^1.0.1"
+          }
+        },
+        "is-redirect": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "is-retry-allowed": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true
+        },
+        "is-stream": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "isexe": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "latest-version": {
+          "version": "3.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "package-json": "^4.0.0"
+          }
+        },
+        "lcid": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "invert-kv": "^2.0.0"
+          }
+        },
+        "libnpx": {
+          "version": "10.2.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "dotenv": "^5.0.1",
+            "npm-package-arg": "^6.0.0",
+            "rimraf": "^2.6.2",
+            "safe-buffer": "^5.1.0",
+            "update-notifier": "^2.3.0",
+            "which": "^1.3.0",
+            "y18n": "^4.0.0",
+            "yargs": "^11.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "lowercase-keys": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "make-dir": {
+          "version": "1.3.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "pify": "^3.0.0"
+          }
+        },
+        "map-age-cleaner": {
+          "version": "0.1.3",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "p-defer": "^1.0.0"
+          }
+        },
+        "mem": {
+          "version": "4.3.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "map-age-cleaner": "^0.1.1",
+            "mimic-fn": "^2.0.0",
+            "p-is-promise": "^2.0.0"
+          }
+        },
+        "mimic-fn": {
+          "version": "2.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true
+        },
+        "nice-try": {
+          "version": "1.0.5",
+          "bundled": true,
+          "dev": true
+        },
+        "npm": {
+          "version": "5.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "abbrev": "~1.1.0",
+            "ansi-regex": "~3.0.0",
+            "ansicolors": "~0.3.2",
+            "ansistyles": "~0.1.3",
+            "aproba": "~1.1.2",
+            "archy": "~1.0.0",
+            "bluebird": "~3.5.0",
+            "cacache": "~9.2.9",
+            "call-limit": "~1.1.0",
+            "chownr": "~1.0.1",
+            "cmd-shim": "~2.0.2",
+            "columnify": "~1.5.4",
+            "config-chain": "~1.1.11",
+            "debuglog": "*",
+            "detect-indent": "~5.0.0",
+            "dezalgo": "~1.0.3",
+            "editor": "~1.0.0",
+            "fs-vacuum": "~1.2.10",
+            "fs-write-stream-atomic": "~1.0.10",
+            "fstream": "~1.0.11",
+            "fstream-npm": "~1.2.1",
+            "glob": "~7.1.2",
+            "graceful-fs": "~4.1.11",
+            "has-unicode": "~2.0.1",
+            "hosted-git-info": "~2.5.0",
+            "iferr": "~0.1.5",
+            "imurmurhash": "*",
+            "inflight": "~1.0.6",
+            "inherits": "~2.0.3",
+            "ini": "~1.3.4",
+            "init-package-json": "~1.10.1",
+            "JSONStream": "~1.3.1",
+            "lazy-property": "~1.0.0",
+            "lockfile": "~1.0.3",
+            "lodash._baseindexof": "*",
+            "lodash._baseuniq": "~4.6.0",
+            "lodash._bindcallback": "*",
+            "lodash._cacheindexof": "*",
+            "lodash._createcache": "*",
+            "lodash._getnative": "*",
+            "lodash.clonedeep": "~4.5.0",
+            "lodash.restparam": "*",
+            "lodash.union": "~4.6.0",
+            "lodash.uniq": "~4.5.0",
+            "lodash.without": "~4.4.0",
+            "lru-cache": "~4.1.1",
+            "mississippi": "~1.3.0",
+            "mkdirp": "~0.5.1",
+            "move-concurrently": "~1.0.1",
+            "node-gyp": "~3.6.2",
+            "nopt": "~4.0.1",
+            "normalize-package-data": "~2.4.0",
+            "npm-cache-filename": "~1.0.2",
+            "npm-install-checks": "~3.0.0",
+            "npm-package-arg": "~5.1.2",
+            "npm-registry-client": "~8.4.0",
+            "npm-user-validate": "~1.0.0",
+            "npmlog": "~4.1.2",
+            "once": "~1.4.0",
+            "opener": "~1.4.3",
+            "osenv": "~0.1.4",
+            "pacote": "~2.7.38",
+            "path-is-inside": "~1.0.2",
+            "promise-inflight": "~1.0.1",
+            "read": "~1.0.7",
+            "read-cmd-shim": "~1.0.1",
+            "read-installed": "~4.0.3",
+            "read-package-json": "~2.0.9",
+            "read-package-tree": "~5.1.6",
+            "readable-stream": "~2.3.2",
+            "readdir-scoped-modules": "*",
+            "request": "~2.81.0",
+            "retry": "~0.10.1",
+            "rimraf": "~2.6.1",
+            "safe-buffer": "~5.1.1",
+            "semver": "~5.3.0",
+            "sha": "~2.0.1",
+            "slide": "~1.1.6",
+            "sorted-object": "~2.0.1",
+            "sorted-union-stream": "~2.1.3",
+            "ssri": "~4.1.6",
+            "strip-ansi": "~4.0.0",
+            "tar": "~2.2.1",
+            "text-table": "~0.2.0",
+            "uid-number": "0.0.6",
+            "umask": "~1.1.0",
+            "unique-filename": "~1.1.0",
+            "unpipe": "~1.0.0",
+            "update-notifier": "~2.2.0",
+            "uuid": "~3.1.0",
+            "validate-npm-package-license": "*",
+            "validate-npm-package-name": "~3.0.0",
+            "which": "~1.2.14",
+            "worker-farm": "~1.3.1",
+            "wrappy": "~1.0.2",
+            "write-file-atomic": "~2.1.0"
+          },
+          "dependencies": {
+            "abbrev": {
+              "version": "1.1.0",
+              "bundled": true,
+              "dev": true
+            },
+            "ansi-regex": {
+              "version": "3.0.0",
+              "bundled": true,
+              "dev": true
+            },
+            "ansicolors": {
+              "version": "0.3.2",
+              "bundled": true,
+              "dev": true
+            },
+            "ansistyles": {
+              "version": "0.1.3",
+              "bundled": true,
+              "dev": true
+            },
+            "aproba": {
+              "version": "1.1.2",
+              "bundled": true,
+              "dev": true
+            },
+            "archy": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true
+            },
+            "bluebird": {
+              "version": "3.5.0",
+              "bundled": true,
+              "dev": true
+            },
+            "cacache": {
+              "version": "9.2.9",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "bluebird": "^3.5.0",
+                "chownr": "^1.0.1",
+                "glob": "^7.1.2",
+                "graceful-fs": "^4.1.11",
+                "lru-cache": "^4.1.1",
+                "mississippi": "^1.3.0",
+                "mkdirp": "^0.5.1",
+                "move-concurrently": "^1.0.1",
+                "promise-inflight": "^1.0.1",
+                "rimraf": "^2.6.1",
+                "ssri": "^4.1.6",
+                "unique-filename": "^1.1.0",
+                "y18n": "^3.2.1"
+              },
+              "dependencies": {
+                "lru-cache": {
+                  "version": "4.1.1",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "pseudomap": "^1.0.2",
+                    "yallist": "^2.1.2"
+                  },
+                  "dependencies": {
+                    "pseudomap": {
+                      "version": "1.0.2",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "yallist": {
+                      "version": "2.1.2",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "y18n": {
+                  "version": "3.2.1",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "call-limit": {
+              "version": "1.1.0",
+              "bundled": true,
+              "dev": true
+            },
+            "chownr": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true
+            },
+            "cmd-shim": {
+              "version": "2.0.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "graceful-fs": "^4.1.2",
+                "mkdirp": "~0.5.0"
+              }
+            },
+            "columnify": {
+              "version": "1.5.4",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "strip-ansi": "^3.0.0",
+                "wcwidth": "^1.0.0"
+              },
+              "dependencies": {
+                "strip-ansi": {
+                  "version": "3.0.1",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "ansi-regex": "^2.0.0"
+                  },
+                  "dependencies": {
+                    "ansi-regex": {
+                      "version": "2.1.1",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "wcwidth": {
+                  "version": "1.0.1",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "defaults": "^1.0.3"
+                  },
+                  "dependencies": {
+                    "defaults": {
+                      "version": "1.0.3",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "clone": "^1.0.2"
+                      },
+                      "dependencies": {
+                        "clone": {
+                          "version": "1.0.2",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            },
+            "config-chain": {
+              "version": "1.1.11",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "ini": "^1.3.4",
+                "proto-list": "~1.2.1"
+              },
+              "dependencies": {
+                "proto-list": {
+                  "version": "1.2.4",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "debuglog": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true
+            },
+            "detect-indent": {
+              "version": "5.0.0",
+              "bundled": true,
+              "dev": true
+            },
+            "dezalgo": {
+              "version": "1.0.3",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "asap": "^2.0.0",
+                "wrappy": "1"
+              },
+              "dependencies": {
+                "asap": {
+                  "version": "2.0.5",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "editor": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true
+            },
+            "fs-vacuum": {
+              "version": "1.2.10",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "graceful-fs": "^4.1.2",
+                "path-is-inside": "^1.0.1",
+                "rimraf": "^2.5.2"
+              }
+            },
+            "fs-write-stream-atomic": {
+              "version": "1.0.10",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "graceful-fs": "^4.1.2",
+                "iferr": "^0.1.5",
+                "imurmurhash": "^0.1.4",
+                "readable-stream": "1 || 2"
+              }
+            },
+            "fstream": {
+              "version": "1.0.11",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "graceful-fs": "^4.1.2",
+                "inherits": "~2.0.0",
+                "mkdirp": ">=0.5 0",
+                "rimraf": "2"
+              }
+            },
+            "fstream-npm": {
+              "version": "1.2.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "fstream-ignore": "^1.0.0",
+                "inherits": "2"
+              },
+              "dependencies": {
+                "fstream-ignore": {
+                  "version": "1.0.5",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "fstream": "^1.0.0",
+                    "inherits": "2",
+                    "minimatch": "^3.0.0"
+                  },
+                  "dependencies": {
+                    "minimatch": {
+                      "version": "3.0.4",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "brace-expansion": "^1.1.7"
+                      },
+                      "dependencies": {
+                        "brace-expansion": {
+                          "version": "1.1.8",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "balanced-match": "^1.0.0",
+                            "concat-map": "0.0.1"
+                          },
+                          "dependencies": {
+                            "balanced-match": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "concat-map": {
+                              "version": "0.0.1",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            },
+            "glob": {
+              "version": "7.1.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.0.4",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+              },
+              "dependencies": {
+                "fs.realpath": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "minimatch": {
+                  "version": "3.0.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "brace-expansion": "^1.1.7"
+                  },
+                  "dependencies": {
+                    "brace-expansion": {
+                      "version": "1.1.8",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "balanced-match": "^1.0.0",
+                        "concat-map": "0.0.1"
+                      },
+                      "dependencies": {
+                        "balanced-match": {
+                          "version": "1.0.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "concat-map": {
+                          "version": "0.0.1",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "path-is-absolute": {
+                  "version": "1.0.1",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "graceful-fs": {
+              "version": "4.1.11",
+              "bundled": true,
+              "dev": true
+            },
+            "has-unicode": {
+              "version": "2.0.1",
+              "bundled": true,
+              "dev": true
+            },
+            "hosted-git-info": {
+              "version": "2.5.0",
+              "bundled": true,
+              "dev": true
+            },
+            "iferr": {
+              "version": "0.1.5",
+              "bundled": true,
+              "dev": true
+            },
+            "imurmurhash": {
+              "version": "0.1.4",
+              "bundled": true,
+              "dev": true
+            },
+            "inflight": {
+              "version": "1.0.6",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "once": "^1.3.0",
+                "wrappy": "1"
+              }
+            },
+            "inherits": {
+              "version": "2.0.3",
+              "bundled": true,
+              "dev": true
+            },
+            "ini": {
+              "version": "1.3.4",
+              "bundled": true,
+              "dev": true
+            },
+            "init-package-json": {
+              "version": "1.10.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "glob": "^7.1.1",
+                "npm-package-arg": "^4.0.0 || ^5.0.0",
+                "promzard": "^0.3.0",
+                "read": "~1.0.1",
+                "read-package-json": "1 || 2",
+                "semver": "2.x || 3.x || 4 || 5",
+                "validate-npm-package-license": "^3.0.1",
+                "validate-npm-package-name": "^3.0.0"
+              },
+              "dependencies": {
+                "promzard": {
+                  "version": "0.3.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "read": "1"
+                  }
+                }
+              }
+            },
+            "JSONStream": {
+              "version": "1.3.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "jsonparse": "^1.2.0",
+                "through": ">=2.2.7 <3"
+              },
+              "dependencies": {
+                "jsonparse": {
+                  "version": "1.3.1",
+                  "bundled": true,
+                  "dev": true
+                },
+                "through": {
+                  "version": "2.3.8",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "lazy-property": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true
+            },
+            "lockfile": {
+              "version": "1.0.3",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash._baseindexof": {
+              "version": "3.1.0",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash._baseuniq": {
+              "version": "4.6.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "lodash._createset": "~4.0.0",
+                "lodash._root": "~3.0.0"
+              },
+              "dependencies": {
+                "lodash._createset": {
+                  "version": "4.0.3",
+                  "bundled": true,
+                  "dev": true
+                },
+                "lodash._root": {
+                  "version": "3.0.1",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "lodash._bindcallback": {
+              "version": "3.0.1",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash._cacheindexof": {
+              "version": "3.0.2",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash._createcache": {
+              "version": "3.1.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "lodash._getnative": "^3.0.0"
+              }
+            },
+            "lodash._getnative": {
+              "version": "3.9.1",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash.clonedeep": {
+              "version": "4.5.0",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash.restparam": {
+              "version": "3.6.1",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash.union": {
+              "version": "4.6.0",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash.uniq": {
+              "version": "4.5.0",
+              "bundled": true,
+              "dev": true
+            },
+            "lodash.without": {
+              "version": "4.4.0",
+              "bundled": true,
+              "dev": true
+            },
+            "lru-cache": {
+              "version": "4.1.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "pseudomap": "^1.0.2",
+                "yallist": "^2.1.2"
+              },
+              "dependencies": {
+                "pseudomap": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true
+                },
+                "yallist": {
+                  "version": "2.1.2",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "mississippi": {
+              "version": "1.3.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "concat-stream": "^1.5.0",
+                "duplexify": "^3.4.2",
+                "end-of-stream": "^1.1.0",
+                "flush-write-stream": "^1.0.0",
+                "from2": "^2.1.0",
+                "parallel-transform": "^1.1.0",
+                "pump": "^1.0.0",
+                "pumpify": "^1.3.3",
+                "stream-each": "^1.1.0",
+                "through2": "^2.0.0"
+              },
+              "dependencies": {
+                "concat-stream": {
+                  "version": "1.6.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "inherits": "^2.0.3",
+                    "readable-stream": "^2.2.2",
+                    "typedarray": "^0.0.6"
+                  },
+                  "dependencies": {
+                    "typedarray": {
+                      "version": "0.0.6",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "duplexify": {
+                  "version": "3.5.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "end-of-stream": "1.0.0",
+                    "inherits": "^2.0.1",
+                    "readable-stream": "^2.0.0",
+                    "stream-shift": "^1.0.0"
+                  },
+                  "dependencies": {
+                    "end-of-stream": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "once": "~1.3.0"
+                      },
+                      "dependencies": {
+                        "once": {
+                          "version": "1.3.3",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "wrappy": "1"
+                          }
+                        }
+                      }
+                    },
+                    "stream-shift": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "end-of-stream": {
+                  "version": "1.4.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "once": "^1.4.0"
+                  }
+                },
+                "flush-write-stream": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "inherits": "^2.0.1",
+                    "readable-stream": "^2.0.4"
+                  }
+                },
+                "from2": {
+                  "version": "2.3.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "inherits": "^2.0.1",
+                    "readable-stream": "^2.0.0"
+                  }
+                },
+                "parallel-transform": {
+                  "version": "1.1.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "cyclist": "~0.2.2",
+                    "inherits": "^2.0.3",
+                    "readable-stream": "^2.1.5"
+                  },
+                  "dependencies": {
+                    "cyclist": {
+                      "version": "0.2.2",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "pump": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "end-of-stream": "^1.1.0",
+                    "once": "^1.3.1"
+                  }
+                },
+                "pumpify": {
+                  "version": "1.3.5",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "duplexify": "^3.1.2",
+                    "inherits": "^2.0.1",
+                    "pump": "^1.0.0"
+                  }
+                },
+                "stream-each": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "end-of-stream": "^1.1.0",
+                    "stream-shift": "^1.0.0"
+                  },
+                  "dependencies": {
+                    "stream-shift": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "through2": {
+                  "version": "2.0.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "readable-stream": "^2.1.5",
+                    "xtend": "~4.0.1"
+                  },
+                  "dependencies": {
+                    "xtend": {
+                      "version": "4.0.1",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "mkdirp": {
+              "version": "0.5.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "minimist": "0.0.8"
+              },
+              "dependencies": {
+                "minimist": {
+                  "version": "0.0.8",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "move-concurrently": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "aproba": "^1.1.1",
+                "copy-concurrently": "^1.0.0",
+                "fs-write-stream-atomic": "^1.0.8",
+                "mkdirp": "^0.5.1",
+                "rimraf": "^2.5.4",
+                "run-queue": "^1.0.3"
+              },
+              "dependencies": {
+                "copy-concurrently": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "aproba": "^1.1.1",
+                    "fs-write-stream-atomic": "^1.0.8",
+                    "iferr": "^0.1.5",
+                    "mkdirp": "^0.5.1",
+                    "rimraf": "^2.5.4",
+                    "run-queue": "^1.0.0"
+                  }
+                },
+                "run-queue": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "aproba": "^1.1.1"
+                  }
+                }
+              }
+            },
+            "node-gyp": {
+              "version": "3.6.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "fstream": "^1.0.0",
+                "glob": "^7.0.3",
+                "graceful-fs": "^4.1.2",
+                "minimatch": "^3.0.2",
+                "mkdirp": "^0.5.0",
+                "nopt": "2 || 3",
+                "npmlog": "0 || 1 || 2 || 3 || 4",
+                "osenv": "0",
+                "request": "2",
+                "rimraf": "2",
+                "semver": "~5.3.0",
+                "tar": "^2.0.0",
+                "which": "1"
+              },
+              "dependencies": {
+                "minimatch": {
+                  "version": "3.0.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "brace-expansion": "^1.1.7"
+                  },
+                  "dependencies": {
+                    "brace-expansion": {
+                      "version": "1.1.8",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "balanced-match": "^1.0.0",
+                        "concat-map": "0.0.1"
+                      },
+                      "dependencies": {
+                        "balanced-match": {
+                          "version": "1.0.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "concat-map": {
+                          "version": "0.0.1",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "nopt": {
+                  "version": "3.0.6",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "abbrev": "1"
+                  }
+                }
+              }
+            },
+            "nopt": {
+              "version": "4.0.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "abbrev": "1",
+                "osenv": "^0.1.4"
+              }
+            },
+            "normalize-package-data": {
+              "version": "2.4.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "hosted-git-info": "^2.1.4",
+                "is-builtin-module": "^1.0.0",
+                "semver": "2 || 3 || 4 || 5",
+                "validate-npm-package-license": "^3.0.1"
+              },
+              "dependencies": {
+                "is-builtin-module": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "builtin-modules": "^1.0.0"
+                  },
+                  "dependencies": {
+                    "builtin-modules": {
+                      "version": "1.1.1",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "npm-cache-filename": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true
+            },
+            "npm-install-checks": {
+              "version": "3.0.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "semver": "^2.3.0 || 3.x || 4 || 5"
+              }
+            },
+            "npm-package-arg": {
+              "version": "5.1.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "hosted-git-info": "^2.4.2",
+                "osenv": "^0.1.4",
+                "semver": "^5.1.0",
+                "validate-npm-package-name": "^3.0.0"
+              }
+            },
+            "npm-registry-client": {
+              "version": "8.4.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "concat-stream": "^1.5.2",
+                "graceful-fs": "^4.1.6",
+                "normalize-package-data": "~1.0.1 || ^2.0.0",
+                "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0",
+                "npmlog": "2 || ^3.1.0 || ^4.0.0",
+                "once": "^1.3.3",
+                "request": "^2.74.0",
+                "retry": "^0.10.0",
+                "semver": "2 >=2.2.1 || 3.x || 4 || 5",
+                "slide": "^1.1.3",
+                "ssri": "^4.1.2"
+              },
+              "dependencies": {
+                "concat-stream": {
+                  "version": "1.6.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "inherits": "^2.0.3",
+                    "readable-stream": "^2.2.2",
+                    "typedarray": "^0.0.6"
+                  },
+                  "dependencies": {
+                    "typedarray": {
+                      "version": "0.0.6",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "npm-user-validate": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true
+            },
+            "npmlog": {
+              "version": "4.1.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "are-we-there-yet": "~1.1.2",
+                "console-control-strings": "~1.1.0",
+                "gauge": "~2.7.3",
+                "set-blocking": "~2.0.0"
+              },
+              "dependencies": {
+                "are-we-there-yet": {
+                  "version": "1.1.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "delegates": "^1.0.0",
+                    "readable-stream": "^2.0.6"
+                  },
+                  "dependencies": {
+                    "delegates": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "console-control-strings": {
+                  "version": "1.1.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "gauge": {
+                  "version": "2.7.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "aproba": "^1.0.3",
+                    "console-control-strings": "^1.0.0",
+                    "has-unicode": "^2.0.0",
+                    "object-assign": "^4.1.0",
+                    "signal-exit": "^3.0.0",
+                    "string-width": "^1.0.1",
+                    "strip-ansi": "^3.0.1",
+                    "wide-align": "^1.1.0"
+                  },
+                  "dependencies": {
+                    "object-assign": {
+                      "version": "4.1.1",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "signal-exit": {
+                      "version": "3.0.2",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "string-width": {
+                      "version": "1.0.2",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "code-point-at": "^1.0.0",
+                        "is-fullwidth-code-point": "^1.0.0",
+                        "strip-ansi": "^3.0.0"
+                      },
+                      "dependencies": {
+                        "code-point-at": {
+                          "version": "1.1.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "is-fullwidth-code-point": {
+                          "version": "1.0.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "number-is-nan": "^1.0.0"
+                          },
+                          "dependencies": {
+                            "number-is-nan": {
+                              "version": "1.0.1",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "strip-ansi": {
+                      "version": "3.0.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "ansi-regex": "^2.0.0"
+                      },
+                      "dependencies": {
+                        "ansi-regex": {
+                          "version": "2.1.1",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    },
+                    "wide-align": {
+                      "version": "1.1.2",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "string-width": "^1.0.2"
+                      }
+                    }
+                  }
+                },
+                "set-blocking": {
+                  "version": "2.0.0",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "once": {
+              "version": "1.4.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "wrappy": "1"
+              }
+            },
+            "opener": {
+              "version": "1.4.3",
+              "bundled": true,
+              "dev": true
+            },
+            "osenv": {
+              "version": "0.1.4",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "os-homedir": "^1.0.0",
+                "os-tmpdir": "^1.0.0"
+              },
+              "dependencies": {
+                "os-homedir": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true
+                },
+                "os-tmpdir": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "pacote": {
+              "version": "2.7.38",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "bluebird": "^3.5.0",
+                "cacache": "^9.2.9",
+                "glob": "^7.1.2",
+                "lru-cache": "^4.1.1",
+                "make-fetch-happen": "^2.4.13",
+                "minimatch": "^3.0.4",
+                "mississippi": "^1.2.0",
+                "normalize-package-data": "^2.4.0",
+                "npm-package-arg": "^5.1.2",
+                "npm-pick-manifest": "^1.0.4",
+                "osenv": "^0.1.4",
+                "promise-inflight": "^1.0.1",
+                "promise-retry": "^1.1.1",
+                "protoduck": "^4.0.0",
+                "safe-buffer": "^5.1.1",
+                "semver": "^5.3.0",
+                "ssri": "^4.1.6",
+                "tar-fs": "^1.15.3",
+                "tar-stream": "^1.5.4",
+                "unique-filename": "^1.1.0",
+                "which": "^1.2.12"
+              },
+              "dependencies": {
+                "make-fetch-happen": {
+                  "version": "2.4.13",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "agentkeepalive": "^3.3.0",
+                    "cacache": "^9.2.9",
+                    "http-cache-semantics": "^3.7.3",
+                    "http-proxy-agent": "^2.0.0",
+                    "https-proxy-agent": "^2.0.0",
+                    "lru-cache": "^4.1.1",
+                    "mississippi": "^1.2.0",
+                    "node-fetch-npm": "^2.0.1",
+                    "promise-retry": "^1.1.1",
+                    "socks-proxy-agent": "^3.0.0",
+                    "ssri": "^4.1.6"
+                  },
+                  "dependencies": {
+                    "agentkeepalive": {
+                      "version": "3.3.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "humanize-ms": "^1.2.1"
+                      },
+                      "dependencies": {
+                        "humanize-ms": {
+                          "version": "1.2.1",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "ms": "^2.0.0"
+                          },
+                          "dependencies": {
+                            "ms": {
+                              "version": "2.0.0",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "http-cache-semantics": {
+                      "version": "3.7.3",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "http-proxy-agent": {
+                      "version": "2.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "agent-base": "4",
+                        "debug": "2"
+                      },
+                      "dependencies": {
+                        "agent-base": {
+                          "version": "4.1.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "es6-promisify": "^5.0.0"
+                          },
+                          "dependencies": {
+                            "es6-promisify": {
+                              "version": "5.0.0",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "es6-promise": "^4.0.3"
+                              },
+                              "dependencies": {
+                                "es6-promise": {
+                                  "version": "4.1.1",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        },
+                        "debug": {
+                          "version": "2.6.8",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "ms": "2.0.0"
+                          },
+                          "dependencies": {
+                            "ms": {
+                              "version": "2.0.0",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "https-proxy-agent": {
+                      "version": "2.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "agent-base": "^4.1.0",
+                        "debug": "^2.4.1"
+                      },
+                      "dependencies": {
+                        "agent-base": {
+                          "version": "4.1.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "es6-promisify": "^5.0.0"
+                          },
+                          "dependencies": {
+                            "es6-promisify": {
+                              "version": "5.0.0",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "es6-promise": "^4.0.3"
+                              },
+                              "dependencies": {
+                                "es6-promise": {
+                                  "version": "4.1.1",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        },
+                        "debug": {
+                          "version": "2.6.8",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "ms": "2.0.0"
+                          },
+                          "dependencies": {
+                            "ms": {
+                              "version": "2.0.0",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "node-fetch-npm": {
+                      "version": "2.0.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "encoding": "^0.1.11",
+                        "json-parse-helpfulerror": "^1.0.3",
+                        "safe-buffer": "^5.0.1"
+                      },
+                      "dependencies": {
+                        "encoding": {
+                          "version": "0.1.12",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "iconv-lite": "~0.4.13"
+                          },
+                          "dependencies": {
+                            "iconv-lite": {
+                              "version": "0.4.18",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        },
+                        "json-parse-helpfulerror": {
+                          "version": "1.0.3",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "jju": "^1.1.0"
+                          },
+                          "dependencies": {
+                            "jju": {
+                              "version": "1.3.0",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "socks-proxy-agent": {
+                      "version": "3.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "agent-base": "^4.0.1",
+                        "socks": "^1.1.10"
+                      },
+                      "dependencies": {
+                        "agent-base": {
+                          "version": "4.1.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "es6-promisify": "^5.0.0"
+                          },
+                          "dependencies": {
+                            "es6-promisify": {
+                              "version": "5.0.0",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "es6-promise": "^4.0.3"
+                              },
+                              "dependencies": {
+                                "es6-promise": {
+                                  "version": "4.1.1",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        },
+                        "socks": {
+                          "version": "1.1.10",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "ip": "^1.1.4",
+                            "smart-buffer": "^1.0.13"
+                          },
+                          "dependencies": {
+                            "ip": {
+                              "version": "1.1.5",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "smart-buffer": {
+                              "version": "1.1.15",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "minimatch": {
+                  "version": "3.0.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "brace-expansion": "^1.1.7"
+                  },
+                  "dependencies": {
+                    "brace-expansion": {
+                      "version": "1.1.8",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "balanced-match": "^1.0.0",
+                        "concat-map": "0.0.1"
+                      },
+                      "dependencies": {
+                        "balanced-match": {
+                          "version": "1.0.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "concat-map": {
+                          "version": "0.0.1",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "npm-pick-manifest": {
+                  "version": "1.0.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "npm-package-arg": "^5.1.2",
+                    "semver": "^5.3.0"
+                  }
+                },
+                "promise-retry": {
+                  "version": "1.1.1",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "err-code": "^1.0.0",
+                    "retry": "^0.10.0"
+                  },
+                  "dependencies": {
+                    "err-code": {
+                      "version": "1.1.2",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "protoduck": {
+                  "version": "4.0.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "genfun": "^4.0.1"
+                  },
+                  "dependencies": {
+                    "genfun": {
+                      "version": "4.0.1",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "tar-fs": {
+                  "version": "1.15.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "chownr": "^1.0.1",
+                    "mkdirp": "^0.5.1",
+                    "pump": "^1.0.0",
+                    "tar-stream": "^1.1.2"
+                  },
+                  "dependencies": {
+                    "pump": {
+                      "version": "1.0.2",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "end-of-stream": "^1.1.0",
+                        "once": "^1.3.1"
+                      },
+                      "dependencies": {
+                        "end-of-stream": {
+                          "version": "1.4.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "once": "^1.4.0"
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "tar-stream": {
+                  "version": "1.5.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "bl": "^1.0.0",
+                    "end-of-stream": "^1.0.0",
+                    "readable-stream": "^2.0.0",
+                    "xtend": "^4.0.0"
+                  },
+                  "dependencies": {
+                    "bl": {
+                      "version": "1.2.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "readable-stream": "^2.0.5"
+                      }
+                    },
+                    "end-of-stream": {
+                      "version": "1.4.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "once": "^1.4.0"
+                      }
+                    },
+                    "xtend": {
+                      "version": "4.0.1",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "path-is-inside": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true
+            },
+            "promise-inflight": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true
+            },
+            "read": {
+              "version": "1.0.7",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "mute-stream": "~0.0.4"
+              },
+              "dependencies": {
+                "mute-stream": {
+                  "version": "0.0.7",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "read-cmd-shim": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "graceful-fs": "^4.1.2"
+              }
+            },
+            "read-installed": {
+              "version": "4.0.3",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "debuglog": "^1.0.1",
+                "graceful-fs": "^4.1.2",
+                "read-package-json": "^2.0.0",
+                "readdir-scoped-modules": "^1.0.0",
+                "semver": "2 || 3 || 4 || 5",
+                "slide": "~1.1.3",
+                "util-extend": "^1.0.1"
+              },
+              "dependencies": {
+                "util-extend": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "read-package-json": {
+              "version": "2.0.9",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "glob": "^7.1.1",
+                "graceful-fs": "^4.1.2",
+                "json-parse-helpfulerror": "^1.0.2",
+                "normalize-package-data": "^2.0.0"
+              },
+              "dependencies": {
+                "json-parse-helpfulerror": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "jju": "^1.1.0"
+                  },
+                  "dependencies": {
+                    "jju": {
+                      "version": "1.3.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "read-package-tree": {
+              "version": "5.1.6",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "debuglog": "^1.0.1",
+                "dezalgo": "^1.0.0",
+                "once": "^1.3.0",
+                "read-package-json": "^2.0.0",
+                "readdir-scoped-modules": "^1.0.0"
+              }
+            },
+            "readable-stream": {
+              "version": "2.3.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~1.0.6",
+                "safe-buffer": "~5.1.0",
+                "string_decoder": "~1.0.0",
+                "util-deprecate": "~1.0.1"
+              },
+              "dependencies": {
+                "core-util-is": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true
+                },
+                "isarray": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "process-nextick-args": {
+                  "version": "1.0.7",
+                  "bundled": true,
+                  "dev": true
+                },
+                "string_decoder": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "safe-buffer": "~5.1.0"
+                  }
+                },
+                "util-deprecate": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "readdir-scoped-modules": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "debuglog": "^1.0.1",
+                "dezalgo": "^1.0.0",
+                "graceful-fs": "^4.1.2",
+                "once": "^1.3.0"
+              }
+            },
+            "request": {
+              "version": "2.81.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "aws-sign2": "~0.6.0",
+                "aws4": "^1.2.1",
+                "caseless": "~0.12.0",
+                "combined-stream": "~1.0.5",
+                "extend": "~3.0.0",
+                "forever-agent": "~0.6.1",
+                "form-data": "~2.1.1",
+                "har-validator": "~4.2.1",
+                "hawk": "~3.1.3",
+                "http-signature": "~1.1.0",
+                "is-typedarray": "~1.0.0",
+                "isstream": "~0.1.2",
+                "json-stringify-safe": "~5.0.1",
+                "mime-types": "~2.1.7",
+                "oauth-sign": "~0.8.1",
+                "performance-now": "^0.2.0",
+                "qs": "~6.4.0",
+                "safe-buffer": "^5.0.1",
+                "stringstream": "~0.0.4",
+                "tough-cookie": "~2.3.0",
+                "tunnel-agent": "^0.6.0",
+                "uuid": "^3.0.0"
+              },
+              "dependencies": {
+                "aws-sign2": {
+                  "version": "0.6.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "aws4": {
+                  "version": "1.6.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "caseless": {
+                  "version": "0.12.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "combined-stream": {
+                  "version": "1.0.5",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "delayed-stream": "~1.0.0"
+                  },
+                  "dependencies": {
+                    "delayed-stream": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "extend": {
+                  "version": "3.0.1",
+                  "bundled": true,
+                  "dev": true
+                },
+                "forever-agent": {
+                  "version": "0.6.1",
+                  "bundled": true,
+                  "dev": true
+                },
+                "form-data": {
+                  "version": "2.1.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "asynckit": "^0.4.0",
+                    "combined-stream": "^1.0.5",
+                    "mime-types": "^2.1.12"
+                  },
+                  "dependencies": {
+                    "asynckit": {
+                      "version": "0.4.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "har-validator": {
+                  "version": "4.2.1",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "ajv": "^4.9.1",
+                    "har-schema": "^1.0.5"
+                  },
+                  "dependencies": {
+                    "ajv": {
+                      "version": "4.11.8",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "co": "^4.6.0",
+                        "json-stable-stringify": "^1.0.1"
+                      },
+                      "dependencies": {
+                        "co": {
+                          "version": "4.6.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "json-stable-stringify": {
+                          "version": "1.0.1",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "jsonify": "~0.0.0"
+                          },
+                          "dependencies": {
+                            "jsonify": {
+                              "version": "0.0.0",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "har-schema": {
+                      "version": "1.0.5",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "hawk": {
+                  "version": "3.1.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "boom": "2.x.x",
+                    "cryptiles": "2.x.x",
+                    "hoek": "2.x.x",
+                    "sntp": "1.x.x"
+                  },
+                  "dependencies": {
+                    "boom": {
+                      "version": "2.10.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "hoek": "2.x.x"
+                      }
+                    },
+                    "cryptiles": {
+                      "version": "2.0.5",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "boom": "2.x.x"
+                      }
+                    },
+                    "hoek": {
+                      "version": "2.16.3",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "sntp": {
+                      "version": "1.0.9",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "hoek": "2.x.x"
+                      }
+                    }
+                  }
+                },
+                "http-signature": {
+                  "version": "1.1.1",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "assert-plus": "^0.2.0",
+                    "jsprim": "^1.2.2",
+                    "sshpk": "^1.7.0"
+                  },
+                  "dependencies": {
+                    "assert-plus": {
+                      "version": "0.2.0",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "jsprim": {
+                      "version": "1.4.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "assert-plus": "1.0.0",
+                        "extsprintf": "1.0.2",
+                        "json-schema": "0.2.3",
+                        "verror": "1.3.6"
+                      },
+                      "dependencies": {
+                        "assert-plus": {
+                          "version": "1.0.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "extsprintf": {
+                          "version": "1.0.2",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "json-schema": {
+                          "version": "0.2.3",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "verror": {
+                          "version": "1.3.6",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "extsprintf": "1.0.2"
+                          }
+                        }
+                      }
+                    },
+                    "sshpk": {
+                      "version": "1.13.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "asn1": "~0.2.3",
+                        "assert-plus": "^1.0.0",
+                        "bcrypt-pbkdf": "^1.0.0",
+                        "dashdash": "^1.12.0",
+                        "ecc-jsbn": "~0.1.1",
+                        "getpass": "^0.1.1",
+                        "jsbn": "~0.1.0",
+                        "tweetnacl": "~0.14.0"
+                      },
+                      "dependencies": {
+                        "asn1": {
+                          "version": "0.2.3",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "assert-plus": {
+                          "version": "1.0.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "bcrypt-pbkdf": {
+                          "version": "1.0.1",
+                          "bundled": true,
+                          "dev": true,
+                          "optional": true,
+                          "requires": {
+                            "tweetnacl": "^0.14.3"
+                          }
+                        },
+                        "dashdash": {
+                          "version": "1.14.1",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "assert-plus": "^1.0.0"
+                          }
+                        },
+                        "ecc-jsbn": {
+                          "version": "0.1.1",
+                          "bundled": true,
+                          "dev": true,
+                          "optional": true,
+                          "requires": {
+                            "jsbn": "~0.1.0"
+                          }
+                        },
+                        "getpass": {
+                          "version": "0.1.7",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "assert-plus": "^1.0.0"
+                          }
+                        },
+                        "jsbn": {
+                          "version": "0.1.1",
+                          "bundled": true,
+                          "dev": true,
+                          "optional": true
+                        },
+                        "tweetnacl": {
+                          "version": "0.14.5",
+                          "bundled": true,
+                          "dev": true,
+                          "optional": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "is-typedarray": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "isstream": {
+                  "version": "0.1.2",
+                  "bundled": true,
+                  "dev": true
+                },
+                "json-stringify-safe": {
+                  "version": "5.0.1",
+                  "bundled": true,
+                  "dev": true
+                },
+                "mime-types": {
+                  "version": "2.1.15",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "mime-db": "~1.27.0"
+                  },
+                  "dependencies": {
+                    "mime-db": {
+                      "version": "1.27.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "oauth-sign": {
+                  "version": "0.8.2",
+                  "bundled": true,
+                  "dev": true
+                },
+                "performance-now": {
+                  "version": "0.2.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "qs": {
+                  "version": "6.4.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "stringstream": {
+                  "version": "0.0.5",
+                  "bundled": true,
+                  "dev": true
+                },
+                "tough-cookie": {
+                  "version": "2.3.2",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "punycode": "^1.4.1"
+                  },
+                  "dependencies": {
+                    "punycode": {
+                      "version": "1.4.1",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "tunnel-agent": {
+                  "version": "0.6.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "safe-buffer": "^5.0.1"
+                  }
+                }
+              }
+            },
+            "retry": {
+              "version": "0.10.1",
+              "bundled": true,
+              "dev": true
+            },
+            "rimraf": {
+              "version": "2.6.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "glob": "^7.0.5"
+              }
+            },
+            "safe-buffer": {
+              "version": "5.1.1",
+              "bundled": true,
+              "dev": true
+            },
+            "semver": {
+              "version": "5.3.0",
+              "bundled": true,
+              "dev": true
+            },
+            "sha": {
+              "version": "2.0.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "graceful-fs": "^4.1.2",
+                "readable-stream": "^2.0.2"
+              }
+            },
+            "slide": {
+              "version": "1.1.6",
+              "bundled": true,
+              "dev": true
+            },
+            "sorted-object": {
+              "version": "2.0.1",
+              "bundled": true,
+              "dev": true
+            },
+            "sorted-union-stream": {
+              "version": "2.1.3",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "from2": "^1.3.0",
+                "stream-iterate": "^1.1.0"
+              },
+              "dependencies": {
+                "from2": {
+                  "version": "1.3.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "inherits": "~2.0.1",
+                    "readable-stream": "~1.1.10"
+                  },
+                  "dependencies": {
+                    "readable-stream": {
+                      "version": "1.1.14",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "core-util-is": "~1.0.0",
+                        "inherits": "~2.0.1",
+                        "isarray": "0.0.1",
+                        "string_decoder": "~0.10.x"
+                      },
+                      "dependencies": {
+                        "core-util-is": {
+                          "version": "1.0.2",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "isarray": {
+                          "version": "0.0.1",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "string_decoder": {
+                          "version": "0.10.31",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "stream-iterate": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "readable-stream": "^2.1.5",
+                    "stream-shift": "^1.0.0"
+                  },
+                  "dependencies": {
+                    "stream-shift": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "ssri": {
+              "version": "4.1.6",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "safe-buffer": "^5.1.0"
+              }
+            },
+            "strip-ansi": {
+              "version": "4.0.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              },
+              "dependencies": {
+                "ansi-regex": {
+                  "version": "3.0.0",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "tar": {
+              "version": "2.2.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "block-stream": "*",
+                "fstream": "^1.0.2",
+                "inherits": "2"
+              },
+              "dependencies": {
+                "block-stream": {
+                  "version": "0.0.9",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "inherits": "~2.0.0"
+                  }
+                }
+              }
+            },
+            "text-table": {
+              "version": "0.2.0",
+              "bundled": true,
+              "dev": true
+            },
+            "uid-number": {
+              "version": "0.0.6",
+              "bundled": true,
+              "dev": true
+            },
+            "umask": {
+              "version": "1.1.0",
+              "bundled": true,
+              "dev": true
+            },
+            "unique-filename": {
+              "version": "1.1.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "unique-slug": "^2.0.0"
+              },
+              "dependencies": {
+                "unique-slug": {
+                  "version": "2.0.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "imurmurhash": "^0.1.4"
+                  }
+                }
+              }
+            },
+            "unpipe": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true
+            },
+            "update-notifier": {
+              "version": "2.2.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "boxen": "^1.0.0",
+                "chalk": "^1.0.0",
+                "configstore": "^3.0.0",
+                "import-lazy": "^2.1.0",
+                "is-npm": "^1.0.0",
+                "latest-version": "^3.0.0",
+                "semver-diff": "^2.0.0",
+                "xdg-basedir": "^3.0.0"
+              },
+              "dependencies": {
+                "boxen": {
+                  "version": "1.1.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "ansi-align": "^2.0.0",
+                    "camelcase": "^4.0.0",
+                    "chalk": "^1.1.1",
+                    "cli-boxes": "^1.0.0",
+                    "string-width": "^2.0.0",
+                    "term-size": "^0.1.0",
+                    "widest-line": "^1.0.0"
+                  },
+                  "dependencies": {
+                    "ansi-align": {
+                      "version": "2.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "string-width": "^2.0.0"
+                      }
+                    },
+                    "camelcase": {
+                      "version": "4.1.0",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "cli-boxes": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "string-width": {
+                      "version": "2.1.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^4.0.0"
+                      },
+                      "dependencies": {
+                        "is-fullwidth-code-point": {
+                          "version": "2.0.0",
+                          "bundled": true,
+                          "dev": true
+                        },
+                        "strip-ansi": {
+                          "version": "4.0.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "ansi-regex": "^3.0.0"
+                          }
+                        }
+                      }
+                    },
+                    "term-size": {
+                      "version": "0.1.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "execa": "^0.4.0"
+                      },
+                      "dependencies": {
+                        "execa": {
+                          "version": "0.4.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "cross-spawn-async": "^2.1.1",
+                            "is-stream": "^1.1.0",
+                            "npm-run-path": "^1.0.0",
+                            "object-assign": "^4.0.1",
+                            "path-key": "^1.0.0",
+                            "strip-eof": "^1.0.0"
+                          },
+                          "dependencies": {
+                            "cross-spawn-async": {
+                              "version": "2.2.5",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "lru-cache": "^4.0.0",
+                                "which": "^1.2.8"
+                              }
+                            },
+                            "is-stream": {
+                              "version": "1.1.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "npm-run-path": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "path-key": "^1.0.0"
+                              }
+                            },
+                            "object-assign": {
+                              "version": "4.1.1",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "path-key": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "strip-eof": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "widest-line": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "string-width": "^1.0.1"
+                      },
+                      "dependencies": {
+                        "string-width": {
+                          "version": "1.0.2",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "code-point-at": "^1.0.0",
+                            "is-fullwidth-code-point": "^1.0.0",
+                            "strip-ansi": "^3.0.0"
+                          },
+                          "dependencies": {
+                            "code-point-at": {
+                              "version": "1.1.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "is-fullwidth-code-point": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "number-is-nan": "^1.0.0"
+                              },
+                              "dependencies": {
+                                "number-is-nan": {
+                                  "version": "1.0.1",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            },
+                            "strip-ansi": {
+                              "version": "3.0.1",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "ansi-regex": "^2.0.0"
+                              },
+                              "dependencies": {
+                                "ansi-regex": {
+                                  "version": "2.1.1",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "chalk": {
+                  "version": "1.1.3",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "ansi-styles": "^2.2.1",
+                    "escape-string-regexp": "^1.0.2",
+                    "has-ansi": "^2.0.0",
+                    "strip-ansi": "^3.0.0",
+                    "supports-color": "^2.0.0"
+                  },
+                  "dependencies": {
+                    "ansi-styles": {
+                      "version": "2.2.1",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "escape-string-regexp": {
+                      "version": "1.0.5",
+                      "bundled": true,
+                      "dev": true
+                    },
+                    "has-ansi": {
+                      "version": "2.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "ansi-regex": "^2.0.0"
+                      },
+                      "dependencies": {
+                        "ansi-regex": {
+                          "version": "2.1.1",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    },
+                    "strip-ansi": {
+                      "version": "3.0.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "ansi-regex": "^2.0.0"
+                      },
+                      "dependencies": {
+                        "ansi-regex": {
+                          "version": "2.1.1",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    },
+                    "supports-color": {
+                      "version": "2.0.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "configstore": {
+                  "version": "3.1.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "dot-prop": "^4.1.0",
+                    "graceful-fs": "^4.1.2",
+                    "make-dir": "^1.0.0",
+                    "unique-string": "^1.0.0",
+                    "write-file-atomic": "^2.0.0",
+                    "xdg-basedir": "^3.0.0"
+                  },
+                  "dependencies": {
+                    "dot-prop": {
+                      "version": "4.1.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "is-obj": "^1.0.0"
+                      },
+                      "dependencies": {
+                        "is-obj": {
+                          "version": "1.0.1",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    },
+                    "make-dir": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "pify": "^2.3.0"
+                      },
+                      "dependencies": {
+                        "pify": {
+                          "version": "2.3.0",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    },
+                    "unique-string": {
+                      "version": "1.0.0",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "crypto-random-string": "^1.0.0"
+                      },
+                      "dependencies": {
+                        "crypto-random-string": {
+                          "version": "1.0.0",
+                          "bundled": true,
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "import-lazy": {
+                  "version": "2.1.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "is-npm": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "dev": true
+                },
+                "latest-version": {
+                  "version": "3.1.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "package-json": "^4.0.0"
+                  },
+                  "dependencies": {
+                    "package-json": {
+                      "version": "4.0.1",
+                      "bundled": true,
+                      "dev": true,
+                      "requires": {
+                        "got": "^6.7.1",
+                        "registry-auth-token": "^3.0.1",
+                        "registry-url": "^3.0.3",
+                        "semver": "^5.1.0"
+                      },
+                      "dependencies": {
+                        "got": {
+                          "version": "6.7.1",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "create-error-class": "^3.0.0",
+                            "duplexer3": "^0.1.4",
+                            "get-stream": "^3.0.0",
+                            "is-redirect": "^1.0.0",
+                            "is-retry-allowed": "^1.0.0",
+                            "is-stream": "^1.0.0",
+                            "lowercase-keys": "^1.0.0",
+                            "safe-buffer": "^5.0.1",
+                            "timed-out": "^4.0.0",
+                            "unzip-response": "^2.0.1",
+                            "url-parse-lax": "^1.0.0"
+                          },
+                          "dependencies": {
+                            "create-error-class": {
+                              "version": "3.0.2",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "capture-stack-trace": "^1.0.0"
+                              },
+                              "dependencies": {
+                                "capture-stack-trace": {
+                                  "version": "1.0.0",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            },
+                            "duplexer3": {
+                              "version": "0.1.4",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "get-stream": {
+                              "version": "3.0.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "is-redirect": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "is-retry-allowed": {
+                              "version": "1.1.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "is-stream": {
+                              "version": "1.1.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "lowercase-keys": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "timed-out": {
+                              "version": "4.0.1",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "unzip-response": {
+                              "version": "2.0.1",
+                              "bundled": true,
+                              "dev": true
+                            },
+                            "url-parse-lax": {
+                              "version": "1.0.0",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "prepend-http": "^1.0.1"
+                              },
+                              "dependencies": {
+                                "prepend-http": {
+                                  "version": "1.0.4",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        },
+                        "registry-auth-token": {
+                          "version": "3.3.1",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "rc": "^1.1.6",
+                            "safe-buffer": "^5.0.1"
+                          },
+                          "dependencies": {
+                            "rc": {
+                              "version": "1.2.1",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "deep-extend": "~0.4.0",
+                                "ini": "~1.3.0",
+                                "minimist": "^1.2.0",
+                                "strip-json-comments": "~2.0.1"
+                              },
+                              "dependencies": {
+                                "deep-extend": {
+                                  "version": "0.4.2",
+                                  "bundled": true,
+                                  "dev": true
+                                },
+                                "minimist": {
+                                  "version": "1.2.0",
+                                  "bundled": true,
+                                  "dev": true
+                                },
+                                "strip-json-comments": {
+                                  "version": "2.0.1",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        },
+                        "registry-url": {
+                          "version": "3.1.0",
+                          "bundled": true,
+                          "dev": true,
+                          "requires": {
+                            "rc": "^1.0.1"
+                          },
+                          "dependencies": {
+                            "rc": {
+                              "version": "1.2.1",
+                              "bundled": true,
+                              "dev": true,
+                              "requires": {
+                                "deep-extend": "~0.4.0",
+                                "ini": "~1.3.0",
+                                "minimist": "^1.2.0",
+                                "strip-json-comments": "~2.0.1"
+                              },
+                              "dependencies": {
+                                "deep-extend": {
+                                  "version": "0.4.2",
+                                  "bundled": true,
+                                  "dev": true
+                                },
+                                "minimist": {
+                                  "version": "1.2.0",
+                                  "bundled": true,
+                                  "dev": true
+                                },
+                                "strip-json-comments": {
+                                  "version": "2.0.1",
+                                  "bundled": true,
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "semver-diff": {
+                  "version": "2.1.0",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "semver": "^5.0.3"
+                  }
+                },
+                "xdg-basedir": {
+                  "version": "3.0.0",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "uuid": {
+              "version": "3.1.0",
+              "bundled": true,
+              "dev": true
+            },
+            "validate-npm-package-license": {
+              "version": "3.0.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "spdx-correct": "~1.0.0",
+                "spdx-expression-parse": "~1.0.0"
+              },
+              "dependencies": {
+                "spdx-correct": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "spdx-license-ids": "^1.0.2"
+                  },
+                  "dependencies": {
+                    "spdx-license-ids": {
+                      "version": "1.2.2",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "spdx-expression-parse": {
+                  "version": "1.0.4",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "validate-npm-package-name": {
+              "version": "3.0.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "builtins": "^1.0.3"
+              },
+              "dependencies": {
+                "builtins": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "which": {
+              "version": "1.2.14",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "isexe": "^2.0.0"
+              },
+              "dependencies": {
+                "isexe": {
+                  "version": "2.0.0",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "worker-farm": {
+              "version": "1.3.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "errno": ">=0.1.1 <0.2.0-0",
+                "xtend": ">=4.0.0 <4.1.0-0"
+              },
+              "dependencies": {
+                "errno": {
+                  "version": "0.1.4",
+                  "bundled": true,
+                  "dev": true,
+                  "requires": {
+                    "prr": "~0.0.0"
+                  },
+                  "dependencies": {
+                    "prr": {
+                      "version": "0.0.0",
+                      "bundled": true,
+                      "dev": true
+                    }
+                  }
+                },
+                "xtend": {
+                  "version": "4.0.1",
+                  "bundled": true,
+                  "dev": true
+                }
+              }
+            },
+            "wrappy": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true
+            },
+            "write-file-atomic": {
+              "version": "2.1.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "graceful-fs": "^4.1.11",
+                "imurmurhash": "^0.1.4",
+                "slide": "^1.1.5"
+              }
+            }
+          }
+        },
+        "npm-package-arg": {
+          "version": "6.1.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "hosted-git-info": "^2.7.1",
+            "osenv": "^0.1.5",
+            "semver": "^5.6.0",
+            "validate-npm-package-name": "^3.0.0"
+          }
+        },
+        "npm-run-path": {
+          "version": "2.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "path-key": "^2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "wrappy": "1"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "os-locale": {
+          "version": "3.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "execa": "^1.0.0",
+            "lcid": "^2.0.0",
+            "mem": "^4.0.0"
+          },
+          "dependencies": {
+            "cross-spawn": {
+              "version": "6.0.5",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+              }
+            },
+            "execa": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "cross-spawn": "^6.0.0",
+                "get-stream": "^4.0.0",
+                "is-stream": "^1.1.0",
+                "npm-run-path": "^2.0.0",
+                "p-finally": "^1.0.0",
+                "signal-exit": "^3.0.0",
+                "strip-eof": "^1.0.0"
+              }
+            },
+            "get-stream": {
+              "version": "4.1.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "pump": "^3.0.0"
+              }
+            }
+          }
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+          }
+        },
+        "p-defer": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "p-finally": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "p-is-promise": {
+          "version": "2.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "package-json": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "got": "^6.7.1",
+            "registry-auth-token": "^3.0.1",
+            "registry-url": "^3.0.3",
+            "semver": "^5.1.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "path-is-inside": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "path-key": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "pify": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "prepend-http": {
+          "version": "1.0.4",
+          "bundled": true,
+          "dev": true
+        },
+        "pseudomap": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "pump": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        },
+        "rc": {
+          "version": "1.2.8",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "deep-extend": "^0.6.0",
+            "ini": "~1.3.0",
+            "minimist": "^1.2.0",
+            "strip-json-comments": "~2.0.1"
+          }
+        },
+        "registry-auth-token": {
+          "version": "3.4.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "rc": "^1.1.6",
+            "safe-buffer": "^5.0.1"
+          }
+        },
+        "registry-url": {
+          "version": "3.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "rc": "^1.0.1"
+          }
+        },
+        "require-directory": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "require-main-filename": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.0",
+          "bundled": true,
+          "dev": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "bundled": true,
+          "dev": true
+        },
+        "semver-diff": {
+          "version": "2.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "semver": "^5.0.3"
+          }
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "shebang-command": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "shebang-regex": "^1.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "strip-eof": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "term-size": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "execa": "^0.7.0"
+          }
+        },
+        "timed-out": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "unique-string": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "crypto-random-string": "^1.0.0"
+          }
+        },
+        "unzip-response": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "update-notifier": {
+          "version": "2.5.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "boxen": "^1.2.1",
+            "chalk": "^2.0.1",
+            "configstore": "^3.0.0",
+            "import-lazy": "^2.1.0",
+            "is-ci": "^1.0.10",
+            "is-installed-globally": "^0.1.0",
+            "is-npm": "^1.0.0",
+            "latest-version": "^3.0.0",
+            "semver-diff": "^2.0.0",
+            "xdg-basedir": "^3.0.0"
+          }
+        },
+        "url-parse-lax": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "prepend-http": "^1.0.1"
+          }
+        },
+        "validate-npm-package-name": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "builtins": "^1.0.3"
+          }
+        },
+        "which": {
+          "version": "1.3.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        },
+        "which-module": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "widest-line": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "2.1.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "2.1.1",
+              "bundled": true,
+              "dev": true
+            },
+            "is-fullwidth-code-point": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "number-is-nan": "^1.0.0"
+              }
+            },
+            "string-width": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "code-point-at": "^1.0.0",
+                "is-fullwidth-code-point": "^1.0.0",
+                "strip-ansi": "^3.0.0"
+              }
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "bundled": true,
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            }
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "write-file-atomic": {
+          "version": "2.4.3",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "imurmurhash": "^0.1.4",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "xdg-basedir": {
+          "version": "3.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "y18n": {
+          "version": "4.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true
+        },
+        "yargs": {
+          "version": "11.1.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.1.1",
+            "find-up": "^2.1.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^3.1.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^9.0.2"
+          },
+          "dependencies": {
+            "y18n": {
+              "version": "3.2.1",
+              "bundled": true,
+              "dev": true
+            }
+          }
+        },
+        "yargs-parser": {
+          "version": "9.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0"
+          }
+        }
+      }
+    },
+    "rollup": {
+      "version": "2.56.3",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz",
+      "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
+      "dev": true,
+      "requires": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "rollup-plugin-dts": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-3.0.2.tgz",
+      "integrity": "sha512-hswlsdWu/x7k5pXzaLP6OvKRKcx8Bzprksz9i9mUe72zvt8LvqAb/AZpzs6FkLgmyRaN8B6rUQOVtzA3yEt9Yw==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.12.13",
+        "magic-string": "^0.25.7"
+      }
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "dev": true
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "three": {
+      "version": "0.132.0",
+      "resolved": "https://registry.npmjs.org/three/-/three-0.132.0.tgz",
+      "integrity": "sha512-kv4WeP3O5/8mcHyuGYnqBQYdEfzSz9kEkq4H/9J966epNlGSVJ8gYC3SwT9qIITdgC0OvLr3zPltCS4dUyg2eg=="
+    },
+    "typescript": {
+      "version": "4.3.5",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+      "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+      "dev": true
+    }
+  }
+}

+ 40 - 0
spine-ts/spine-threejs/package.json

@@ -0,0 +1,40 @@
+{
+  "name": "@esotericsoftware/spine-canvas",
+  "version": "4.0.1",
+  "description": "The official Spine Runtimes for the web.",
+  "main": "dist/index.js",
+  "types": "dist/index.d.ts",
+  "files": [
+    "dist/**/*"
+  ],
+  "scripts": {},
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/esotericsoftware/spine-runtimes.git"
+  },
+  "keywords": [
+    "gamedev",
+    "animations",
+    "2d",
+    "spine",
+    "game-dev",
+    "runtimes",
+    "skeletal"
+  ],
+  "author": "Esoteric Software LLC",
+  "license": "LicenseRef-LICENSE",
+  "bugs": {
+    "url": "https://github.com/esotericsoftware/spine-runtimes/issues"
+  },
+  "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme",
+  "devDependencies": {
+    "npx": "^10.2.2",
+    "rollup": "^2.56.2",
+    "rollup-plugin-dts": "^3.0.2",
+    "typescript": "^4.3.5"
+  },
+  "dependencies": {
+    "@types/three": "^0.131.0",
+    "three": "^0.132.0"
+  }
+}

+ 8 - 7
spine-ts/spine-threejs/src/AssetManager.ts

@@ -27,12 +27,13 @@
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *****************************************************************************/
 
-module spine.threejs {
-	export class AssetManager extends spine.AssetManager {
-		constructor (pathPrefix: string = "", downloader: Downloader = null) {
-			super((image: HTMLImageElement) => {
-				return new ThreeJsTexture(image);
-			}, pathPrefix, downloader);
-		}
+import { AssetManagerBase, Downloader } from "@esotericsoftware/spine-core"
+import { ThreeJsTexture } from "./ThreeJsTexture";
+
+export class AssetManager extends AssetManagerBase {
+	constructor(pathPrefix: string = "", downloader: Downloader = null) {
+		super((image: HTMLImageElement) => {
+			return new ThreeJsTexture(image);
+		}, pathPrefix, downloader);
 	}
 }

+ 86 - 84
spine-ts/spine-threejs/src/MeshBatcher.ts

@@ -27,99 +27,101 @@
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *****************************************************************************/
 
-module spine.threejs {
-	export class MeshBatcher extends THREE.Mesh {
-		private static VERTEX_SIZE = 9;
-		private vertexBuffer: THREE.InterleavedBuffer;
-		private vertices: Float32Array;
-		private verticesLength = 0;
-		private indices: Uint16Array;
-		private indicesLength = 0;
+import { SkeletonMeshMaterial, SkeletonMeshMaterialParametersCustomizer } from "./SkeletonMesh";
+import * as THREE from "three"
 
-		constructor (maxVertices: number = 10920, materialCustomizer: SkeletonMeshMaterialParametersCustomizer = (parameters) => { }) {
-			super();
-			if (maxVertices > 10920) throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices);
-			let vertices = this.vertices = new Float32Array(maxVertices * MeshBatcher.VERTEX_SIZE);
-			let indices = this.indices = new Uint16Array(maxVertices * 3);
-			let geo = new THREE.BufferGeometry();
-			let vertexBuffer = this.vertexBuffer = new THREE.InterleavedBuffer(vertices, MeshBatcher.VERTEX_SIZE);
-			vertexBuffer.usage = WebGLRenderingContext.DYNAMIC_DRAW;
-			geo.setAttribute("position", new THREE.InterleavedBufferAttribute(vertexBuffer, 3, 0, false));
-			geo.setAttribute("color", new THREE.InterleavedBufferAttribute(vertexBuffer, 4, 3, false));
-			geo.setAttribute("uv", new THREE.InterleavedBufferAttribute(vertexBuffer, 2, 7, false));
-			geo.setIndex(new THREE.BufferAttribute(indices, 1));
-			geo.getIndex().usage = WebGLRenderingContext.DYNAMIC_DRAW;
-			geo.drawRange.start = 0;
-			geo.drawRange.count = 0;
-			this.geometry = geo;
-			this.material = new SkeletonMeshMaterial(materialCustomizer);
-		}
+export class MeshBatcher extends THREE.Mesh {
+	private static VERTEX_SIZE = 9;
+	private vertexBuffer: THREE.InterleavedBuffer;
+	private vertices: Float32Array;
+	private verticesLength = 0;
+	private indices: Uint16Array;
+	private indicesLength = 0;
 
-		dispose () {
-			this.geometry.dispose();
-			if (this.material instanceof THREE.Material)
-				this.material.dispose();
-			else if (this.material) {
-				for (let i = 0; i < this.material.length; i++) {
-					let material = this.material[i];
-					if (material instanceof THREE.Material)
-						material.dispose();
-				}
-			}
-		}
+	constructor(maxVertices: number = 10920, materialCustomizer: SkeletonMeshMaterialParametersCustomizer = (parameters) => { }) {
+		super();
+		if (maxVertices > 10920) throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices);
+		let vertices = this.vertices = new Float32Array(maxVertices * MeshBatcher.VERTEX_SIZE);
+		let indices = this.indices = new Uint16Array(maxVertices * 3);
+		let geo = new THREE.BufferGeometry();
+		let vertexBuffer = this.vertexBuffer = new THREE.InterleavedBuffer(vertices, MeshBatcher.VERTEX_SIZE);
+		vertexBuffer.usage = WebGLRenderingContext.DYNAMIC_DRAW;
+		geo.setAttribute("position", new THREE.InterleavedBufferAttribute(vertexBuffer, 3, 0, false));
+		geo.setAttribute("color", new THREE.InterleavedBufferAttribute(vertexBuffer, 4, 3, false));
+		geo.setAttribute("uv", new THREE.InterleavedBufferAttribute(vertexBuffer, 2, 7, false));
+		geo.setIndex(new THREE.BufferAttribute(indices, 1));
+		geo.getIndex().usage = WebGLRenderingContext.DYNAMIC_DRAW;
+		geo.drawRange.start = 0;
+		geo.drawRange.count = 0;
+		this.geometry = geo;
+		this.material = new SkeletonMeshMaterial(materialCustomizer);
+	}
 
-		clear () {
-			let geo = (<THREE.BufferGeometry>this.geometry);
-			geo.drawRange.start = 0;
-			geo.drawRange.count = 0;
-			(<SkeletonMeshMaterial>this.material).uniforms.map.value = null;
+	dispose() {
+		this.geometry.dispose();
+		if (this.material instanceof THREE.Material)
+			this.material.dispose();
+		else if (this.material) {
+			for (let i = 0; i < this.material.length; i++) {
+				let material = this.material[i];
+				if (material instanceof THREE.Material)
+					material.dispose();
+			}
 		}
+	}
 
-		begin () {
-			this.verticesLength = 0;
-			this.indicesLength = 0;
-		}
+	clear() {
+		let geo = (<THREE.BufferGeometry>this.geometry);
+		geo.drawRange.start = 0;
+		geo.drawRange.count = 0;
+		(<SkeletonMeshMaterial>this.material).uniforms.map.value = null;
+		return this;
+	}
 
-		canBatch (verticesLength: number, indicesLength: number) {
-			if (this.indicesLength + indicesLength >= this.indices.byteLength / 2) return false;
-			if (this.verticesLength + verticesLength >= this.vertices.byteLength / 2) return false;
-			return true;
-		}
+	begin() {
+		this.verticesLength = 0;
+		this.indicesLength = 0;
+	}
 
-		batch (vertices: ArrayLike<number>, verticesLength: number, indices: ArrayLike<number>, indicesLength: number, z: number = 0) {
-			let indexStart = this.verticesLength / MeshBatcher.VERTEX_SIZE;
-			let vertexBuffer = this.vertices;
-			let i = this.verticesLength;
-			let j = 0;
-			for (; j < verticesLength;) {
-				vertexBuffer[i++] = vertices[j++];
-				vertexBuffer[i++] = vertices[j++];
-				vertexBuffer[i++] = z;
-				vertexBuffer[i++] = vertices[j++];
-				vertexBuffer[i++] = vertices[j++];
-				vertexBuffer[i++] = vertices[j++];
-				vertexBuffer[i++] = vertices[j++];
-				vertexBuffer[i++] = vertices[j++];
-				vertexBuffer[i++] = vertices[j++];
-			}
-			this.verticesLength = i;
+	canBatch(verticesLength: number, indicesLength: number) {
+		if (this.indicesLength + indicesLength >= this.indices.byteLength / 2) return false;
+		if (this.verticesLength + verticesLength >= this.vertices.byteLength / 2) return false;
+		return true;
+	}
 
-			let indicesArray = this.indices;
-			for (i = this.indicesLength, j = 0; j < indicesLength; i++, j++)
-				indicesArray[i] = indices[j] + indexStart;
-			this.indicesLength += indicesLength;
+	batch(vertices: ArrayLike<number>, verticesLength: number, indices: ArrayLike<number>, indicesLength: number, z: number = 0) {
+		let indexStart = this.verticesLength / MeshBatcher.VERTEX_SIZE;
+		let vertexBuffer = this.vertices;
+		let i = this.verticesLength;
+		let j = 0;
+		for (; j < verticesLength;) {
+			vertexBuffer[i++] = vertices[j++];
+			vertexBuffer[i++] = vertices[j++];
+			vertexBuffer[i++] = z;
+			vertexBuffer[i++] = vertices[j++];
+			vertexBuffer[i++] = vertices[j++];
+			vertexBuffer[i++] = vertices[j++];
+			vertexBuffer[i++] = vertices[j++];
+			vertexBuffer[i++] = vertices[j++];
+			vertexBuffer[i++] = vertices[j++];
 		}
+		this.verticesLength = i;
 
-		end () {
-			this.vertexBuffer.needsUpdate = this.verticesLength > 0;
-			this.vertexBuffer.updateRange.offset = 0;
-			this.vertexBuffer.updateRange.count = this.verticesLength;
-			let geo = (<THREE.BufferGeometry>this.geometry);
-			geo.getIndex().needsUpdate = this.indicesLength > 0;
-			geo.getIndex().updateRange.offset = 0;
-			geo.getIndex().updateRange.count = this.indicesLength;
-			geo.drawRange.start = 0;
-			geo.drawRange.count = this.indicesLength;
-		}
+		let indicesArray = this.indices;
+		for (i = this.indicesLength, j = 0; j < indicesLength; i++, j++)
+			indicesArray[i] = indices[j] + indexStart;
+		this.indicesLength += indicesLength;
+	}
+
+	end() {
+		this.vertexBuffer.needsUpdate = this.verticesLength > 0;
+		this.vertexBuffer.updateRange.offset = 0;
+		this.vertexBuffer.updateRange.count = this.verticesLength;
+		let geo = (<THREE.BufferGeometry>this.geometry);
+		geo.getIndex().needsUpdate = this.indicesLength > 0;
+		geo.getIndex().updateRange.offset = 0;
+		geo.getIndex().updateRange.count = this.indicesLength;
+		geo.drawRange.start = 0;
+		geo.drawRange.count = this.indicesLength;
 	}
 }

+ 240 - 237
spine-ts/spine-threejs/src/SkeletonMesh.ts

@@ -27,14 +27,18 @@
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *****************************************************************************/
 
-module spine.threejs {
-	export interface SkeletonMeshMaterialParametersCustomizer {
-		(materialParameters: THREE.ShaderMaterialParameters): void;
-	}
+import { AnimationState, AnimationStateData, BlendMode, ClippingAttachment, Color, MeshAttachment, NumberArrayLike, RegionAttachment, Skeleton, SkeletonClipping, SkeletonData, TextureAtlasRegion, Utils, Vector2, VertexEffect } from "@esotericsoftware/spine-core";
+import { MeshBatcher } from "./MeshBatcher";
+import * as THREE from "three";
+import { ThreeJsTexture } from "./ThreeJsTexture";
+
+export interface SkeletonMeshMaterialParametersCustomizer {
+	(materialParameters: THREE.ShaderMaterialParameters): void;
+}
 
-	export class SkeletonMeshMaterial extends THREE.ShaderMaterial {
-		constructor (customizer: SkeletonMeshMaterialParametersCustomizer) {
-			let vertexShader = `
+export class SkeletonMeshMaterial extends THREE.ShaderMaterial {
+	constructor(customizer: SkeletonMeshMaterialParametersCustomizer) {
+		let vertexShader = `
 				attribute vec4 color;
 				varying vec2 vUv;
 				varying vec4 vColor;
@@ -44,7 +48,7 @@ module spine.threejs {
 					gl_Position = projectionMatrix*modelViewMatrix*vec4(position,1.0);
 				}
 			`;
-			let fragmentShader = `
+		let fragmentShader = `
 				uniform sampler2D map;
 				varying vec2 vUv;
 				varying vec4 vColor;
@@ -53,270 +57,269 @@ module spine.threejs {
 				}
 			`;
 
-			let parameters: THREE.ShaderMaterialParameters = {
-				uniforms: {
-					map: { type: "t", value: null }
-				},
-				vertexShader: vertexShader,
-				fragmentShader: fragmentShader,
-				side: THREE.DoubleSide,
-				transparent: true,
-				alphaTest: 0.5
-			};
-			customizer(parameters);
-			super(parameters);
+		let parameters: THREE.ShaderMaterialParameters = {
+			uniforms: {
+				map: { type: "t", value: null } as any
+			},
+			vertexShader: vertexShader,
+			fragmentShader: fragmentShader,
+			side: THREE.DoubleSide,
+			transparent: true,
+			alphaTest: 0.5
 		};
-	}
+		customizer(parameters);
+		super(parameters);
+	};
+}
 
-	export class SkeletonMesh extends THREE.Object3D {
-		tempPos: Vector2 = new Vector2();
-		tempUv: Vector2 = new Vector2();
-		tempLight = new Color();
-		tempDark = new Color();
-		skeleton: Skeleton;
-		state: AnimationState;
-		zOffset: number = 0.1;
-		vertexEffect: VertexEffect;
+export class SkeletonMesh extends THREE.Object3D {
+	tempPos: Vector2 = new Vector2();
+	tempUv: Vector2 = new Vector2();
+	tempLight = new Color();
+	tempDark = new Color();
+	skeleton: Skeleton;
+	state: AnimationState;
+	zOffset: number = 0.1;
+	vertexEffect: VertexEffect;
 
-		private batches = new Array<MeshBatcher>();
-		private nextBatchIndex = 0;
-		private clipper: SkeletonClipping = new SkeletonClipping();
+	private batches = new Array<MeshBatcher>();
+	private nextBatchIndex = 0;
+	private clipper: SkeletonClipping = new SkeletonClipping();
 
-		static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0];
-		static VERTEX_SIZE = 2 + 2 + 4;
+	static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0];
+	static VERTEX_SIZE = 2 + 2 + 4;
 
-		private vertices = Utils.newFloatArray(1024);
-		private tempColor = new Color();
-		private materialCustomizer: SkeletonMeshMaterialParametersCustomizer;
+	private vertices = Utils.newFloatArray(1024);
+	private tempColor = new Color();
+	private materialCustomizer: SkeletonMeshMaterialParametersCustomizer;
 
-		constructor (skeletonData: SkeletonData, materialCustomizer: SkeletonMeshMaterialParametersCustomizer = (parameters) => { }) {
-			super();
-			this.materialCustomizer = materialCustomizer;
-			this.skeleton = new Skeleton(skeletonData);
-			let animData = new AnimationStateData(skeletonData);
-			this.state = new AnimationState(animData);
-		}
+	constructor(skeletonData: SkeletonData, materialCustomizer: SkeletonMeshMaterialParametersCustomizer = (parameters) => { }) {
+		super();
+		this.materialCustomizer = materialCustomizer;
+		this.skeleton = new Skeleton(skeletonData);
+		let animData = new AnimationStateData(skeletonData);
+		this.state = new AnimationState(animData);
+	}
 
-		update (deltaTime: number) {
-			let state = this.state;
-			let skeleton = this.skeleton;
+	update(deltaTime: number) {
+		let state = this.state;
+		let skeleton = this.skeleton;
 
-			state.update(deltaTime);
-			state.apply(skeleton);
-			skeleton.updateWorldTransform();
+		state.update(deltaTime);
+		state.apply(skeleton);
+		skeleton.updateWorldTransform();
 
-			this.updateGeometry();
-		}
+		this.updateGeometry();
+	}
 
-		dispose () {
-			for (var i = 0; i < this.batches.length; i++) {
-				this.batches[i].dispose();
-			}
+	dispose() {
+		for (var i = 0; i < this.batches.length; i++) {
+			this.batches[i].dispose();
 		}
+	}
 
-		private clearBatches () {
-			for (var i = 0; i < this.batches.length; i++) {
-				this.batches[i].clear();
-				this.batches[i].visible = false;
-			}
-			this.nextBatchIndex = 0;
+	private clearBatches() {
+		for (var i = 0; i < this.batches.length; i++) {
+			this.batches[i].clear();
+			this.batches[i].visible = false;
 		}
+		this.nextBatchIndex = 0;
+	}
 
-		private nextBatch () {
-			if (this.batches.length == this.nextBatchIndex) {
-				let batch = new MeshBatcher(10920, this.materialCustomizer);
-				this.add(batch);
-				this.batches.push(batch);
-			}
-			let batch = this.batches[this.nextBatchIndex++];
-			batch.visible = true;
-			return batch;
+	private nextBatch() {
+		if (this.batches.length == this.nextBatchIndex) {
+			let batch = new MeshBatcher(10920, this.materialCustomizer);
+			this.add(batch);
+			this.batches.push(batch);
 		}
+		let batch = this.batches[this.nextBatchIndex++];
+		batch.visible = true;
+		return batch;
+	}
 
-		private updateGeometry () {
-			this.clearBatches();
+	private updateGeometry() {
+		this.clearBatches();
 
-			let tempPos = this.tempPos;
-			let tempUv = this.tempUv;
-			let tempLight = this.tempLight;
-			let tempDark = this.tempDark;
+		let tempPos = this.tempPos;
+		let tempUv = this.tempUv;
+		let tempLight = this.tempLight;
+		let tempDark = this.tempDark;
 
-			var numVertices = 0;
-			var verticesLength = 0;
-			var indicesLength = 0;
+		var numVertices = 0;
+		var verticesLength = 0;
+		var indicesLength = 0;
 
-			let blendMode: BlendMode = null;
-			let clipper = this.clipper;
+		let blendMode: BlendMode = null;
+		let clipper = this.clipper;
 
-			let vertices: ArrayLike<number> = this.vertices;
-			let triangles: Array<number> = null;
-			let uvs: ArrayLike<number> = null;
-			let drawOrder = this.skeleton.drawOrder;
-			let batch = this.nextBatch();
-			batch.begin();
-			let z = 0;
-			let zOffset = this.zOffset;
-			for (let i = 0, n = drawOrder.length; i < n; i++) {
-				let vertexSize = clipper.isClipping() ? 2 : SkeletonMesh.VERTEX_SIZE;
-				let slot = drawOrder[i];
-				if (!slot.bone.active) {
-					clipper.clipEndWithSlot(slot);
-					continue;
-				}
-				let attachment = slot.getAttachment();
-				let attachmentColor: Color = null;
-				let texture: ThreeJsTexture = null;
-				let numFloats = 0;
-				if (attachment instanceof RegionAttachment) {
-					let region = <RegionAttachment>attachment;
-					attachmentColor = region.color;
-					vertices = this.vertices;
-					numFloats = vertexSize * 4;
-					region.computeWorldVertices(slot.bone, vertices, 0, vertexSize);
-					triangles = SkeletonMesh.QUAD_TRIANGLES;
-					uvs = region.uvs;
-					texture = <ThreeJsTexture>(<TextureAtlasRegion>region.region.renderObject).page.texture;
-				} else if (attachment instanceof MeshAttachment) {
-					let mesh = <MeshAttachment>attachment;
-					attachmentColor = mesh.color;
-					vertices = this.vertices;
-					numFloats = (mesh.worldVerticesLength >> 1) * vertexSize;
-					if (numFloats > vertices.length) {
-						vertices = this.vertices = spine.Utils.newFloatArray(numFloats);
-					}
-					mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, vertexSize);
-					triangles = mesh.triangles;
-					uvs = mesh.uvs;
-					texture = <ThreeJsTexture>(<TextureAtlasRegion>mesh.region.renderObject).page.texture;
-				} else if (attachment instanceof ClippingAttachment) {
-					let clip = <ClippingAttachment>(attachment);
-					clipper.clipStart(slot, clip);
-					continue;
-				} else {
-					clipper.clipEndWithSlot(slot);
-					continue;
+		let vertices: NumberArrayLike = this.vertices;
+		let triangles: Array<number> = null;
+		let uvs: NumberArrayLike = null;
+		let drawOrder = this.skeleton.drawOrder;
+		let batch = this.nextBatch();
+		batch.begin();
+		let z = 0;
+		let zOffset = this.zOffset;
+		for (let i = 0, n = drawOrder.length; i < n; i++) {
+			let vertexSize = clipper.isClipping() ? 2 : SkeletonMesh.VERTEX_SIZE;
+			let slot = drawOrder[i];
+			if (!slot.bone.active) {
+				clipper.clipEndWithSlot(slot);
+				continue;
+			}
+			let attachment = slot.getAttachment();
+			let attachmentColor: Color = null;
+			let texture: ThreeJsTexture = null;
+			let numFloats = 0;
+			if (attachment instanceof RegionAttachment) {
+				let region = <RegionAttachment>attachment;
+				attachmentColor = region.color;
+				vertices = this.vertices;
+				numFloats = vertexSize * 4;
+				region.computeWorldVertices(slot.bone, vertices, 0, vertexSize);
+				triangles = SkeletonMesh.QUAD_TRIANGLES;
+				uvs = region.uvs;
+				texture = <ThreeJsTexture>(<TextureAtlasRegion>region.region.renderObject).page.texture;
+			} else if (attachment instanceof MeshAttachment) {
+				let mesh = <MeshAttachment>attachment;
+				attachmentColor = mesh.color;
+				vertices = this.vertices;
+				numFloats = (mesh.worldVerticesLength >> 1) * vertexSize;
+				if (numFloats > vertices.length) {
+					vertices = this.vertices = Utils.newFloatArray(numFloats);
 				}
+				mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, vertexSize);
+				triangles = mesh.triangles;
+				uvs = mesh.uvs;
+				texture = <ThreeJsTexture>(<TextureAtlasRegion>mesh.region.renderObject).page.texture;
+			} else if (attachment instanceof ClippingAttachment) {
+				let clip = <ClippingAttachment>(attachment);
+				clipper.clipStart(slot, clip);
+				continue;
+			} else {
+				clipper.clipEndWithSlot(slot);
+				continue;
+			}
 
-				if (texture) {
-					let skeleton = slot.bone.skeleton;
-					let skeletonColor = skeleton.color;
-					let slotColor = slot.color;
-					let alpha = skeletonColor.a * slotColor.a * attachmentColor.a;
-					let color = this.tempColor;
-					color.set(skeletonColor.r * slotColor.r * attachmentColor.r,
-						skeletonColor.g * slotColor.g * attachmentColor.g,
-						skeletonColor.b * slotColor.b * attachmentColor.b,
-						alpha);
+			if (texture) {
+				let skeleton = slot.bone.skeleton;
+				let skeletonColor = skeleton.color;
+				let slotColor = slot.color;
+				let alpha = skeletonColor.a * slotColor.a * attachmentColor.a;
+				let color = this.tempColor;
+				color.set(skeletonColor.r * slotColor.r * attachmentColor.r,
+					skeletonColor.g * slotColor.g * attachmentColor.g,
+					skeletonColor.b * slotColor.b * attachmentColor.b,
+					alpha);
 
-					let finalVertices: ArrayLike<number>;
-					let finalVerticesLength: number;
-					let finalIndices: ArrayLike<number>;
-					let finalIndicesLength: number;
+				let finalVertices: NumberArrayLike;
+				let finalVerticesLength: number;
+				let finalIndices: NumberArrayLike;
+				let finalIndicesLength: number;
 
-					if (clipper.isClipping()) {
-						clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
-						let clippedVertices = clipper.clippedVertices;
-						let clippedTriangles = clipper.clippedTriangles;
-						if (this.vertexEffect) {
-							let vertexEffect = this.vertexEffect;
-							let verts = clippedVertices;
-							for (let v = 0, n = clippedVertices.length; v < n; v += vertexSize) {
-								tempPos.x = verts[v];
-								tempPos.y = verts[v + 1];
-								tempLight.setFromColor(color);
-								tempDark.set(0, 0, 0, 0);
-								tempUv.x = verts[v + 6];
-								tempUv.y = verts[v + 7];
-								vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
-								verts[v] = tempPos.x;
-								verts[v + 1] = tempPos.y;
-								verts[v + 2] = tempLight.r;
-								verts[v + 3] = tempLight.g;
-								verts[v + 4] = tempLight.b;
-								verts[v + 5] = tempLight.a;
-								verts[v + 6] = tempUv.x;
-								verts[v + 7] = tempUv.y;
-							}
+				if (clipper.isClipping()) {
+					clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
+					let clippedVertices = clipper.clippedVertices;
+					let clippedTriangles = clipper.clippedTriangles;
+					if (this.vertexEffect) {
+						let vertexEffect = this.vertexEffect;
+						let verts = clippedVertices;
+						for (let v = 0, n = clippedVertices.length; v < n; v += vertexSize) {
+							tempPos.x = verts[v];
+							tempPos.y = verts[v + 1];
+							tempLight.setFromColor(color);
+							tempDark.set(0, 0, 0, 0);
+							tempUv.x = verts[v + 6];
+							tempUv.y = verts[v + 7];
+							vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
+							verts[v] = tempPos.x;
+							verts[v + 1] = tempPos.y;
+							verts[v + 2] = tempLight.r;
+							verts[v + 3] = tempLight.g;
+							verts[v + 4] = tempLight.b;
+							verts[v + 5] = tempLight.a;
+							verts[v + 6] = tempUv.x;
+							verts[v + 7] = tempUv.y;
+						}
+					}
+					finalVertices = clippedVertices;
+					finalVerticesLength = clippedVertices.length;
+					finalIndices = clippedTriangles;
+					finalIndicesLength = clippedTriangles.length;
+				} else {
+					let verts = vertices;
+					if (this.vertexEffect) {
+						let vertexEffect = this.vertexEffect;
+						for (let v = 0, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
+							tempPos.x = verts[v];
+							tempPos.y = verts[v + 1];
+							tempLight.setFromColor(color);
+							tempDark.set(0, 0, 0, 0);
+							tempUv.x = uvs[u];
+							tempUv.y = uvs[u + 1];
+							vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
+							verts[v] = tempPos.x;
+							verts[v + 1] = tempPos.y;
+							verts[v + 2] = tempLight.r;
+							verts[v + 3] = tempLight.g;
+							verts[v + 4] = tempLight.b;
+							verts[v + 5] = tempLight.a;
+							verts[v + 6] = tempUv.x;
+							verts[v + 7] = tempUv.y;
 						}
-						finalVertices = clippedVertices;
-						finalVerticesLength = clippedVertices.length;
-						finalIndices = clippedTriangles;
-						finalIndicesLength = clippedTriangles.length;
 					} else {
-						let verts = vertices;
-						if (this.vertexEffect) {
-							let vertexEffect = this.vertexEffect;
-							for (let v = 0, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
-								tempPos.x = verts[v];
-								tempPos.y = verts[v + 1];
-								tempLight.setFromColor(color);
-								tempDark.set(0, 0, 0, 0);
-								tempUv.x = uvs[u];
-								tempUv.y = uvs[u + 1];
-								vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
-								verts[v] = tempPos.x;
-								verts[v + 1] = tempPos.y;
-								verts[v + 2] = tempLight.r;
-								verts[v + 3] = tempLight.g;
-								verts[v + 4] = tempLight.b;
-								verts[v + 5] = tempLight.a;
-								verts[v + 6] = tempUv.x;
-								verts[v + 7] = tempUv.y;
-							}
-						} else {
-							for (let v = 2, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
-								verts[v] = color.r;
-								verts[v + 1] = color.g;
-								verts[v + 2] = color.b;
-								verts[v + 3] = color.a;
-								verts[v + 4] = uvs[u];
-								verts[v + 5] = uvs[u + 1];
-							}
+						for (let v = 2, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
+							verts[v] = color.r;
+							verts[v + 1] = color.g;
+							verts[v + 2] = color.b;
+							verts[v + 3] = color.a;
+							verts[v + 4] = uvs[u];
+							verts[v + 5] = uvs[u + 1];
 						}
-						finalVertices = vertices;
-						finalVerticesLength = numFloats;
-						finalIndices = triangles;
-						finalIndicesLength = triangles.length;
-					}
-
-					if (finalVerticesLength == 0 || finalIndicesLength == 0) {
-						clipper.clipEndWithSlot(slot);
-						continue;
 					}
+					finalVertices = vertices;
+					finalVerticesLength = numFloats;
+					finalIndices = triangles;
+					finalIndicesLength = triangles.length;
+				}
 
-					// Start new batch if this one can't hold vertices/indices
-					if (!batch.canBatch(finalVerticesLength, finalIndicesLength)) {
-						batch.end();
-						batch = this.nextBatch();
-						batch.begin();
-					}
+				if (finalVerticesLength == 0 || finalIndicesLength == 0) {
+					clipper.clipEndWithSlot(slot);
+					continue;
+				}
 
-					// FIXME per slot blending would require multiple material support
-					//let slotBlendMode = slot.data.blendMode;
-					//if (slotBlendMode != blendMode) {
-					//	blendMode = slotBlendMode;
-					//	batcher.setBlendMode(getSourceGLBlendMode(this._gl, blendMode, premultipliedAlpha), getDestGLBlendMode(this._gl, blendMode));
-					//}
+				// Start new batch if this one can't hold vertices/indices
+				if (!batch.canBatch(finalVerticesLength, finalIndicesLength)) {
+					batch.end();
+					batch = this.nextBatch();
+					batch.begin();
+				}
 
-					let batchMaterial = <SkeletonMeshMaterial>batch.material;
-					if (!batchMaterial.uniforms.map.value) batchMaterial.uniforms.map.value = texture.texture;
-					if (batchMaterial.uniforms.map.value != texture.texture) {
-						batch.end();
-						batch = this.nextBatch();
-						batch.begin();
-						batchMaterial = <SkeletonMeshMaterial>batch.material;
-						batchMaterial.uniforms.map.value = texture.texture;
-					}
-					batchMaterial.needsUpdate = true;
+				// FIXME per slot blending would require multiple material support
+				//let slotBlendMode = slot.data.blendMode;
+				//if (slotBlendMode != blendMode) {
+				//	blendMode = slotBlendMode;
+				//	batcher.setBlendMode(getSourceGLBlendMode(this._gl, blendMode, premultipliedAlpha), getDestGLBlendMode(this._gl, blendMode));
+				//}
 
-					batch.batch(finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, z);
-					z += zOffset;
+				let batchMaterial = <SkeletonMeshMaterial>batch.material;
+				if (!batchMaterial.uniforms.map.value) batchMaterial.uniforms.map.value = texture.texture;
+				if (batchMaterial.uniforms.map.value != texture.texture) {
+					batch.end();
+					batch = this.nextBatch();
+					batch.begin();
+					batchMaterial = <SkeletonMeshMaterial>batch.material;
+					batchMaterial.uniforms.map.value = texture.texture;
 				}
+				batchMaterial.needsUpdate = true;
 
-				clipper.clipEndWithSlot(slot);
+				batch.batch(finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, z);
+				z += zOffset;
 			}
-			clipper.clipEnd();
-			batch.end();
+
+			clipper.clipEndWithSlot(slot);
 		}
+		clipper.clipEnd();
+		batch.end();
 	}
 }

+ 36 - 35
spine-ts/spine-threejs/src/ThreeJsTexture.ts

@@ -27,46 +27,47 @@
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *****************************************************************************/
 
-module spine.threejs {
-	export class ThreeJsTexture extends Texture {
-		texture: THREE.Texture;
+import { Texture, TextureFilter, TextureWrap } from "@esotericsoftware/spine-core";
+import * as THREE from "three";
 
-		constructor (image: HTMLImageElement) {
-			super(image);
-			this.texture = new THREE.Texture(image);
-			this.texture.flipY = false;
-			this.texture.needsUpdate = true;
-		}
+export class ThreeJsTexture extends Texture {
+	texture: THREE.Texture;
 
-		setFilters (minFilter: TextureFilter, magFilter: TextureFilter) {
-			this.texture.minFilter = ThreeJsTexture.toThreeJsTextureFilter(minFilter);
-			this.texture.magFilter = ThreeJsTexture.toThreeJsTextureFilter(magFilter);
-		}
+	constructor(image: HTMLImageElement) {
+		super(image);
+		this.texture = new THREE.Texture(image);
+		this.texture.flipY = false;
+		this.texture.needsUpdate = true;
+	}
+
+	setFilters(minFilter: TextureFilter, magFilter: TextureFilter) {
+		this.texture.minFilter = ThreeJsTexture.toThreeJsTextureFilter(minFilter);
+		this.texture.magFilter = ThreeJsTexture.toThreeJsTextureFilter(magFilter);
+	}
 
-		setWraps (uWrap: TextureWrap, vWrap: TextureWrap) {
-			this.texture.wrapS = ThreeJsTexture.toThreeJsTextureWrap(uWrap);
-			this.texture.wrapT = ThreeJsTexture.toThreeJsTextureWrap(vWrap);
-		}
+	setWraps(uWrap: TextureWrap, vWrap: TextureWrap) {
+		this.texture.wrapS = ThreeJsTexture.toThreeJsTextureWrap(uWrap);
+		this.texture.wrapT = ThreeJsTexture.toThreeJsTextureWrap(vWrap);
+	}
 
-		dispose () {
-			this.texture.dispose();
-		}
+	dispose() {
+		this.texture.dispose();
+	}
 
-		static toThreeJsTextureFilter (filter: TextureFilter) {
-			if (filter === TextureFilter.Linear) return THREE.LinearFilter;
-			else if (filter === TextureFilter.MipMap) return THREE.LinearMipMapLinearFilter; // also includes TextureFilter.MipMapLinearLinear
-			else if (filter === TextureFilter.MipMapLinearNearest) return THREE.LinearMipMapNearestFilter;
-			else if (filter === TextureFilter.MipMapNearestLinear) return THREE.NearestMipMapLinearFilter;
-			else if (filter === TextureFilter.MipMapNearestNearest) return THREE.NearestMipMapNearestFilter;
-			else if (filter === TextureFilter.Nearest) return THREE.NearestFilter;
-			else throw new Error("Unknown texture filter: " + filter);
-		}
+	static toThreeJsTextureFilter(filter: TextureFilter) {
+		if (filter === TextureFilter.Linear) return THREE.LinearFilter;
+		else if (filter === TextureFilter.MipMap) return THREE.LinearMipMapLinearFilter; // also includes TextureFilter.MipMapLinearLinear
+		else if (filter === TextureFilter.MipMapLinearNearest) return THREE.LinearMipMapNearestFilter;
+		else if (filter === TextureFilter.MipMapNearestLinear) return THREE.NearestMipMapLinearFilter;
+		else if (filter === TextureFilter.MipMapNearestNearest) return THREE.NearestMipMapNearestFilter;
+		else if (filter === TextureFilter.Nearest) return THREE.NearestFilter;
+		else throw new Error("Unknown texture filter: " + filter);
+	}
 
-		static toThreeJsTextureWrap (wrap: TextureWrap) {
-			if (wrap === TextureWrap.ClampToEdge) return THREE.ClampToEdgeWrapping;
-			else if (wrap === TextureWrap.MirroredRepeat) return THREE.MirroredRepeatWrapping;
-			else if (wrap === TextureWrap.Repeat) return THREE.RepeatWrapping;
-			else throw new Error("Unknown texture wrap: " + wrap);
-		}
+	static toThreeJsTextureWrap(wrap: TextureWrap) {
+		if (wrap === TextureWrap.ClampToEdge) return THREE.ClampToEdgeWrapping;
+		else if (wrap === TextureWrap.MirroredRepeat) return THREE.MirroredRepeatWrapping;
+		else if (wrap === TextureWrap.Repeat) return THREE.RepeatWrapping;
+		else throw new Error("Unknown texture wrap: " + wrap);
 	}
 }

+ 29 - 0
spine-ts/spine-threejs/src/index.ts

@@ -0,0 +1,29 @@
+export * from './require-shim';
+export * from './AssetManager';
+export * from './MeshBatcher';
+export * from './SkeletonMesh';
+export * from './ThreeJsTexture';
+
+export * from "@esotericsoftware/spine-core";
+
+// Before modularization, we would expose spine-core on the global
+// `spine` object, and spine-threejs on the global `spine.threejs` object.
+// This was used by clients when including spine-threejs via <script src="spine-threejs.js">
+// 
+// Now with modularization and using esbuild for bundling, we need to emulate this old
+// behaviour as to not break old clients.
+//
+// We pass `--global-name=spine` to esbuild. This will create an object containing
+// all exports and assign it to the global variable called `spine`.
+//
+// That solves half the issue. We also need to assign the exports object to 
+// `spine.threejs`. esbuild creates a local variable called `scr_exports` pointing
+// to the exports object. We get to it via eval, then assign it to itself, on a new
+// property called `threejs`. The client can then access the APIs through `spine` and
+// `spine.threejs` as before (with the caveat that both spine-core and spine-threejs are
+// now in `spine` and `spine.threejs`).
+//
+// This will break if esbuild renames the variable `src_exports` pointing to
+// the exports object.
+let exports = eval("src_exports");
+if (exports) exports.threejs = exports;

+ 42 - 0
spine-ts/spine-threejs/src/require-shim.ts

@@ -0,0 +1,42 @@
+/******************************************************************************
+ * Spine Runtimes License Agreement
+ * Last updated January 1, 2020. Replaces all prior versions.
+ *
+ * Copyright (c) 2013-2020, Esoteric Software LLC
+ *
+ * Integration of the Spine Runtimes into software or otherwise creating
+ * derivative works of the Spine Runtimes is permitted under the terms and
+ * conditions of Section 2 of the Spine Editor License Agreement:
+ * http://esotericsoftware.com/spine-editor-license
+ *
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
+ * "Products"), provided that each user of the Products must obtain their own
+ * Spine Editor license and redistribution of the Products in any form must
+ * include this license and copyright notice.
+ *
+ * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
+ * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *****************************************************************************/
+
+declare global {
+	var require: any;
+}
+
+if (window.THREE) {
+	let prevRequire = window.require;
+	window.require = (x: string) => {
+		if (prevRequire) return prevRequire(x);
+		else if (x === "three") return window.THREE;
+	}
+}
+
+export { }

+ 0 - 13
spine-ts/spine-threejs/src/threejs/Three.Legacy.d.ts

@@ -1,13 +0,0 @@
-import { Geometry } from './core/Geometry';
-import { Material } from './materials/Material';
-import { Object3D } from './core/Object3D';
-import { Scene } from './scenes/Scene';
-
-export namespace SceneUtils {
-	export function createMultiMaterialObject(
-		geometry: Geometry,
-		materials: Material[]
-	): Object3D;
-	export function detach( child: Object3D, parent: Object3D, scene: Scene ): void;
-	export function attach( child: Object3D, scene: Scene, parent: Object3D ): void;
-}

+ 0 - 180
spine-ts/spine-threejs/src/threejs/Three.d.ts

@@ -1,180 +0,0 @@
-export * from './polyfills';
-export * from './renderers/WebGLMultisampleRenderTarget';
-export * from './renderers/WebGLRenderTargetCube';
-export * from './renderers/WebGLRenderTarget';
-export * from './renderers/WebGLRenderer';
-export * from './renderers/shaders/ShaderLib';
-export * from './renderers/shaders/UniformsLib';
-export * from './renderers/shaders/UniformsUtils';
-export * from './renderers/shaders/ShaderChunk';
-export * from './scenes/FogExp2';
-export * from './scenes/Fog';
-export * from './scenes/Scene';
-export * from './objects/Sprite';
-export * from './objects/LOD';
-export * from './objects/InstancedMesh';
-export * from './objects/SkinnedMesh';
-export * from './objects/Skeleton';
-export * from './objects/Bone';
-export * from './objects/Mesh';
-export * from './objects/LineSegments';
-export * from './objects/LineLoop';
-export * from './objects/Line';
-export * from './objects/Points';
-export * from './objects/Group';
-export * from './textures/VideoTexture';
-export * from './textures/DataTexture';
-export * from './textures/DataTexture3D';
-export * from './textures/CompressedTexture';
-export * from './textures/CubeTexture';
-export * from './textures/CanvasTexture';
-export * from './textures/DepthTexture';
-export * from './textures/Texture';
-export * from './geometries/Geometries';
-export * from './materials/Materials';
-export * from './loaders/AnimationLoader';
-export * from './loaders/CompressedTextureLoader';
-export * from './loaders/DataTextureLoader';
-export * from './loaders/CubeTextureLoader';
-export * from './loaders/TextureLoader';
-export * from './loaders/ObjectLoader';
-export * from './loaders/MaterialLoader';
-export * from './loaders/BufferGeometryLoader';
-export * from './loaders/LoadingManager';
-export * from './loaders/ImageLoader';
-export * from './loaders/ImageBitmapLoader';
-export * from './loaders/FontLoader';
-export * from './loaders/FileLoader';
-export * from './loaders/Loader';
-export * from './loaders/LoaderUtils';
-export * from './loaders/Cache';
-export * from './loaders/AudioLoader';
-export * from './lights/SpotLightShadow';
-export * from './lights/SpotLight';
-export * from './lights/PointLight';
-export * from './lights/RectAreaLight';
-export * from './lights/HemisphereLight';
-export * from './lights/DirectionalLightShadow';
-export * from './lights/DirectionalLight';
-export * from './lights/AmbientLight';
-export * from './lights/LightShadow';
-export * from './lights/Light';
-export * from './lights/AmbientLightProbe';
-export * from './lights/HemisphereLightProbe';
-export * from './lights/LightProbe';
-export * from './cameras/StereoCamera';
-export * from './cameras/PerspectiveCamera';
-export * from './cameras/OrthographicCamera';
-export * from './cameras/CubeCamera';
-export * from './cameras/ArrayCamera';
-export * from './cameras/Camera';
-export * from './audio/AudioListener';
-export * from './audio/PositionalAudio';
-export * from './audio/AudioContext';
-export * from './audio/AudioAnalyser';
-export * from './audio/Audio';
-export * from './animation/tracks/VectorKeyframeTrack';
-export * from './animation/tracks/StringKeyframeTrack';
-export * from './animation/tracks/QuaternionKeyframeTrack';
-export * from './animation/tracks/NumberKeyframeTrack';
-export * from './animation/tracks/ColorKeyframeTrack';
-export * from './animation/tracks/BooleanKeyframeTrack';
-export * from './animation/PropertyMixer';
-export * from './animation/PropertyBinding';
-export * from './animation/KeyframeTrack';
-export * from './animation/AnimationUtils';
-export * from './animation/AnimationObjectGroup';
-export * from './animation/AnimationMixer';
-export * from './animation/AnimationClip';
-export * from './core/Uniform';
-export * from './core/InstancedBufferGeometry';
-export * from './core/BufferGeometry';
-export * from './core/Geometry';
-export * from './core/InterleavedBufferAttribute';
-export * from './core/InstancedInterleavedBuffer';
-export * from './core/InterleavedBuffer';
-export * from './core/InstancedBufferAttribute';
-export * from './core/BufferAttribute';
-export * from './core/Face3';
-export * from './core/Object3D';
-export * from './core/Raycaster';
-export * from './core/Layers';
-export * from './core/EventDispatcher';
-export * from './core/DirectGeometry';
-export * from './core/Clock';
-export * from './math/interpolants/QuaternionLinearInterpolant';
-export * from './math/interpolants/LinearInterpolant';
-export * from './math/interpolants/DiscreteInterpolant';
-export * from './math/interpolants/CubicInterpolant';
-export * from './math/Interpolant';
-export * from './math/Triangle';
-export { _Math as Math } from './math/Math';
-export * from './math/Spherical';
-export * from './math/Cylindrical';
-export * from './math/Plane';
-export * from './math/Frustum';
-export * from './math/Sphere';
-export * from './math/Ray';
-export * from './math/Matrix4';
-export * from './math/Matrix3';
-export * from './math/Box3';
-export * from './math/Box2';
-export * from './math/Line3';
-export * from './math/Euler';
-export * from './math/Vector4';
-export * from './math/Vector3';
-export * from './math/Vector2';
-export * from './math/Quaternion';
-export * from './math/Color';
-export * from './math/SphericalHarmonics3';
-export * from './extras/objects/ImmediateRenderObject';
-export * from './helpers/VertexNormalsHelper';
-export * from './helpers/SpotLightHelper';
-export * from './helpers/SkeletonHelper';
-export * from './helpers/PointLightHelper';
-export * from './helpers/RectAreaLightHelper';
-export * from './helpers/HemisphereLightHelper';
-export * from './helpers/GridHelper';
-export * from './helpers/PolarGridHelper';
-export * from './helpers/PositionalAudioHelper';
-export * from './helpers/FaceNormalsHelper';
-export * from './helpers/DirectionalLightHelper';
-export * from './helpers/CameraHelper';
-export * from './helpers/BoxHelper';
-export * from './helpers/Box3Helper';
-export * from './helpers/PlaneHelper';
-export * from './helpers/ArrowHelper';
-export * from './helpers/AxesHelper';
-export * from './extras/curves/Curves';
-export * from './extras/core/Shape';
-export * from './extras/core/Path';
-export * from './extras/core/ShapePath';
-export * from './extras/core/Font';
-export * from './extras/core/CurvePath';
-export * from './extras/core/Curve';
-export * from './extras/ImageUtils';
-export * from './extras/ShapeUtils';
-export * from './renderers/webgl/WebGLBufferRenderer';
-export * from './renderers/webgl/WebGLCapabilities';
-export * from './renderers/webgl/WebGLClipping';
-export * from './renderers/webgl/WebGLExtensions';
-export * from './renderers/webgl/WebGLGeometries';
-export * from './renderers/webgl/WebGLIndexedBufferRenderer';
-export * from './renderers/webgl/WebGLInfo';
-export * from './renderers/webgl/WebGLLights';
-export * from './renderers/webgl/WebGLObjects';
-export * from './renderers/webgl/WebGLProgram';
-export * from './renderers/webgl/WebGLPrograms';
-export * from './renderers/webgl/WebGLProperties';
-export * from './renderers/webgl/WebGLRenderLists';
-export * from './renderers/webgl/WebGLShader';
-export * from './renderers/webgl/WebGLShadowMap';
-export * from './renderers/webgl/WebGLState';
-export * from './renderers/webgl/WebGLTextures';
-export * from './renderers/webgl/WebGLUniforms';
-//export * from './renderers/webgl/WebGLUtils';
-export * from './renderers/webvr/WebVRManager';
-export * from './constants';
-export * from './Three.Legacy';
-
-export as namespace THREE;

+ 0 - 62
spine-ts/spine-threejs/src/threejs/animation/AnimationAction.d.ts

@@ -1,62 +0,0 @@
-import { AnimationMixer } from './AnimationMixer';
-import { AnimationClip } from './AnimationClip';
-import { AnimationActionLoopStyles } from '../constants';
-import { Object3D } from '../core/Object3D';
-// Animation ////////////////////////////////////////////////////////////////////////////////////////
-
-export class AnimationAction {
-
-	constructor( mixer: AnimationMixer, clip: AnimationClip, localRoot?: Object3D );
-
-	loop: AnimationActionLoopStyles;
-	time: number;
-	timeScale: number;
-	weight: number;
-	repetitions: number;
-	paused: boolean;
-	enabled: boolean;
-	clampWhenFinished: boolean;
-	zeroSlopeAtStart: boolean;
-	zeroSlopeAtEnd: boolean;
-
-	play(): AnimationAction;
-	stop(): AnimationAction;
-	reset(): AnimationAction;
-	isRunning(): boolean;
-	isScheduled(): boolean;
-	startAt( time: number ): AnimationAction;
-	setLoop(
-		mode: AnimationActionLoopStyles,
-		repetitions: number
-	): AnimationAction;
-	setEffectiveWeight( weight: number ): AnimationAction;
-	getEffectiveWeight(): number;
-	fadeIn( duration: number ): AnimationAction;
-	fadeOut( duration: number ): AnimationAction;
-	crossFadeFrom(
-		fadeOutAction: AnimationAction,
-		duration: number,
-		warp: boolean
-	): AnimationAction;
-	crossFadeTo(
-		fadeInAction: AnimationAction,
-		duration: number,
-		warp: boolean
-	): AnimationAction;
-	stopFading(): AnimationAction;
-	setEffectiveTimeScale( timeScale: number ): AnimationAction;
-	getEffectiveTimeScale(): number;
-	setDuration( duration: number ): AnimationAction;
-	syncWith( action: AnimationAction ): AnimationAction;
-	halt( duration: number ): AnimationAction;
-	warp(
-		statTimeScale: number,
-		endTimeScale: number,
-		duration: number
-	): AnimationAction;
-	stopWarping(): AnimationAction;
-	getMixer(): AnimationMixer;
-	getClip(): AnimationClip;
-	getRoot(): Object3D;
-
-}

+ 0 - 41
spine-ts/spine-threejs/src/threejs/animation/AnimationClip.d.ts

@@ -1,41 +0,0 @@
-import { KeyframeTrack } from './KeyframeTrack';
-import { Bone } from './../objects/Bone';
-import { MorphTarget } from '../core/Geometry';
-
-export class AnimationClip {
-
-	constructor( name?: string, duration?: number, tracks?: KeyframeTrack[] );
-
-	name: string;
-	tracks: KeyframeTrack[];
-	duration: number;
-	uuid: string;
-	results: any[];
-
-	resetDuration(): AnimationClip;
-	trim(): AnimationClip;
-	validate(): boolean;
-	optimize(): AnimationClip;
-	clone(): AnimationClip;
-
-	static CreateFromMorphTargetSequence(
-		name: string,
-		morphTargetSequence: MorphTarget[],
-		fps: number,
-		noLoop: boolean
-	): AnimationClip;
-	static findByName( clipArray: AnimationClip[], name: string ): AnimationClip;
-	static CreateClipsFromMorphTargetSequences(
-		morphTargets: MorphTarget[],
-		fps: number,
-		noLoop: boolean
-	): AnimationClip[];
-	static parse( json: any ): AnimationClip;
-	static parseAnimation(
-		animation: any,
-		bones: Bone[],
-		nodeName: string
-	): AnimationClip;
-	static toJSON(): any;
-
-}

+ 0 - 23
spine-ts/spine-threejs/src/threejs/animation/AnimationMixer.d.ts

@@ -1,23 +0,0 @@
-import { AnimationClip } from './AnimationClip';
-import { AnimationAction } from './AnimationAction';
-import { EventDispatcher } from './../core/EventDispatcher';
-import { Object3D } from '../core/Object3D';
-
-export class AnimationMixer extends EventDispatcher {
-
-	constructor( root: Object3D );
-
-	time: number;
-	timeScale: number;
-
-	clipAction( clip: AnimationClip, root?: Object3D ): AnimationAction;
-	existingAction( clip: AnimationClip, root?: Object3D ): AnimationAction | null;
-	stopAllAction(): AnimationMixer;
-	update( deltaTime: number ): AnimationMixer;
-	setTime( timeInSeconds: number ): AnimationMixer;
-	getRoot(): Object3D;
-	uncacheClip( clip: AnimationClip ): void;
-	uncacheRoot( root: Object3D ): void;
-	uncacheAction( clip: AnimationClip, root?: Object3D ): void;
-
-}

+ 0 - 18
spine-ts/spine-threejs/src/threejs/animation/AnimationObjectGroup.d.ts

@@ -1,18 +0,0 @@
-export class AnimationObjectGroup {
-
-	constructor( ...args: any[] );
-
-	uuid: string;
-	stats: {
-		bindingsPerObject: number;
-		objects: {
-			total: number;
-			inUse: number;
-		};
-	};
-
-	add( ...args: any[] ): void;
-	remove( ...args: any[] ): void;
-	uncache( ...args: any[] ): void;
-
-}

+ 0 - 26
spine-ts/spine-threejs/src/threejs/animation/AnimationUtils.d.ts

@@ -1,26 +0,0 @@
-import { AnimationClip } from './AnimationClip';
-
-export namespace AnimationUtils {
-	export function arraySlice( array: any, from: number, to: number ): any;
-	export function convertArray( array: any, type: any, forceClone: boolean ): any;
-	export function isTypedArray( object: any ): boolean;
-	export function getKeyFrameOrder( times: number[] ): number[];
-	export function sortedArray(
-		values: any[],
-		stride: number,
-		order: number[]
-	): any[];
-	export function flattenJSON(
-		jsonKeys: string[],
-		times: any[],
-		values: any[],
-		valuePropertyName: string
-	): void;
-	export function subclip(
-		sourceClip: AnimationClip,
-		name: string,
-		startFrame: number,
-		endFrame: number,
-		fps?: number
-	): AnimationClip;
-}

+ 0 - 43
spine-ts/spine-threejs/src/threejs/animation/KeyframeTrack.d.ts

@@ -1,43 +0,0 @@
-import { DiscreteInterpolant } from './../math/interpolants/DiscreteInterpolant';
-import { LinearInterpolant } from './../math/interpolants/LinearInterpolant';
-import { CubicInterpolant } from './../math/interpolants/CubicInterpolant';
-import { InterpolationModes } from '../constants';
-
-export class KeyframeTrack {
-
-	constructor(
-		name: string,
-		times: any[],
-		values: any[],
-		interpolation?: InterpolationModes
-	);
-
-	name: string;
-	times: Float32Array;
-	values: Float32Array;
-
-	ValueTypeName: string;
-	TimeBufferType: Float32Array;
-	ValueBufferType: Float32Array;
-
-	DefaultInterpolation: InterpolationModes;
-
-	InterpolantFactoryMethodDiscrete( result: any ): DiscreteInterpolant;
-	InterpolantFactoryMethodLinear( result: any ): LinearInterpolant;
-	InterpolantFactoryMethodSmooth( result: any ): CubicInterpolant;
-
-	setInterpolation( interpolation: InterpolationModes ): KeyframeTrack;
-	getInterpolation(): InterpolationModes;
-
-	getValuesize(): number;
-
-	shift( timeOffset: number ): KeyframeTrack;
-	scale( timeScale: number ): KeyframeTrack;
-	trim( startTime: number, endTime: number ): KeyframeTrack;
-	validate(): boolean;
-	optimize(): KeyframeTrack;
-	clone(): KeyframeTrack;
-
-	static toJSON( track: KeyframeTrack ): any;
-
-}

+ 0 - 51
spine-ts/spine-threejs/src/threejs/animation/PropertyBinding.d.ts

@@ -1,51 +0,0 @@
-export interface ParseTrackNameResults {
-	nodeName: string;
-	objectName: string;
-	objectIndex: string;
-	propertyName: string;
-	propertyIndex: string;
-}
-
-export class PropertyBinding {
-
-	constructor( rootNode: any, path: string, parsedPath?: any );
-
-	path: string;
-	parsedPath: any;
-	node: any;
-	rootNode: any;
-
-	getValue( targetArray: any, offset: number ): any;
-	setValue( sourceArray: any, offset: number ): void;
-	bind(): void;
-	unbind(): void;
-
-	BindingType: { [bindingType: string]: number };
-	Versioning: { [versioning: string]: number };
-
-	GetterByBindingType: Function[];
-	SetterByBindingTypeAndVersioning: Array<Function[]>;
-
-	static create(
-		root: any,
-		path: any,
-		parsedPath?: any
-	): PropertyBinding | PropertyBinding.Composite;
-	static sanitizeNodeName( name: string ): string;
-	static parseTrackName( trackName: string ): ParseTrackNameResults;
-	static findNode( root: any, nodeName: string ): any;
-
-}
-
-export namespace PropertyBinding {
-	export class Composite {
-
-		constructor( targetGroup: any, path: any, parsedPath?: any );
-
-		getValue( array: any, offset: number ): any;
-		setValue( array: any, offset: number ): void;
-		bind(): void;
-		unbind(): void;
-
-	}
-}

+ 0 - 17
spine-ts/spine-threejs/src/threejs/animation/PropertyMixer.d.ts

@@ -1,17 +0,0 @@
-export class PropertyMixer {
-
-	constructor( binding: any, typeName: string, valueSize: number );
-
-	binding: any;
-	valueSize: number;
-	buffer: any;
-	cumulativeWeight: number;
-	useCount: number;
-	referenceCount: number;
-
-	accumulate( accuIndex: number, weight: number ): void;
-	apply( accuIndex: number ): void;
-	saveOriginalState(): void;
-	restoreOriginalState(): void;
-
-}

+ 0 - 7
spine-ts/spine-threejs/src/threejs/animation/tracks/BooleanKeyframeTrack.d.ts

@@ -1,7 +0,0 @@
-import { KeyframeTrack } from './../KeyframeTrack';
-
-export class BooleanKeyframeTrack extends KeyframeTrack {
-
-	constructor( name: string, times: any[], values: any[] );
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/animation/tracks/ColorKeyframeTrack.d.ts

@@ -1,13 +0,0 @@
-import { KeyframeTrack } from './../KeyframeTrack';
-import { InterpolationModes } from '../../constants';
-
-export class ColorKeyframeTrack extends KeyframeTrack {
-
-	constructor(
-		name: string,
-		times: any[],
-		values: any[],
-		interpolation?: InterpolationModes
-	);
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/animation/tracks/NumberKeyframeTrack.d.ts

@@ -1,13 +0,0 @@
-import { KeyframeTrack } from './../KeyframeTrack';
-import { InterpolationModes } from '../../constants';
-
-export class NumberKeyframeTrack extends KeyframeTrack {
-
-	constructor(
-		name: string,
-		times: any[],
-		values: any[],
-		interpolation?: InterpolationModes
-	);
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/animation/tracks/QuaternionKeyframeTrack.d.ts

@@ -1,13 +0,0 @@
-import { KeyframeTrack } from './../KeyframeTrack';
-import { InterpolationModes } from '../../constants';
-
-export class QuaternionKeyframeTrack extends KeyframeTrack {
-
-	constructor(
-		name: string,
-		times: any[],
-		values: any[],
-		interpolation?: InterpolationModes
-	);
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/animation/tracks/StringKeyframeTrack.d.ts

@@ -1,13 +0,0 @@
-import { KeyframeTrack } from './../KeyframeTrack';
-import { InterpolationModes } from '../../constants';
-
-export class StringKeyframeTrack extends KeyframeTrack {
-
-	constructor(
-		name: string,
-		times: any[],
-		values: any[],
-		interpolation?: InterpolationModes
-	);
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/animation/tracks/VectorKeyframeTrack.d.ts

@@ -1,13 +0,0 @@
-import { KeyframeTrack } from './../KeyframeTrack';
-import { InterpolationModes } from '../../constants';
-
-export class VectorKeyframeTrack extends KeyframeTrack {
-
-	constructor(
-		name: string,
-		times: any[],
-		values: any[],
-		interpolation?: InterpolationModes
-	);
-
-}

+ 0 - 70
spine-ts/spine-threejs/src/threejs/audio/Audio.d.ts

@@ -1,70 +0,0 @@
-import { Object3D } from './../core/Object3D';
-import { AudioListener } from './AudioListener';
-import { AudioContext } from './AudioContext';
-
-// Extras / Audio /////////////////////////////////////////////////////////////////////
-
-export class Audio extends Object3D {
-
-	constructor( listener: AudioListener );
-	type: 'Audio';
-
-	context: AudioContext;
-	gain: GainNode;
-	autoplay: boolean;
-	buffer: null | Audio;
-	detune: number;
-	loop: boolean;
-	offset: number;
-	duration: number | undefined;
-	playbackRate: number;
-	isPlaying: boolean;
-	hasPlaybackControl: boolean;
-	sourceType: string;
-	source: AudioBufferSourceNode;
-	filters: any[];
-
-	getOutput(): GainNode;
-	setNodeSource( audioNode: AudioBufferSourceNode ): this;
-	setMediaElementSource( mediaElement: HTMLMediaElement ): this;
-	setMediaStreamSource( mediaStream: MediaStream ): this;
-	setBuffer( audioBuffer: AudioBuffer ): this;
-	play( delay?: number ): this;
-	onEnded(): void;
-	pause(): this;
-	stop(): this;
-	connect(): this;
-	disconnect(): this;
-	setDetune( value: number ): this;
-	getDetune(): number;
-	getFilters(): any[];
-	setFilter( value: any[] ): this;
-	getFilter(): any;
-	setFilter( filter: any ): this;
-	setPlaybackRate( value: number ): this;
-	getPlaybackRate(): number;
-	getLoop(): boolean;
-	setLoop( value: boolean ): this;
-	setLoopStart( value: number ): this;
-	setLoopEnd( value: number ): this;
-	getVolume(): number;
-	setVolume( value: number ): this;
-	/**
-	 * @deprecated Use {@link AudioLoader} instead.
-	 */
-	load( file: string ): Audio;
-
-}
-
-export class AudioBuffer {
-
-	constructor( context: any );
-
-	context: any;
-	ready: boolean;
-	readyCallbacks: Function[];
-
-	load( file: string ): AudioBuffer;
-	onReady( callback: Function ): void;
-
-}

+ 0 - 16
spine-ts/spine-threejs/src/threejs/audio/AudioAnalyser.d.ts

@@ -1,16 +0,0 @@
-export class AudioAnalyser {
-
-	constructor( audio: any, fftSize: number );
-
-	analyser: any;
-	data: Uint8Array;
-
-	getFrequencyData(): Uint8Array;
-	getAverageFrequency(): number;
-
-	/**
-	 * @deprecated Use {@link AudioAnalyser#getFrequencyData .getFrequencyData()} instead.
-	 */
-	getData( file: any ): any;
-
-}

+ 0 - 1
spine-ts/spine-threejs/src/threejs/audio/AudioContext.d.ts

@@ -1 +0,0 @@
-export const AudioContext: AudioContext;

+ 0 - 21
spine-ts/spine-threejs/src/threejs/audio/AudioListener.d.ts

@@ -1,21 +0,0 @@
-import { Object3D } from './../core/Object3D';
-import { AudioContext } from './AudioContext';
-
-export class AudioListener extends Object3D {
-
-	constructor();
-
-	type: 'AudioListener';
-	context: AudioContext;
-	gain: GainNode;
-	filter: null | any;
-
-	getInput(): GainNode;
-	removeFilter(): void;
-	setFilter( value: any ): void;
-	getFilter(): any;
-	setMasterVolume( value: number ): void;
-	getMasterVolume(): number;
-	updateMatrixWorld( force?: boolean ): void;
-
-}

+ 0 - 24
spine-ts/spine-threejs/src/threejs/audio/PositionalAudio.d.ts

@@ -1,24 +0,0 @@
-import { AudioListener } from './AudioListener';
-import { Audio } from './Audio';
-
-export class PositionalAudio extends Audio {
-
-	constructor( listener: AudioListener );
-
-	panner: PannerNode;
-
-	setRefDistance( value: number ): this;
-	getRefDistance(): number;
-	setRolloffFactor( value: number ): this;
-	getRolloffFactor(): number;
-	setDistanceModel( value: string ): this;
-	getDistanceModel(): string;
-	setMaxDistance( value: number ): this;
-	getMaxDistance(): number;
-	setDirectionalCone(
-		coneInnerAngle: number,
-		coneOuterAngle: number,
-		coneOuterGain: number
-	): this;
-
-}

+ 0 - 10
spine-ts/spine-threejs/src/threejs/cameras/ArrayCamera.d.ts

@@ -1,10 +0,0 @@
-import { PerspectiveCamera } from './PerspectiveCamera';
-
-export class ArrayCamera extends PerspectiveCamera {
-
-	constructor( cameras?: PerspectiveCamera[] );
-
-	cameras: PerspectiveCamera[];
-	isArrayCamera: true;
-
-}

+ 0 - 38
spine-ts/spine-threejs/src/threejs/cameras/Camera.d.ts

@@ -1,38 +0,0 @@
-import { Matrix4 } from './../math/Matrix4';
-import { Vector3 } from './../math/Vector3';
-import { Object3D } from './../core/Object3D';
-
-// Cameras ////////////////////////////////////////////////////////////////////////////////////////
-
-/**
- * Abstract base class for cameras. This class should always be inherited when you build a new camera.
- */
-export class Camera extends Object3D {
-
-	/**
-	 * This constructor sets following properties to the correct type: matrixWorldInverse, projectionMatrix and projectionMatrixInverse.
-	 */
-	constructor();
-
-	/**
-	 * This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has the world transform of the Camera.
-	 */
-	matrixWorldInverse: Matrix4;
-
-	/**
-	 * This is the matrix which contains the projection.
-	 */
-	projectionMatrix: Matrix4;
-
-	/**
-	 * This is the inverse of projectionMatrix.
-	 */
-	projectionMatrixInverse: Matrix4;
-
-	isCamera: true;
-
-	getWorldDirection( target: Vector3 ): Vector3;
-
-	updateMatrixWorld( force?: boolean ): void;
-
-}

+ 0 - 19
spine-ts/spine-threejs/src/threejs/cameras/CubeCamera.d.ts

@@ -1,19 +0,0 @@
-import { WebGLRenderTargetCube } from './../renderers/WebGLRenderTargetCube';
-import { WebGLRenderTargetOptions } from './../renderers/WebGLRenderTarget';
-import { Scene } from './../scenes/Scene';
-import { WebGLRenderer } from './../renderers/WebGLRenderer';
-import { Object3D } from './../core/Object3D';
-
-export class CubeCamera extends Object3D {
-
-	constructor( near?: number, far?: number, cubeResolution?: number, options?: WebGLRenderTargetOptions );
-
-	type: 'CubeCamera';
-
-	renderTarget: WebGLRenderTargetCube;
-
-	update( renderer: WebGLRenderer, scene: Scene ): void;
-
-	clear( renderer: WebGLRenderer, color: boolean, depth: boolean, stencil: boolean ): void;
-
-}

+ 0 - 91
spine-ts/spine-threejs/src/threejs/cameras/OrthographicCamera.d.ts

@@ -1,91 +0,0 @@
-import { Camera } from './Camera';
-
-/**
- * Camera with orthographic projection
- *
- * @example
- * var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );
- * scene.add( camera );
- *
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/cameras/OrthographicCamera.js">src/cameras/OrthographicCamera.js</a>
- */
-export class OrthographicCamera extends Camera {
-
-	/**
-	 * @param left Camera frustum left plane.
-	 * @param right Camera frustum right plane.
-	 * @param top Camera frustum top plane.
-	 * @param bottom Camera frustum bottom plane.
-	 * @param near Camera frustum near plane.
-	 * @param far Camera frustum far plane.
-	 */
-	constructor(
-		left: number,
-		right: number,
-		top: number,
-		bottom: number,
-		near?: number,
-		far?: number
-	);
-
-	type: 'OrthographicCamera';
-
-	isOrthographicCamera: true;
-
-	zoom: number;
-	view: null | {
-		enabled: boolean;
-		fullWidth: number;
-		fullHeight: number;
-		offsetX: number;
-		offsetY: number;
-		width: number;
-		height: number;
-	};
-
-	/**
-	 * Camera frustum left plane.
-	 */
-	left: number;
-
-	/**
-	 * Camera frustum right plane.
-	 */
-	right: number;
-
-	/**
-	 * Camera frustum top plane.
-	 */
-	top: number;
-
-	/**
-	 * Camera frustum bottom plane.
-	 */
-	bottom: number;
-
-	/**
-	 * Camera frustum near plane.
-	 */
-	near: number;
-
-	/**
-	 * Camera frustum far plane.
-	 */
-	far: number;
-
-	/**
-	 * Updates the camera projection matrix. Must be called after change of parameters.
-	 */
-	updateProjectionMatrix(): void;
-	setViewOffset(
-		fullWidth: number,
-		fullHeight: number,
-		offsetX: number,
-		offsetY: number,
-		width: number,
-		height: number
-	): void;
-	clearViewOffset(): void;
-	toJSON( meta?: any ): any;
-
-}

+ 0 - 121
spine-ts/spine-threejs/src/threejs/cameras/PerspectiveCamera.d.ts

@@ -1,121 +0,0 @@
-import { Camera } from './Camera';
-
-/**
- * Camera with perspective projection.
- *
- * @source https://github.com/mrdoob/three.js/blob/master/src/cameras/PerspectiveCamera.js
- */
-export class PerspectiveCamera extends Camera {
-
-	/**
-	 * @param fov Camera frustum vertical field of view. Default value is 50.
-	 * @param aspect Camera frustum aspect ratio. Default value is 1.
-	 * @param near Camera frustum near plane. Default value is 0.1.
-	 * @param far Camera frustum far plane. Default value is 2000.
-	 */
-	constructor( fov?: number, aspect?: number, near?: number, far?: number );
-
-	type: 'PerspectiveCamera';
-
-	isPerspectiveCamera: true;
-
-	zoom: number;
-
-	/**
-	 * Camera frustum vertical field of view, from bottom to top of view, in degrees.
-	 */
-	fov: number;
-
-	/**
-	 * Camera frustum aspect ratio, window width divided by window height.
-	 */
-	aspect: number;
-
-	/**
-	 * Camera frustum near plane.
-	 */
-	near: number;
-
-	/**
-	 * Camera frustum far plane.
-	 */
-	far: number;
-
-	focus: number;
-	view: null | {
-		enabled: boolean;
-		fullWidth: number;
-		fullHeight: number;
-		offsetX: number;
-		offsetY: number;
-		width: number;
-		height: number;
-	};
-	filmGauge: number;
-	filmOffset: number;
-
-	setFocalLength( focalLength: number ): void;
-	getFocalLength(): number;
-	getEffectiveFOV(): number;
-	getFilmWidth(): number;
-	getFilmHeight(): number;
-
-	/**
-	 * Sets an offset in a larger frustum. This is useful for multi-window or multi-monitor/multi-machine setups.
-	 * For example, if you have 3x2 monitors and each monitor is 1920x1080 and the monitors are in grid like this:
-	 *
-	 *		 +---+---+---+
-	 *		 | A | B | C |
-	 *		 +---+---+---+
-	 *		 | D | E | F |
-	 *		 +---+---+---+
-	 *
-	 * then for each monitor you would call it like this:
-	 *
-	 *		 var w = 1920;
-	 *		 var h = 1080;
-	 *		 var fullWidth = w * 3;
-	 *		 var fullHeight = h * 2;
-	 *
-	 *		 // A
-	 *		 camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
-	 *		 // B
-	 *		 camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
-	 *		 // C
-	 *		 camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
-	 *		 // D
-	 *		 camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
-	 *		 // E
-	 *		 camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
-	 *		 // F
-	 *		 camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); Note there is no reason monitors have to be the same size or in a grid.
-	 *
-	 * @param fullWidth full width of multiview setup
-	 * @param fullHeight full height of multiview setup
-	 * @param x horizontal offset of subcamera
-	 * @param y vertical offset of subcamera
-	 * @param width width of subcamera
-	 * @param height height of subcamera
-	 */
-	setViewOffset(
-		fullWidth: number,
-		fullHeight: number,
-		x: number,
-		y: number,
-		width: number,
-		height: number
-	): void;
-	clearViewOffset(): void;
-
-	/**
-	 * Updates the camera projection matrix. Must be called after change of parameters.
-	 */
-	updateProjectionMatrix(): void;
-	toJSON( meta?: any ): any;
-
-	/**
-	 * @deprecated Use {@link PerspectiveCamera#setFocalLength .setFocalLength()} and {@link PerspectiveCamera#filmGauge .filmGauge} instead.
-	 */
-	setLens( focalLength: number, frameHeight?: number ): void;
-
-}

+ 0 - 17
spine-ts/spine-threejs/src/threejs/cameras/StereoCamera.d.ts

@@ -1,17 +0,0 @@
-import { PerspectiveCamera } from './PerspectiveCamera';
-import { Camera } from './Camera';
-
-export class StereoCamera extends Camera {
-
-	constructor();
-
-	type: 'StereoCamera';
-
-	aspect: number;
-	eyeSep: number;
-	cameraL: PerspectiveCamera;
-	cameraR: PerspectiveCamera;
-
-	update( camera: PerspectiveCamera ): void;
-
-}

+ 0 - 290
spine-ts/spine-threejs/src/threejs/constants.d.ts

@@ -1,290 +0,0 @@
-export const REVISION: string;
-
-// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button
-export enum MOUSE {
-	LEFT,
-	MIDDLE,
-	RIGHT,
-	ROTATE,
-	DOLLY,
-	PAN,
-}
-
-export enum TOUCH {
-	ROTATE,
-	PAN,
-	DOLLY_PAN,
-	DOLLY_ROTATE,
-}
-
-// GL STATE CONSTANTS
-export enum CullFace {}
-export const CullFaceNone: CullFace;
-export const CullFaceBack: CullFace;
-export const CullFaceFront: CullFace;
-export const CullFaceFrontBack: CullFace;
-
-export enum FrontFaceDirection {}
-export const FrontFaceDirectionCW: FrontFaceDirection;
-export const FrontFaceDirectionCCW: FrontFaceDirection;
-
-// Shadowing Type
-export enum ShadowMapType {}
-export const BasicShadowMap: ShadowMapType;
-export const PCFShadowMap: ShadowMapType;
-export const PCFSoftShadowMap: ShadowMapType;
-export const VSMShadowMap: ShadowMapType;
-
-// MATERIAL CONSTANTS
-
-// side
-export enum Side {}
-export const FrontSide: Side;
-export const BackSide: Side;
-export const DoubleSide: Side;
-
-// shading
-export enum Shading {}
-export const FlatShading: Shading;
-export const SmoothShading: Shading;
-
-// colors
-export enum Colors {}
-export const NoColors: Colors;
-export const FaceColors: Colors;
-export const VertexColors: Colors;
-
-// blending modes
-export enum Blending {}
-export const NoBlending: Blending;
-export const NormalBlending: Blending;
-export const AdditiveBlending: Blending;
-export const SubtractiveBlending: Blending;
-export const MultiplyBlending: Blending;
-export const CustomBlending: Blending;
-
-// custom blending equations
-// (numbers start from 100 not to clash with other
-// mappings to OpenGL constants defined in Texture.js)
-export enum BlendingEquation {}
-export const AddEquation: BlendingEquation;
-export const SubtractEquation: BlendingEquation;
-export const ReverseSubtractEquation: BlendingEquation;
-export const MinEquation: BlendingEquation;
-export const MaxEquation: BlendingEquation;
-
-// custom blending destination factors
-export enum BlendingDstFactor {}
-export const ZeroFactor: BlendingDstFactor;
-export const OneFactor: BlendingDstFactor;
-export const SrcColorFactor: BlendingDstFactor;
-export const OneMinusSrcColorFactor: BlendingDstFactor;
-export const SrcAlphaFactor: BlendingDstFactor;
-export const OneMinusSrcAlphaFactor: BlendingDstFactor;
-export const DstAlphaFactor: BlendingDstFactor;
-export const OneMinusDstAlphaFactor: BlendingDstFactor;
-export const DstColorFactor: BlendingDstFactor;
-export const OneMinusDstColorFactor: BlendingDstFactor;
-
-// custom blending src factors
-export enum BlendingSrcFactor {}
-export const SrcAlphaSaturateFactor: BlendingSrcFactor;
-
-// depth modes
-export enum DepthModes {}
-export const NeverDepth: DepthModes;
-export const AlwaysDepth: DepthModes;
-export const LessDepth: DepthModes;
-export const LessEqualDepth: DepthModes;
-export const EqualDepth: DepthModes;
-export const GreaterEqualDepth: DepthModes;
-export const GreaterDepth: DepthModes;
-export const NotEqualDepth: DepthModes;
-
-// TEXTURE CONSTANTS
-// Operations
-export enum Combine {}
-export const MultiplyOperation: Combine;
-export const MixOperation: Combine;
-export const AddOperation: Combine;
-
-// Tone Mapping modes
-export enum ToneMapping {}
-export const NoToneMapping: ToneMapping;
-export const LinearToneMapping: ToneMapping;
-export const ReinhardToneMapping: ToneMapping;
-export const Uncharted2ToneMapping: ToneMapping;
-export const CineonToneMapping: ToneMapping;
-export const ACESFilmicToneMapping: ToneMapping;
-
-// Mapping modes
-export enum Mapping {}
-export const UVMapping: Mapping;
-export const CubeReflectionMapping: Mapping;
-export const CubeRefractionMapping: Mapping;
-export const EquirectangularReflectionMapping: Mapping;
-export const EquirectangularRefractionMapping: Mapping;
-export const SphericalReflectionMapping: Mapping;
-export const CubeUVReflectionMapping: Mapping;
-export const CubeUVRefractionMapping: Mapping;
-
-// Wrapping modes
-export enum Wrapping {}
-export const RepeatWrapping: Wrapping;
-export const ClampToEdgeWrapping: Wrapping;
-export const MirroredRepeatWrapping: Wrapping;
-
-// Filters
-export enum TextureFilter {}
-export const NearestFilter: TextureFilter;
-export const NearestMipmapNearestFilter: TextureFilter;
-export const NearestMipMapNearestFilter: TextureFilter;
-export const NearestMipmapLinearFilter: TextureFilter;
-export const NearestMipMapLinearFilter: TextureFilter;
-export const LinearFilter: TextureFilter;
-export const LinearMipmapNearestFilter: TextureFilter;
-export const LinearMipMapNearestFilter: TextureFilter;
-export const LinearMipmapLinearFilter: TextureFilter;
-export const LinearMipMapLinearFilter: TextureFilter;
-
-// Data types
-export enum TextureDataType {}
-export const UnsignedByteType: TextureDataType;
-export const ByteType: TextureDataType;
-export const ShortType: TextureDataType;
-export const UnsignedShortType: TextureDataType;
-export const IntType: TextureDataType;
-export const UnsignedIntType: TextureDataType;
-export const FloatType: TextureDataType;
-export const HalfFloatType: TextureDataType;
-
-// Pixel types
-export enum PixelType {}
-export const UnsignedShort4444Type: PixelType;
-export const UnsignedShort5551Type: PixelType;
-export const UnsignedShort565Type: PixelType;
-export const UnsignedInt248Type: PixelType;
-
-// Pixel formats
-export enum PixelFormat {}
-export const AlphaFormat: PixelFormat;
-export const RGBFormat: PixelFormat;
-export const RGBAFormat: PixelFormat;
-export const LuminanceFormat: PixelFormat;
-export const LuminanceAlphaFormat: PixelFormat;
-export const RGBEFormat: PixelFormat;
-export const DepthFormat: PixelFormat;
-export const DepthStencilFormat: PixelFormat;
-export const RedFormat: PixelFormat;
-
-// Compressed texture formats
-// DDS / ST3C Compressed texture formats
-export enum CompressedPixelFormat {}
-export const RGB_S3TC_DXT1_Format: CompressedPixelFormat;
-export const RGBA_S3TC_DXT1_Format: CompressedPixelFormat;
-export const RGBA_S3TC_DXT3_Format: CompressedPixelFormat;
-export const RGBA_S3TC_DXT5_Format: CompressedPixelFormat;
-
-// PVRTC compressed './texture formats
-export const RGB_PVRTC_4BPPV1_Format: CompressedPixelFormat;
-export const RGB_PVRTC_2BPPV1_Format: CompressedPixelFormat;
-export const RGBA_PVRTC_4BPPV1_Format: CompressedPixelFormat;
-export const RGBA_PVRTC_2BPPV1_Format: CompressedPixelFormat;
-
-// ETC compressed texture formats
-export const RGB_ETC1_Format: CompressedPixelFormat;
-
-// ASTC compressed texture formats
-export const RGBA_ASTC_4x4_Format: CompressedPixelFormat;
-export const RGBA_ASTC_5x4_Format: CompressedPixelFormat;
-export const RGBA_ASTC_5x5_Format: CompressedPixelFormat;
-export const RGBA_ASTC_6x5_Format: CompressedPixelFormat;
-export const RGBA_ASTC_6x6_Format: CompressedPixelFormat;
-export const RGBA_ASTC_8x5_Format: CompressedPixelFormat;
-export const RGBA_ASTC_8x6_Format: CompressedPixelFormat;
-export const RGBA_ASTC_8x8_Format: CompressedPixelFormat;
-export const RGBA_ASTC_10x5_Format: CompressedPixelFormat;
-export const RGBA_ASTC_10x6_Format: CompressedPixelFormat;
-export const RGBA_ASTC_10x8_Format: CompressedPixelFormat;
-export const RGBA_ASTC_10x10_Format: CompressedPixelFormat;
-export const RGBA_ASTC_12x10_Format: CompressedPixelFormat;
-export const RGBA_ASTC_12x12_Format: CompressedPixelFormat;
-
-// Loop styles for AnimationAction
-export enum AnimationActionLoopStyles {}
-export const LoopOnce: AnimationActionLoopStyles;
-export const LoopRepeat: AnimationActionLoopStyles;
-export const LoopPingPong: AnimationActionLoopStyles;
-
-// Interpolation
-export enum InterpolationModes {}
-export const InterpolateDiscrete: InterpolationModes;
-export const InterpolateLinear: InterpolationModes;
-export const InterpolateSmooth: InterpolationModes;
-
-// Interpolant ending modes
-export enum InterpolationEndingModes {}
-export const ZeroCurvatureEnding: InterpolationEndingModes;
-export const ZeroSlopeEnding: InterpolationEndingModes;
-export const WrapAroundEnding: InterpolationEndingModes;
-
-// Triangle Draw modes
-export enum TrianglesDrawModes {}
-export const TrianglesDrawMode: TrianglesDrawModes;
-export const TriangleStripDrawMode: TrianglesDrawModes;
-export const TriangleFanDrawMode: TrianglesDrawModes;
-
-// Texture Encodings
-export enum TextureEncoding {}
-export const LinearEncoding: TextureEncoding;
-export const sRGBEncoding: TextureEncoding;
-export const GammaEncoding: TextureEncoding;
-export const RGBEEncoding: TextureEncoding;
-export const LogLuvEncoding: TextureEncoding;
-export const RGBM7Encoding: TextureEncoding;
-export const RGBM16Encoding: TextureEncoding;
-export const RGBDEncoding: TextureEncoding;
-
-// Depth packing strategies
-export enum DepthPackingStrategies {}
-export const BasicDepthPacking: DepthPackingStrategies;
-export const RGBADepthPacking: DepthPackingStrategies;
-
-// Normal Map types
-export enum NormalMapTypes {}
-export const TangentSpaceNormalMap: NormalMapTypes;
-export const ObjectSpaceNormalMap: NormalMapTypes;
-
-// Stencil Op types
-export enum StencilOp {}
-export const ZeroStencilOp: StencilOp;
-export const KeepStencilOp: StencilOp;
-export const ReplaceStencilOp: StencilOp;
-export const IncrementStencilOp: StencilOp;
-export const DecrementStencilOp: StencilOp;
-export const IncrementWrapStencilOp: StencilOp;
-export const DecrementWrapStencilOp: StencilOp;
-export const InvertStencilOp: StencilOp;
-
-// Stencil Func types
-export enum StencilFunc {}
-export const NeverStencilFunc: StencilFunc;
-export const LessStencilFunc: StencilFunc;
-export const EqualStencilFunc: StencilFunc;
-export const LessEqualStencilFunc: StencilFunc;
-export const GreaterStencilFunc: StencilFunc;
-export const NotEqualStencilFunc: StencilFunc;
-export const GreaterEqualStencilFunc: StencilFunc;
-export const AlwaysStencilFunc: StencilFunc;
-
-// usage types
-export enum Usage {}
-export const StaticDrawUsage: Usage;
-export const DynamicDrawUsage: Usage;
-export const StreamDrawUsage: Usage;
-export const StaticReadUsage: Usage;
-export const DynamicReadUsage: Usage;
-export const StreamReadUsage: Usage;
-export const StaticCopyUsage: Usage;
-export const DynamicCopyUsage: Usage;
-export const StreamCopyUsage: Usage;

+ 0 - 245
spine-ts/spine-threejs/src/threejs/core/BufferAttribute.d.ts

@@ -1,245 +0,0 @@
-import {
-	Usage
-} from '../constants';
-
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/BufferAttribute.js">src/core/BufferAttribute.js</a>
- */
-export class BufferAttribute {
-
-	constructor( array: ArrayLike<number>, itemSize: number, normalized?: boolean ); // array parameter should be TypedArray.
-
-	name: string;
-	array: ArrayLike<number>;
-	itemSize: number;
-	usage: Usage;
-	updateRange: { offset: number; count: number };
-	version: number;
-	normalized: boolean;
-	count: number;
-
-	set needsUpdate( value: boolean );
-
-	isBufferAttribute: true;
-
-	onUploadCallback: () => void;
-	onUpload( callback: () => void ): this;
-	setUsage( usage: Usage ): this;
-	clone(): BufferAttribute;
-	copy( source: BufferAttribute ): this;
-	copyAt(
-		index1: number,
-		attribute: BufferAttribute,
-		index2: number
-	): this;
-	copyArray( array: ArrayLike<number> ): this;
-	copyColorsArray(
-		colors: { r: number; g: number; b: number }[]
-	): this;
-	copyVector2sArray( vectors: { x: number; y: number }[] ): this;
-	copyVector3sArray(
-		vectors: { x: number; y: number; z: number }[]
-	): this;
-	copyVector4sArray(
-		vectors: { x: number; y: number; z: number; w: number }[]
-	): this;
-	set(
-		value: ArrayLike<number> | ArrayBufferView,
-		offset?: number
-	): this;
-	getX( index: number ): number;
-	setX( index: number, x: number ): this;
-	getY( index: number ): number;
-	setY( index: number, y: number ): this;
-	getZ( index: number ): number;
-	setZ( index: number, z: number ): this;
-	getW( index: number ): number;
-	setW( index: number, z: number ): this;
-	setXY( index: number, x: number, y: number ): this;
-	setXYZ( index: number, x: number, y: number, z: number ): this;
-	setXYZW(
-		index: number,
-		x: number,
-		y: number,
-		z: number,
-		w: number
-	): this;
-	toJSON(): {
-		itemSize: number,
-		type: string,
-		array: number[],
-		normalized: boolean
-	};
-
-}
-
-/**
- * @deprecated THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.
- */
-export class Int8Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.
- */
-export class Uint8Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.
- */
-export class Uint8ClampedAttribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.
- */
-export class Int16Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.
- */
-export class Uint16Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.
- */
-export class Int32Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.
- */
-export class Uint32Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.
- */
-export class Float32Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-/**
- * @deprecated THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.
- */
-export class Float64Attribute extends BufferAttribute {
-
-	constructor( array: any, itemSize: number );
-
-}
-
-export class Int8BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Uint8BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Uint8ClampedBufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Int16BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Uint16BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Int32BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Uint32BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Float32BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}
-
-export class Float64BufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number> | ArrayBuffer | number,
-		itemSize: number,
-		normalized?: boolean
-	);
-
-}

+ 0 - 157
spine-ts/spine-threejs/src/threejs/core/BufferGeometry.d.ts

@@ -1,157 +0,0 @@
-import { BufferAttribute } from './BufferAttribute';
-import { Box3 } from './../math/Box3';
-import { Sphere } from './../math/Sphere';
-import { Matrix4 } from './../math/Matrix4';
-import { Vector2 } from './../math/Vector2';
-import { Vector3 } from './../math/Vector3';
-import { Object3D } from './Object3D';
-import { Geometry } from './Geometry';
-import { DirectGeometry } from './DirectGeometry';
-import { EventDispatcher } from './EventDispatcher';
-import { InterleavedBufferAttribute } from './InterleavedBufferAttribute';
-
-/**
- * This is a superefficent class for geometries because it saves all data in buffers.
- * It reduces memory costs and cpu cycles. But it is not as easy to work with because of all the nessecary buffer calculations.
- * It is mainly interesting when working with static objects.
- *
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/BufferGeometry.js">src/core/BufferGeometry.js</a>
- */
-export class BufferGeometry extends EventDispatcher {
-
-	/**
-	 * This creates a new BufferGeometry. It also sets several properties to an default value.
-	 */
-	constructor();
-
-	static MaxIndex: number;
-
-	/**
-	 * Unique number of this buffergeometry instance
-	 */
-	id: number;
-	uuid: string;
-	name: string;
-	type: string;
-	index: BufferAttribute | null;
-	attributes: {
-		[name: string]: BufferAttribute | InterleavedBufferAttribute;
-	};
-	morphAttributes: {
-		[name: string]: ( BufferAttribute | InterleavedBufferAttribute )[];
-	};
-	morphTargetsRelative: boolean;
-	groups: { start: number; count: number; materialIndex?: number }[];
-	boundingBox: Box3;
-	boundingSphere: Sphere;
-	drawRange: { start: number; count: number };
-	userData: {[key: string]: any};
-	isBufferGeometry: boolean;
-
-	getIndex(): BufferAttribute;
-	setIndex( index: BufferAttribute | number[] ): void;
-
-	setAttribute( name: string, attribute: BufferAttribute | InterleavedBufferAttribute ): BufferGeometry;
-	getAttribute( name: string ): BufferAttribute | InterleavedBufferAttribute;
-	deleteAttribute( name: string ): BufferGeometry;
-
-	addGroup( start: number, count: number, materialIndex?: number ): void;
-	clearGroups(): void;
-
-	setDrawRange( start: number, count: number ): void;
-
-	/**
-	 * Bakes matrix transform directly into vertex coordinates.
-	 */
-	applyMatrix( matrix: Matrix4 ): BufferGeometry;
-
-	rotateX( angle: number ): BufferGeometry;
-	rotateY( angle: number ): BufferGeometry;
-	rotateZ( angle: number ): BufferGeometry;
-	translate( x: number, y: number, z: number ): BufferGeometry;
-	scale( x: number, y: number, z: number ): BufferGeometry;
-	lookAt( v: Vector3 ): void;
-
-	center(): BufferGeometry;
-
-	setFromObject( object: Object3D ): BufferGeometry;
-	setFromPoints( points: Vector3[] | Vector2[] ): BufferGeometry;
-	updateFromObject( object: Object3D ): void;
-
-	fromGeometry( geometry: Geometry, settings?: any ): BufferGeometry;
-
-	fromDirectGeometry( geometry: DirectGeometry ): BufferGeometry;
-
-	/**
-	 * Computes bounding box of the geometry, updating Geometry.boundingBox attribute.
-	 * Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are null.
-	 */
-	computeBoundingBox(): void;
-
-	/**
-	 * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute.
-	 * Bounding spheres aren't' computed by default. They need to be explicitly computed, otherwise they are null.
-	 */
-	computeBoundingSphere(): void;
-
-	/**
-	 * Computes vertex normals by averaging face normals.
-	 */
-	computeVertexNormals(): void;
-
-	merge( geometry: BufferGeometry, offset: number ): BufferGeometry;
-	normalizeNormals(): void;
-
-	toNonIndexed(): BufferGeometry;
-
-	toJSON(): any;
-	clone(): this;
-	copy( source: BufferGeometry ): this;
-
-	/**
-	 * Disposes the object from memory.
-	 * You need to call this when you want the bufferGeometry removed while the application is running.
-	 */
-	dispose(): void;
-
-	/**
-	 * @deprecated Use {@link BufferGeometry#groups .groups} instead.
-	 */
-	drawcalls: any;
-
-	/**
-	 * @deprecated Use {@link BufferGeometry#groups .groups} instead.
-	 */
-	offsets: any;
-
-	/**
-	 * @deprecated Use {@link BufferGeometry#setIndex .setIndex()} instead.
-	 */
-	addIndex( index: any ): void;
-
-	/**
-	 * @deprecated Use {@link BufferGeometry#addGroup .addGroup()} instead.
-	 */
-	addDrawCall( start: any, count: any, indexOffset?: any ): void;
-
-	/**
-	 * @deprecated Use {@link BufferGeometry#clearGroups .clearGroups()} instead.
-	 */
-	clearDrawCalls(): void;
-
-	/**
-	 * @deprecated Use {@link BufferGeometry#setAttribute .setAttribute()} instead.
-	 */
-	addAttribute(
-		name: string,
-		attribute: BufferAttribute | InterleavedBufferAttribute
-	): BufferGeometry;
-
-	/**
-	 * @deprecated Use {@link BufferGeometry#deleteAttribute .deleteAttribute()} instead.
-	 */
-	removeAttribute( name: string ): BufferGeometry;
-
-	addAttribute( name: any, array: any, itemSize: any ): any;
-
-}

+ 0 - 61
spine-ts/spine-threejs/src/threejs/core/Clock.d.ts

@@ -1,61 +0,0 @@
-/**
- * Object for keeping track of time.
- *
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/Clock.js">src/core/Clock.js</a>
- */
-export class Clock {
-
-	/**
-	 * @param autoStart Automatically start the clock.
-	 */
-	constructor( autoStart?: boolean );
-
-	/**
-	 * If set, starts the clock automatically when the first update is called.
-	 */
-	autoStart: boolean;
-
-	/**
-	 * When the clock is running, It holds the starttime of the clock.
-	 * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
-	 */
-	startTime: number;
-
-	/**
-	 * When the clock is running, It holds the previous time from a update.
-	 * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
-	 */
-	oldTime: number;
-
-	/**
-	 * When the clock is running, It holds the time elapsed between the start of the clock to the previous update.
-	 * This parameter is in seconds of three decimal places.
-	 */
-	elapsedTime: number;
-
-	/**
-	 * This property keeps track whether the clock is running or not.
-	 */
-	running: boolean;
-
-	/**
-	 * Starts clock.
-	 */
-	start(): void;
-
-	/**
-	 * Stops clock.
-	 */
-	stop(): void;
-
-	/**
-	 * Get the seconds passed since the clock started.
-	 */
-	getElapsedTime(): number;
-
-	/**
-	 * Get the seconds passed since the last call to this method.
-	 */
-	getDelta(): number;
-
-}

+ 0 - 44
spine-ts/spine-threejs/src/threejs/core/DirectGeometry.d.ts

@@ -1,44 +0,0 @@
-import { Vector3 } from './../math/Vector3';
-import { Color } from './../math/Color';
-import { Vector2 } from './../math/Vector2';
-import { Vector4 } from './../math/Vector4';
-import { Box3 } from './../math/Box3';
-import { Sphere } from './../math/Sphere';
-import { Geometry } from './Geometry';
-import { MorphTarget } from './Geometry';
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/DirectGeometry.js">src/core/DirectGeometry.js</a>
- */
-export class DirectGeometry {
-
-	constructor();
-
-	id: number;
-	uuid: string;
-	name: string;
-	type: string;
-	indices: number[];
-	vertices: Vector3[];
-	normals: Vector3[];
-	colors: Color[];
-	uvs: Vector2[];
-	uvs2: Vector2[];
-	groups: { start: number; materialIndex: number }[];
-	morphTargets: MorphTarget[];
-	skinWeights: Vector4[];
-	skinIndices: Vector4[];
-	boundingBox: Box3;
-	boundingSphere: Sphere;
-	verticesNeedUpdate: boolean;
-	normalsNeedUpdate: boolean;
-	colorsNeedUpdate: boolean;
-	uvsNeedUpdate: boolean;
-	groupsNeedUpdate: boolean;
-
-	computeBoundingBox(): void;
-	computeBoundingSphere(): void;
-	computeGroups( geometry: Geometry ): void;
-	fromGeometry( geometry: Geometry ): DirectGeometry;
-	dispose(): void;
-
-}

+ 0 - 42
spine-ts/spine-threejs/src/threejs/core/EventDispatcher.d.ts

@@ -1,42 +0,0 @@
-import { Event } from './Face3';
-
-/**
- * JavaScript events for custom objects
- *
- * @source src/core/EventDispatcher.js
- */
-export class EventDispatcher {
-
-	/**
-	 * Creates eventDispatcher object. It needs to be call with '.call' to add the functionality to an object.
-	 */
-	constructor();
-
-	/**
-	 * Adds a listener to an event type.
-	 * @param type The type of event to listen to.
-	 * @param listener The function that gets called when the event is fired.
-	 */
-	addEventListener( type: string, listener: ( event: Event ) => void ): void;
-
-	/**
-	 * Checks if listener is added to an event type.
-	 * @param type The type of event to listen to.
-	 * @param listener The function that gets called when the event is fired.
-	 */
-	hasEventListener( type: string, listener: ( event: Event ) => void ): boolean;
-
-	/**
-	 * Removes a listener from an event type.
-	 * @param type The type of the listener that gets removed.
-	 * @param listener The listener function that gets removed.
-	 */
-	removeEventListener( type: string, listener: ( event: Event ) => void ): void;
-
-	/**
-	 * Fire an event type.
-	 * @param type The type of event that gets fired.
-	 */
-	dispatchEvent( event: { type: string; [attachment: string]: any } ): void;
-
-}

+ 0 - 101
spine-ts/spine-threejs/src/threejs/core/Face3.d.ts

@@ -1,101 +0,0 @@
-import { Vector3 } from './../math/Vector3';
-import { Color } from './../math/Color';
-
-export interface Event {
-	type: string;
-	target?: any;
-	[attachment: string]: any;
-}
-
-/**
- * Triangle face.
- *
- * @source https://github.com/mrdoob/three.js/blob/master/src/core/Face3.js
- */
-export class Face3 {
-
-	/**
-	 * @param a Vertex A index.
-	 * @param b Vertex B index.
-	 * @param c Vertex C index.
-	 * @param normal Face normal or array of vertex normals.
-	 * @param color Face color or array of vertex colors.
-	 * @param materialIndex Material index.
-	 */
-	constructor(
-		a: number,
-		b: number,
-		c: number,
-		normal?: Vector3,
-		color?: Color,
-		materialIndex?: number
-	);
-	constructor(
-		a: number,
-		b: number,
-		c: number,
-		normal?: Vector3,
-		vertexColors?: Color[],
-		materialIndex?: number
-	);
-	constructor(
-		a: number,
-		b: number,
-		c: number,
-		vertexNormals?: Vector3[],
-		color?: Color,
-		materialIndex?: number
-	);
-	constructor(
-		a: number,
-		b: number,
-		c: number,
-		vertexNormals?: Vector3[],
-		vertexColors?: Color[],
-		materialIndex?: number
-	);
-
-	/**
-	 * Vertex A index.
-	 */
-	a: number;
-
-	/**
-	 * Vertex B index.
-	 */
-	b: number;
-
-	/**
-	 * Vertex C index.
-	 */
-	c: number;
-
-	/**
-	 * Face normal.
-	 */
-	normal: Vector3;
-
-	/**
-	 * Array of 4 vertex normals.
-	 */
-	vertexNormals: Vector3[];
-
-	/**
-	 * Face color.
-	 */
-	color: Color;
-
-	/**
-	 * Array of 4 vertex normals.
-	 */
-	vertexColors: Color[];
-
-	/**
-	 * Material index (points to {@link Geometry.materials}).
-	 */
-	materialIndex: number;
-
-	clone(): this;
-	copy( source: Face3 ): this;
-
-}

+ 0 - 255
spine-ts/spine-threejs/src/threejs/core/Geometry.d.ts

@@ -1,255 +0,0 @@
-import { Vector3 } from './../math/Vector3';
-import { Color } from './../math/Color';
-import { Face3 } from './Face3';
-import { Vector2 } from './../math/Vector2';
-import { Vector4 } from './../math/Vector4';
-import { Box3 } from './../math/Box3';
-import { Sphere } from './../math/Sphere';
-import { Matrix4 } from './../math/Matrix4';
-import { BufferGeometry } from './BufferGeometry';
-import { Matrix } from './../math/Matrix3';
-import { Mesh } from './../objects/Mesh';
-import { Bone } from './../objects/Bone';
-import { AnimationClip } from './../animation/AnimationClip';
-import { EventDispatcher } from './EventDispatcher';
-
-/**
- * @deprecated Use {@link Face3} instead.
- */
-
-export interface MorphTarget {
-	name: string;
-	vertices: Vector3[];
-}
-
-export interface MorphColor {
-	name: string;
-	colors: Color[];
-}
-
-export interface MorphNormals {
-	name: string;
-	normals: Vector3[];
-}
-
-export let GeometryIdCount: number;
-
-/**
- * Base class for geometries
- *
- * @see https://github.com/mrdoob/three.js/blob/master/src/core/Geometry.js
- */
-export class Geometry extends EventDispatcher {
-
-	constructor();
-
-	/**
-	 * Unique number of this geometry instance
-	 */
-	id: number;
-
-	uuid: string;
-
-	isGeometry: boolean;
-
-	/**
-	 * Name for this geometry. Default is an empty string.
-	 */
-	name: string;
-
-	type: string;
-
-	/**
-	 * The array of vertices hold every position of points of the model.
-	 * To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true.
-	 */
-	vertices: Vector3[];
-
-	/**
-	 * Array of vertex colors, matching number and order of vertices.
-	 * Used in ParticleSystem, Line and Ribbon.
-	 * Meshes use per-face-use-of-vertex colors embedded directly in faces.
-	 * To signal an update in this array, Geometry.colorsNeedUpdate needs to be set to true.
-	 */
-	colors: Color[];
-
-	/**
-	 * Array of triangles or/and quads.
-	 * The array of faces describe how each vertex in the model is connected with each other.
-	 * To signal an update in this array, Geometry.elementsNeedUpdate needs to be set to true.
-	 */
-	faces: Face3[];
-
-	/**
-	 * Array of face UV layers.
-	 * Each UV layer is an array of UV matching order and number of vertices in faces.
-	 * To signal an update in this array, Geometry.uvsNeedUpdate needs to be set to true.
-	 */
-	faceVertexUvs: Vector2[][][];
-
-	/**
-	 * Array of morph targets. Each morph target is a Javascript object:
-	 *
-	 *		 { name: "targetName", vertices: [ new THREE.Vector3(), ... ] }
-	 *
-	 * Morph vertices match number and order of primary vertices.
-	 */
-	morphTargets: MorphTarget[];
-
-	/**
-	 * Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object:
-	 *
-	 *		 morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] }
-	 */
-	morphNormals: MorphNormals[];
-
-	/**
-	 * Array of skinning weights, matching number and order of vertices.
-	 */
-	skinWeights: Vector4[];
-
-	/**
-	 * Array of skinning indices, matching number and order of vertices.
-	 */
-	skinIndices: Vector4[];
-
-	/**
-	 *
-	 */
-	lineDistances: number[];
-
-	/**
-	 * Bounding box.
-	 */
-	boundingBox: Box3;
-
-	/**
-	 * Bounding sphere.
-	 */
-	boundingSphere: Sphere;
-
-	/**
-	 * Set to true if the vertices array has been updated.
-	 */
-	verticesNeedUpdate: boolean;
-
-	/**
-	 * Set to true if the faces array has been updated.
-	 */
-	elementsNeedUpdate: boolean;
-
-	/**
-	 * Set to true if the uvs array has been updated.
-	 */
-	uvsNeedUpdate: boolean;
-
-	/**
-	 * Set to true if the normals array has been updated.
-	 */
-	normalsNeedUpdate: boolean;
-
-	/**
-	 * Set to true if the colors array has been updated.
-	 */
-	colorsNeedUpdate: boolean;
-
-	/**
-	 * Set to true if the linedistances array has been updated.
-	 */
-	lineDistancesNeedUpdate: boolean;
-
-	/**
-	 *
-	 */
-	groupsNeedUpdate: boolean;
-
-	/**
-	 * Bakes matrix transform directly into vertex coordinates.
-	 */
-	applyMatrix( matrix: Matrix4 ): Geometry;
-
-	rotateX( angle: number ): Geometry;
-	rotateY( angle: number ): Geometry;
-	rotateZ( angle: number ): Geometry;
-
-	translate( x: number, y: number, z: number ): Geometry;
-	scale( x: number, y: number, z: number ): Geometry;
-	lookAt( vector: Vector3 ): void;
-
-	fromBufferGeometry( geometry: BufferGeometry ): Geometry;
-
-	center(): Geometry;
-
-	normalize(): Geometry;
-
-	/**
-	 * Computes face normals.
-	 */
-	computeFaceNormals(): void;
-
-	/**
-	 * Computes vertex normals by averaging face normals.
-	 * Face normals must be existing / computed beforehand.
-	 */
-	computeVertexNormals( areaWeighted?: boolean ): void;
-
-	/**
-	 * Compute vertex normals, but duplicating face normals.
-	 */
-	computeFlatVertexNormals(): void;
-
-	/**
-	 * Computes morph normals.
-	 */
-	computeMorphNormals(): void;
-
-	/**
-	 * Computes bounding box of the geometry, updating {@link Geometry.boundingBox} attribute.
-	 */
-	computeBoundingBox(): void;
-
-	/**
-	 * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute.
-	 * Neither bounding boxes or bounding spheres are computed by default. They need to be explicitly computed, otherwise they are null.
-	 */
-	computeBoundingSphere(): void;
-
-	merge(
-		geometry: Geometry,
-		matrix?: Matrix,
-		materialIndexOffset?: number
-	): void;
-
-	mergeMesh( mesh: Mesh ): void;
-
-	/**
-	 * Checks for duplicate vertices using hashmap.
-	 * Duplicated vertices are removed and faces' vertices are updated.
-	 */
-	mergeVertices(): number;
-
-	setFromPoints( points: Array<Vector2> | Array<Vector3> ): this;
-
-	sortFacesByMaterialIndex(): void;
-
-	toJSON(): any;
-
-	/**
-	 * Creates a new clone of the Geometry.
-	 */
-	clone(): this;
-
-	copy( source: Geometry ): this;
-
-	/**
-	 * Removes The object from memory.
-	 * Don't forget to call this method when you remove an geometry because it can cuase meomory leaks.
-	 */
-	dispose(): void;
-
-	// These properties do not exist in a normal Geometry class, but if you use the instance that was passed by JSONLoader, it will be added.
-	bones: Bone[];
-	animation: AnimationClip;
-	animations: AnimationClip[];
-
-}

+ 0 - 49
spine-ts/spine-threejs/src/threejs/core/InstancedBufferAttribute.d.ts

@@ -1,49 +0,0 @@
-import { BufferGeometry } from './BufferGeometry';
-import { BufferAttribute } from './BufferAttribute';
-
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/examples/js/BufferGeometryUtils.js">examples/js/BufferGeometryUtils.js</a>
- */
-export namespace BufferGeometryUtils {
-	export function mergeBufferGeometries(
-		geometries: BufferGeometry[]
-	): BufferGeometry;
-	export function computeTangents( geometry: BufferGeometry ): null;
-	export function mergeBufferAttributes(
-		attributes: BufferAttribute[]
-	): BufferAttribute;
-}
-
-/**
- * @deprecated
- */
-export namespace GeometryUtils {
-	/**
-	 * @deprecated Use {@link Geometry#merge geometry.merge( geometry2, matrix, materialIndexOffset )} instead.
-	 */
-	export function merge(
-		geometry1: any,
-		geometry2: any,
-		materialIndexOffset?: any
-	): any;
-	/**
-	 * @deprecated Use {@link Geometry#center geometry.center()} instead.
-	 */
-	export function center( geometry: any ): any;
-}
-
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/InstancedBufferAttribute.js">src/core/InstancedBufferAttribute.js</a>
- */
-export class InstancedBufferAttribute extends BufferAttribute {
-
-	constructor(
-		array: ArrayLike<number>,
-		itemSize: number,
-		normalized?: boolean,
-		meshPerAttribute?: number
-	);
-
-	meshPerAttribute: number;
-
-}

+ 0 - 15
spine-ts/spine-threejs/src/threejs/core/InstancedBufferGeometry.d.ts

@@ -1,15 +0,0 @@
-import { BufferGeometry } from './BufferGeometry';
-
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/InstancedBufferGeometry.js">src/core/InstancedBufferGeometry.js</a>
- */
-export class InstancedBufferGeometry extends BufferGeometry {
-
-	constructor();
-
-	groups: { start: number; count: number; instances: number }[];
-	maxInstancedCount: number;
-
-	addGroup( start: number, count: number, instances: number ): void;
-
-}

+ 0 - 16
spine-ts/spine-threejs/src/threejs/core/InstancedInterleavedBuffer.d.ts

@@ -1,16 +0,0 @@
-import { InterleavedBuffer } from './InterleavedBuffer';
-
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/InstancedInterleavedBuffer.js">src/core/InstancedInterleavedBuffer.js</a>
- */
-export class InstancedInterleavedBuffer extends InterleavedBuffer {
-
-	constructor(
-		array: ArrayLike<number>,
-		stride: number,
-		meshPerAttribute?: number
-	);
-
-	meshPerAttribute: number;
-
-}

+ 0 - 30
spine-ts/spine-threejs/src/threejs/core/InterleavedBuffer.d.ts

@@ -1,30 +0,0 @@
-import { InterleavedBufferAttribute } from './InterleavedBufferAttribute';
-import { Usage } from '../constants';
-
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/InterleavedBuffer.js">src/core/InterleavedBuffer.js</a>
- */
-export class InterleavedBuffer {
-
-	constructor( array: ArrayLike<number>, stride: number );
-
-	array: ArrayLike<number>;
-	stride: number;
-	usage: Usage;
-	updateRange: { offset: number; count: number };
-	version: number;
-	length: number;
-	count: number;
-	needsUpdate: boolean;
-
-	setUsage( usage: Usage ): InterleavedBuffer;
-	clone(): this;
-	copy( source: InterleavedBuffer ): this;
-	copyAt(
-		index1: number,
-		attribute: InterleavedBufferAttribute,
-		index2: number
-	): InterleavedBuffer;
-	set( value: ArrayLike<number>, index: number ): InterleavedBuffer;
-
-}

+ 0 - 47
spine-ts/spine-threejs/src/threejs/core/InterleavedBufferAttribute.d.ts

@@ -1,47 +0,0 @@
-import { InterleavedBuffer } from './InterleavedBuffer';
-/**
- * @see <a href="https://github.com/mrdoob/three.js/blob/master/src/core/InterleavedBufferAttribute.js">src/core/InterleavedBufferAttribute.js</a>
- */
-export class InterleavedBufferAttribute {
-
-	constructor(
-		interleavedBuffer: InterleavedBuffer,
-		itemSize: number,
-		offset: number,
-		normalized?: boolean
-	);
-
-	data: InterleavedBuffer;
-	itemSize: number;
-	offset: number;
-	normalized: boolean;
-
-	get count(): number;
-	get array(): ArrayLike<number>;
-
-	isInterleavedBufferAttribute: true;
-
-	getX( index: number ): number;
-	setX( index: number, x: number ): InterleavedBufferAttribute;
-	getY( index: number ): number;
-	setY( index: number, y: number ): InterleavedBufferAttribute;
-	getZ( index: number ): number;
-	setZ( index: number, z: number ): InterleavedBufferAttribute;
-	getW( index: number ): number;
-	setW( index: number, z: number ): InterleavedBufferAttribute;
-	setXY( index: number, x: number, y: number ): InterleavedBufferAttribute;
-	setXYZ(
-		index: number,
-		x: number,
-		y: number,
-		z: number
-	): InterleavedBufferAttribute;
-	setXYZW(
-		index: number,
-		x: number,
-		y: number,
-		z: number,
-		w: number
-	): InterleavedBufferAttribute;
-
-}

+ 0 - 15
spine-ts/spine-threejs/src/threejs/core/Layers.d.ts

@@ -1,15 +0,0 @@
-export class Layers {
-
-	constructor();
-
-	mask: number;
-
-	set( channel: number ): void;
-	enable( channel: number ): void;
-	enableAll(): void;
-	toggle( channel: number ): void;
-	disable( channel: number ): void;
-	disableAll(): void;
-	test( layers: Layers ): boolean;
-
-}

+ 0 - 351
spine-ts/spine-threejs/src/threejs/core/Object3D.d.ts

@@ -1,351 +0,0 @@
-import { Vector3 } from './../math/Vector3';
-import { Euler } from './../math/Euler';
-import { Quaternion } from './../math/Quaternion';
-import { Matrix4 } from './../math/Matrix4';
-import { Matrix3 } from './../math/Matrix3';
-import { Layers } from './Layers';
-import { WebGLRenderer } from './../renderers/WebGLRenderer';
-import { Scene } from './../scenes/Scene';
-import { Camera } from './../cameras/Camera';
-import { Geometry } from './Geometry';
-import { Material } from './../materials/Material';
-import { Group } from './../objects/Group';
-import { Raycaster } from './Raycaster';
-import { EventDispatcher } from './EventDispatcher';
-import { BufferGeometry } from './BufferGeometry';
-import { Intersection } from './Raycaster';
-
-export let Object3DIdCount: number;
-
-/**
- * Base class for scene graph objects
- */
-export class Object3D extends EventDispatcher {
-
-	constructor();
-
-	/**
-	 * Unique number of this object instance.
-	 */
-	id: number;
-
-	/**
-	 *
-	 */
-	uuid: string;
-
-	/**
-	 * Optional name of the object (doesn't need to be unique).
-	 */
-	name: string;
-
-	type: string;
-
-	/**
-	 * Object's parent in the scene graph.
-	 */
-	parent: Object3D | null;
-
-	/**
-	 * Array with object's children.
-	 */
-	children: Object3D[];
-
-	/**
-	 * Up direction.
-	 */
-	up: Vector3;
-
-	/**
-	 * Object's local position.
-	 */
-	position: Vector3;
-
-	/**
-	 * Object's local rotation (Euler angles), in radians.
-	 */
-	rotation: Euler;
-
-	/**
-	 * Global rotation.
-	 */
-	quaternion: Quaternion;
-
-	/**
-	 * Object's local scale.
-	 */
-	scale: Vector3;
-
-	modelViewMatrix: Matrix4;
-
-	normalMatrix: Matrix3;
-
-	/**
-	 * Local transform.
-	 */
-	matrix: Matrix4;
-
-	/**
-	 * The global transform of the object. If the Object3d has no parent, then it's identical to the local transform.
-	 */
-	matrixWorld: Matrix4;
-
-	/**
-	 * When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property.
-	 */
-	matrixAutoUpdate: boolean;
-
-	/**
-	 * When this is set, it calculates the matrixWorld in that frame and resets this property to false.
-	 */
-	matrixWorldNeedsUpdate: boolean;
-
-	layers: Layers;
-	/**
-	 * Object gets rendered if true.
-	 */
-	visible: boolean;
-
-	/**
-	 * Gets rendered into shadow map.
-	 */
-	castShadow: boolean;
-
-	/**
-	 * Material gets baked in shadow receiving.
-	 */
-	receiveShadow: boolean;
-
-	/**
-	 * When this is set, it checks every frame if the object is in the frustum of the camera. Otherwise the object gets drawn every frame even if it isn't visible.
-	 */
-	frustumCulled: boolean;
-
-	/**
-	 * Overrides the default rendering order of scene graph objects, from lowest to highest renderOrder. Opaque and transparent objects remain sorted independently though. When this property is set for an instance of Group, all descendants objects will be sorted and rendered together.
-	 */
-	renderOrder: number;
-
-	/**
-	 * An object that can be used to store custom data about the Object3d. It should not hold references to functions as these will not be cloned.
-	 */
-	userData: { [key: string]: any };
-
-	/**
-	 * Custom depth material to be used when rendering to the depth map. Can only be used in context of meshes.
-	 * When shadow-casting with a DirectionalLight or SpotLight, if you are (a) modifying vertex positions in
-	 * the vertex shader, (b) using a displacement map, (c) using an alpha map with alphaTest, or (d) using a
-	 * transparent texture with alphaTest, you must specify a customDepthMaterial for proper shadows.
-	 */
-	customDepthMaterial: Material;
-
-	/**
-	 * Same as customDepthMaterial, but used with PointLight.
-	 */
-	customDistanceMaterial: Material;
-
-	/**
-	 * Used to check whether this or derived classes are Object3Ds. Default is true.
-	 * You should not change this, as it is used internally for optimisation.
-	 */
-	isObject3D: true;
-
-	/**
-	 * Calls before rendering object
-	 */
-	onBeforeRender: (
-		renderer: WebGLRenderer,
-		scene: Scene,
-		camera: Camera,
-		geometry: Geometry | BufferGeometry,
-		material: Material,
-		group: Group
-	) => void;
-
-	/**
-	 * Calls after rendering object
-	 */
-	onAfterRender: (
-		renderer: WebGLRenderer,
-		scene: Scene,
-		camera: Camera,
-		geometry: Geometry | BufferGeometry,
-		material: Material,
-		group: Group
-	) => void;
-
-	static DefaultUp: Vector3;
-	static DefaultMatrixAutoUpdate: boolean;
-
-	/**
-	 * This updates the position, rotation and scale with the matrix.
-	 */
-	applyMatrix( matrix: Matrix4 ): void;
-
-	applyQuaternion( quaternion: Quaternion ): this;
-
-	/**
-	 *
-	 */
-	setRotationFromAxisAngle( axis: Vector3, angle: number ): void;
-
-	/**
-	 *
-	 */
-	setRotationFromEuler( euler: Euler ): void;
-
-	/**
-	 *
-	 */
-	setRotationFromMatrix( m: Matrix4 ): void;
-
-	/**
-	 *
-	 */
-	setRotationFromQuaternion( q: Quaternion ): void;
-
-	/**
-	 * Rotate an object along an axis in object space. The axis is assumed to be normalized.
-	 * @param axis	A normalized vector in object space.
-	 * @param angle	The angle in radians.
-	 */
-	rotateOnAxis( axis: Vector3, angle: number ): this;
-
-	/**
-	 * Rotate an object along an axis in world space. The axis is assumed to be normalized. Method Assumes no rotated parent.
-	 * @param axis	A normalized vector in object space.
-	 * @param angle	The angle in radians.
-	 */
-	rotateOnWorldAxis( axis: Vector3, angle: number ): this;
-
-	/**
-	 *
-	 * @param angle
-	 */
-	rotateX( angle: number ): this;
-
-	/**
-	 *
-	 * @param angle
-	 */
-	rotateY( angle: number ): this;
-
-	/**
-	 *
-	 * @param angle
-	 */
-	rotateZ( angle: number ): this;
-
-	/**
-	 * @param axis	A normalized vector in object space.
-	 * @param distance	The distance to translate.
-	 */
-	translateOnAxis( axis: Vector3, distance: number ): this;
-
-	/**
-	 * Translates object along x axis by distance.
-	 * @param distance Distance.
-	 */
-	translateX( distance: number ): this;
-
-	/**
-	 * Translates object along y axis by distance.
-	 * @param distance Distance.
-	 */
-	translateY( distance: number ): this;
-
-	/**
-	 * Translates object along z axis by distance.
-	 * @param distance Distance.
-	 */
-	translateZ( distance: number ): this;
-
-	/**
-	 * Updates the vector from local space to world space.
-	 * @param vector A local vector.
-	 */
-	localToWorld( vector: Vector3 ): Vector3;
-
-	/**
-	 * Updates the vector from world space to local space.
-	 * @param vector A world vector.
-	 */
-	worldToLocal( vector: Vector3 ): Vector3;
-
-	/**
-	 * Rotates object to face point in space.
-	 * @param vector A world vector to look at.
-	 */
-	lookAt( vector: Vector3 | number, y?: number, z?: number ): void;
-
-	/**
-	 * Adds object as child of this object.
-	 */
-	add( ...object: Object3D[] ): this;
-
-	/**
-	 * Removes object as child of this object.
-	 */
-	remove( ...object: Object3D[] ): this;
-
-	/**
-	 * Adds object as a child of this, while maintaining the object's world transform.
-	 */
-	attach( object: Object3D ): this;
-
-	/**
-	 * Searches through the object's children and returns the first with a matching id.
-	 * @param id	Unique number of the object instance
-	 */
-	getObjectById( id: number ): Object3D | undefined;
-
-	/**
-	 * Searches through the object's children and returns the first with a matching name.
-	 * @param name	String to match to the children's Object3d.name property.
-	 */
-	getObjectByName( name: string ): Object3D | undefined;
-
-	getObjectByProperty( name: string, value: string ): Object3D | undefined;
-
-	getWorldPosition( target: Vector3 ): Vector3;
-	getWorldQuaternion( target: Quaternion ): Quaternion;
-	getWorldScale( target: Vector3 ): Vector3;
-	getWorldDirection( target: Vector3 ): Vector3;
-
-	raycast( raycaster: Raycaster, intersects: Intersection[] ): void;
-
-	traverse( callback: ( object: Object3D ) => any ): void;
-
-	traverseVisible( callback: ( object: Object3D ) => any ): void;
-
-	traverseAncestors( callback: ( object: Object3D ) => any ): void;
-
-	/**
-	 * Updates local transform.
-	 */
-	updateMatrix(): void;
-
-	/**
-	 * Updates global transform of the object and its children.
-	 */
-	updateMatrixWorld( force?: boolean ): void;
-
-	updateWorldMatrix( updateParents: boolean, updateChildren: boolean ): void;
-
-	toJSON( meta?: {
-		geometries: any;
-		materials: any;
-		textures: any;
-		images: any;
-	} ): any;
-
-	clone( recursive?: boolean ): this;
-
-	/**
-	 *
-	 * @param object
-	 * @param recursive
-	 */
-	copy( source: this, recursive?: boolean ): this;
-
-}

+ 0 - 109
spine-ts/spine-threejs/src/threejs/core/Raycaster.d.ts

@@ -1,109 +0,0 @@
-import { Vector3 } from './../math/Vector3';
-import { Face3 } from './Face3';
-import { Object3D } from './Object3D';
-import { Vector2 } from './../math/Vector2';
-import { Ray } from './../math/Ray';
-import { Camera } from './../cameras/Camera';
-
-export interface Intersection {
-	distance: number;
-	distanceToRay?: number;
-	point: Vector3;
-	index?: number;
-	face?: Face3 | null;
-	faceIndex?: number;
-	object: Object3D;
-	uv?: Vector2;
-}
-
-export interface RaycasterParameters {
-	Mesh?: any;
-	Line?: any;
-	LOD?: any;
-	Points?: { threshold: number };
-	Sprite?: any;
-}
-
-export class Raycaster {
-
-	/**
-	 * This creates a new raycaster object.
-	 * @param origin The origin vector where the ray casts from.
-	 * @param direction The direction vector that gives direction to the ray. Should be normalized.
-	 * @param near All results returned are further away than near. Near can't be negative. Default value is 0.
-	 * @param far All results returned are closer then far. Far can't be lower then near . Default value is Infinity.
-	 */
-	constructor(
-		origin?: Vector3,
-		direction?: Vector3,
-		near?: number,
-		far?: number
-	);
-
-	/** The Ray used for the raycasting. */
-	ray: Ray;
-
-	/**
-	 * The near factor of the raycaster. This value indicates which objects can be discarded based on the
-	 * distance. This value shouldn't be negative and should be smaller than the far property.
-	 */
-	near: number;
-
-	/**
-	 * The far factor of the raycaster. This value indicates which objects can be discarded based on the
-	 * distance. This value shouldn't be negative and should be larger than the near property.
-	 */
-	far: number;
-
-	/**
-	 * The camera to use when raycasting against view-dependent objects such as billboarded objects like Sprites. This field
-	 * can be set manually or is set when calling "setFromCamera".
-	 */
-	camera: Camera;
-
-	params: RaycasterParameters;
-
-	/**
-	 * The precision factor of the raycaster when intersecting Line objects.
-	 */
-	linePrecision: number;
-
-	/**
-	 * Updates the ray with a new origin and direction.
-	 * @param origin The origin vector where the ray casts from.
-	 * @param direction The normalized direction vector that gives direction to the ray.
-	 */
-	set( origin: Vector3, direction: Vector3 ): void;
-
-	/**
-	 * Updates the ray with a new origin and direction.
-	 * @param coords 2D coordinates of the mouse, in normalized device coordinates (NDC)---X and Y components should be between -1 and 1.
-	 * @param camera camera from which the ray should originate
-	 */
-	setFromCamera( coords: { x: number; y: number }, camera: Camera ): void;
-
-	/**
-	 * Checks all intersection between the ray and the object with or without the descendants. Intersections are returned sorted by distance, closest first.
-	 * @param object The object to check for intersection with the ray.
-	 * @param recursive If true, it also checks all descendants. Otherwise it only checks intersecton with the object. Default is false.
-	 * @param optionalTarget (optional) target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
-	 */
-	intersectObject(
-		object: Object3D,
-		recursive?: boolean,
-		optionalTarget?: Intersection[]
-	): Intersection[];
-
-	/**
-	 * Checks all intersection between the ray and the objects with or without the descendants. Intersections are returned sorted by distance, closest first. Intersections are of the same form as those returned by .intersectObject.
-	 * @param objects The objects to check for intersection with the ray.
-	 * @param recursive If true, it also checks all descendants of the objects. Otherwise it only checks intersecton with the objects. Default is false.
-	 * @param optionalTarget (optional) target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
-	 */
-	intersectObjects(
-		objects: Object3D[],
-		recursive?: boolean,
-		optionalTarget?: Intersection[]
-	): Intersection[];
-
-}

+ 0 - 24
spine-ts/spine-threejs/src/threejs/core/Uniform.d.ts

@@ -1,24 +0,0 @@
-export class Uniform {
-
-	constructor( value: any );
-	/**
-	 * @deprecated
-	 */
-	constructor( type: string, value: any );
-	/**
-	 * @deprecated
-	 */
-	type: string;
-	value: any;
-	/**
-	 * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
-	 */
-	dynamic: boolean;
-	onUpdateCallback: Function;
-
-	/**
-	 * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
-	 */
-	onUpdate( callback: Function ): Uniform;
-
-}

+ 0 - 34
spine-ts/spine-threejs/src/threejs/extras/ImageUtils.d.ts

@@ -1,34 +0,0 @@
-import { Mapping } from '../constants';
-import { Texture } from '../textures/Texture';
-
-export namespace ImageUtils {
-
-	export function getDataURL(
-		image: any,
-	): string;
-
-	/**
-	 * @deprecated
-	 */
-	export let crossOrigin: string;
-
-	/**
-	 * @deprecated Use {@link TextureLoader THREE.TextureLoader()} instead.
-	 */
-	export function loadTexture(
-		url: string,
-		mapping?: Mapping,
-		onLoad?: ( texture: Texture ) => void,
-		onError?: ( message: string ) => void
-	): Texture;
-
-	/**
-	 * @deprecated Use {@link CubeTextureLoader THREE.CubeTextureLoader()} instead.
-	 */
-	export function loadTextureCube(
-		array: string[],
-		mapping?: Mapping,
-		onLoad?: ( texture: Texture ) => void,
-		onError?: ( message: string ) => void
-	): Texture;
-}

+ 0 - 10
spine-ts/spine-threejs/src/threejs/extras/ShapeUtils.d.ts

@@ -1,10 +0,0 @@
-interface Vec2 {
-	x: number;
-	y: number;
-}
-
-export namespace ShapeUtils {
-	export function area( contour: Vec2[] ): number;
-	export function triangulateShape( contour: Vec2[], holes: Vec2[][] ): number[][];
-	export function isClockWise( pts: Vec2[] ): boolean;
-}

+ 0 - 79
spine-ts/spine-threejs/src/threejs/extras/core/Curve.d.ts

@@ -1,79 +0,0 @@
-import { Vector } from './../../math/Vector2';
-
-// Extras / Core /////////////////////////////////////////////////////////////////////
-
-/**
- * An extensible curve object which contains methods for interpolation
- * class Curve&lt;T extends Vector&gt;
- */
-export class Curve<T extends Vector> {
-
-	/**
-	 * This value determines the amount of divisions when calculating the cumulative segment lengths of a curve via .getLengths.
-	 * To ensure precision when using methods like .getSpacedPoints, it is recommended to increase .arcLengthDivisions if the curve is very large.
-	 * Default is 200.
-	 */
-	arcLengthDivisions: number;
-
-	/**
-	 * Returns a vector for point t of the curve where t is between 0 and 1
-	 * getPoint(t: number): T;
-	 */
-	getPoint( t: number, optionalTarget?: T ): T;
-
-	/**
-	 * Returns a vector for point at relative position in curve according to arc length
-	 * getPointAt(u: number): T;
-	 */
-	getPointAt( u: number, optionalTarget?: T ): T;
-
-	/**
-	 * Get sequence of points using getPoint( t )
-	 * getPoints(divisions?: number): T[];
-	 */
-	getPoints( divisions?: number ): T[];
-
-	/**
-	 * Get sequence of equi-spaced points using getPointAt( u )
-	 * getSpacedPoints(divisions?: number): T[];
-	 */
-	getSpacedPoints( divisions?: number ): T[];
-
-	/**
-	 * Get total curve arc length
-	 */
-	getLength(): number;
-
-	/**
-	 * Get list of cumulative segment lengths
-	 */
-	getLengths( divisions?: number ): number[];
-
-	/**
-	 * Update the cumlative segment distance cache
-	 */
-	updateArcLengths(): void;
-
-	/**
-	 * Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equi distance
-	 */
-	getUtoTmapping( u: number, distance: number ): number;
-
-	/**
-	 * Returns a unit vector tangent at t. If the subclassed curve do not implement its tangent derivation, 2 points a small delta apart will be used to find its gradient which seems to give a reasonable approximation
-	 * getTangent(t: number): T;
-	 */
-	getTangent( t: number ): T;
-
-	/**
-	 * Returns tangent at equidistance point u on the curve
-	 * getTangentAt(u: number): T;
-	 */
-	getTangentAt( u: number ): T;
-
-	/**
-	 * @deprecated since r84.
-	 */
-	static create( constructorFunc: Function, getPointFunc: Function ): Function;
-
-}

+ 0 - 35
spine-ts/spine-threejs/src/threejs/extras/core/CurvePath.d.ts

@@ -1,35 +0,0 @@
-import { Curve } from './Curve';
-import { Geometry } from './../../core/Geometry';
-import { Vector } from './../../math/Vector2';
-
-export class CurvePath<T extends Vector> extends Curve<T> {
-
-	constructor();
-
-	curves: Curve<T>[];
-	autoClose: boolean;
-
-	add( curve: Curve<T> ): void;
-	checkConnection(): boolean;
-	closePath(): void;
-	getPoint( t: number ): T;
-	getLength(): number;
-	updateArcLengths(): void;
-	getCurveLengths(): number[];
-	getSpacedPoints( divisions?: number ): T[];
-	getPoints( divisions?: number ): T[];
-
-	/**
-	 * @deprecated Use {@link Geometry#setFromPoints new THREE.Geometry().setFromPoints( points )} instead.
-	 */
-	createPointsGeometry( divisions: number ): Geometry;
-	/**
-	 * @deprecated Use {@link Geometry#setFromPoints new THREE.Geometry().setFromPoints( points )} instead.
-	 */
-	createSpacedPointsGeometry( divisions: number ): Geometry;
-	/**
-	 * @deprecated Use {@link Geometry#setFromPoints new THREE.Geometry().setFromPoints( points )} instead.
-	 */
-	createGeometry( points: T[] ): Geometry;
-
-}

+ 0 - 9
spine-ts/spine-threejs/src/threejs/extras/core/Font.d.ts

@@ -1,9 +0,0 @@
-export class Font {
-
-	constructor( jsondata: any );
-
-	data: string;
-
-	generateShapes( text: string, size: number, divisions: number ): any[];
-
-}

+ 0 - 5
spine-ts/spine-threejs/src/threejs/extras/core/Interpolations.d.ts

@@ -1,5 +0,0 @@
-export namespace Interpolations {
-	export function CatmullRom( t: number, p0: number, p1: number, p2: number, p3: number ): number;
-	export function QuadraticBezier( t: number, p0: number, p1: number, p2: number ): number;
-	export function CubicBezier( t: number, p0: number, p1: number, p2: number, p3: number ): number;
-}

+ 0 - 82
spine-ts/spine-threejs/src/threejs/extras/core/Path.d.ts

@@ -1,82 +0,0 @@
-import { Vector2 } from './../../math/Vector2';
-import { CurvePath } from './CurvePath';
-
-export enum PathActions {
-	MOVE_TO,
-	LINE_TO,
-	QUADRATIC_CURVE_TO, // Bezier quadratic curve
-	BEZIER_CURVE_TO, // Bezier cubic curve
-	CSPLINE_THRU, // Catmull-rom spline
-	ARC, // Circle
-	ELLIPSE,
-}
-
-export interface PathAction {
-	action: PathActions;
-	args: any;
-}
-
-/**
- * a 2d path representation, comprising of points, lines, and cubes, similar to the html5 2d canvas api. It extends CurvePath.
- */
-export class Path extends CurvePath<Vector2> {
-
-	constructor( points?: Vector2[] );
-
-	currentPoint: Vector2;
-
-	/**
-	 * @deprecated Use {@link Path#setFromPoints .setFromPoints()} instead.
-	 */
-	fromPoints( vectors: Vector2[] ): this;
-	setFromPoints( vectors: Vector2[] ): this;
-	moveTo( x: number, y: number ): this;
-	lineTo( x: number, y: number ): this;
-	quadraticCurveTo( aCPx: number, aCPy: number, aX: number, aY: number ): this;
-	bezierCurveTo(
-		aCP1x: number,
-		aCP1y: number,
-		aCP2x: number,
-		aCP2y: number,
-		aX: number,
-		aY: number
-	): this;
-	splineThru( pts: Vector2[] ): this;
-	arc(
-		aX: number,
-		aY: number,
-		aRadius: number,
-		aStartAngle: number,
-		aEndAngle: number,
-		aClockwise: boolean
-	): this;
-	absarc(
-		aX: number,
-		aY: number,
-		aRadius: number,
-		aStartAngle: number,
-		aEndAngle: number,
-		aClockwise: boolean
-	): this;
-	ellipse(
-		aX: number,
-		aY: number,
-		xRadius: number,
-		yRadius: number,
-		aStartAngle: number,
-		aEndAngle: number,
-		aClockwise: boolean,
-		aRotation: number
-	): this;
-	absellipse(
-		aX: number,
-		aY: number,
-		xRadius: number,
-		yRadius: number,
-		aStartAngle: number,
-		aEndAngle: number,
-		aClockwise: boolean,
-		aRotation: number
-	): this;
-
-}

+ 0 - 40
spine-ts/spine-threejs/src/threejs/extras/core/Shape.d.ts

@@ -1,40 +0,0 @@
-import { Vector2 } from './../../math/Vector2';
-import { Path } from './Path';
-import { ExtrudeGeometry } from './../../geometries/ExtrudeGeometry';
-import { ShapeGeometry } from './../../geometries/ShapeGeometry';
-
-/**
- * Defines a 2d shape plane using paths.
- */
-export class Shape extends Path {
-
-	constructor( points?: Vector2[] );
-
-	holes: Path[];
-
-	/**
-	 * @deprecated Use {@link ExtrudeGeometry ExtrudeGeometry()} instead.
-	 */
-	extrude( options?: any ): ExtrudeGeometry;
-
-	/**
-	 * @deprecated Use {@link ShapeGeometry ShapeGeometry()} instead.
-	 */
-	makeGeometry( options?: any ): ShapeGeometry;
-	getPointsHoles( divisions: number ): Vector2[][];
-
-	/**
-	 * @deprecated Use {@link Shape#extractPoints .extractPoints()} instead.
-	 */
-	extractAllPoints(
-		divisions: number
-	): {
-		shape: Vector2[];
-		holes: Vector2[][];
-	};
-	extractPoints( divisions: number ): {
-		shape: Vector2[];
-		holes: Vector2[][];
-	};
-
-}

+ 0 - 25
spine-ts/spine-threejs/src/threejs/extras/core/ShapePath.d.ts

@@ -1,25 +0,0 @@
-import { Vector2 } from './../../math/Vector2';
-import { Shape } from './Shape';
-
-export class ShapePath {
-
-	constructor();
-
-	subPaths: any[];
-	currentPath: any;
-
-	moveTo( x: number, y: number ): this;
-	lineTo( x: number, y: number ): this;
-	quadraticCurveTo( aCPx: number, aCPy: number, aX: number, aY: number ): this;
-	bezierCurveTo(
-		aCP1x: number,
-		aCP1y: number,
-		aCP2x: number,
-		aCP2y: number,
-		aX: number,
-		aY: number
-	): this;
-	splineThru( pts: Vector2[] ): this;
-	toShapes( isCCW: boolean, noHoles?: boolean ): Shape[];
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/extras/curves/ArcCurve.d.ts

@@ -1,13 +0,0 @@
-import { EllipseCurve } from './EllipseCurve';
-export class ArcCurve extends EllipseCurve {
-
-	constructor(
-		aX: number,
-		aY: number,
-		aRadius: number,
-		aStartAngle: number,
-		aEndAngle: number,
-		aClockwise: boolean
-	);
-
-}

+ 0 - 48
spine-ts/spine-threejs/src/threejs/extras/curves/CatmullRomCurve3.d.ts

@@ -1,48 +0,0 @@
-import { Vector3 } from './../../math/Vector3';
-import { Curve } from './../core/Curve';
-
-// Extras / Curves /////////////////////////////////////////////////////////////////////
-export namespace CurveUtils {
-	export function tangentQuadraticBezier(
-		t: number,
-		p0: number,
-		p1: number,
-		p2: number
-	): number;
-	export function tangentCubicBezier(
-		t: number,
-		p0: number,
-		p1: number,
-		p2: number,
-		p3: number
-	): number;
-	export function tangentSpline(
-		t: number,
-		p0: number,
-		p1: number,
-		p2: number,
-		p3: number
-	): number;
-	export function interpolate(
-		p0: number,
-		p1: number,
-		p2: number,
-		p3: number,
-		t: number
-	): number;
-}
-
-export class CatmullRomCurve3 extends Curve<Vector3> {
-
-	constructor(
-		points?: Vector3[],
-		closed?: boolean,
-		curveType?: string,
-		tension?: number
-	);
-
-	points: Vector3[];
-
-	getPoint( t: number ): Vector3;
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/extras/curves/CubicBezierCurve.d.ts

@@ -1,13 +0,0 @@
-import { Vector2 } from './../../math/Vector2';
-import { Curve } from './../core/Curve';
-
-export class CubicBezierCurve extends Curve<Vector2> {
-
-	constructor( v0: Vector2, v1: Vector2, v2: Vector2, v3: Vector2 );
-
-	v0: Vector2;
-	v1: Vector2;
-	v2: Vector2;
-	v3: Vector2;
-
-}

+ 0 - 15
spine-ts/spine-threejs/src/threejs/extras/curves/CubicBezierCurve3.d.ts

@@ -1,15 +0,0 @@
-import { Vector3 } from './../../math/Vector3';
-import { Curve } from './../core/Curve';
-
-export class CubicBezierCurve3 extends Curve<Vector3> {
-
-	constructor( v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3 );
-
-	v0: Vector3;
-	v1: Vector3;
-	v2: Vector3;
-	v3: Vector3;
-
-	getPoint( t: number ): Vector3;
-
-}

+ 0 - 10
spine-ts/spine-threejs/src/threejs/extras/curves/Curves.d.ts

@@ -1,10 +0,0 @@
-export * from './ArcCurve';
-export * from './CatmullRomCurve3';
-export * from './CubicBezierCurve';
-export * from './CubicBezierCurve3';
-export * from './EllipseCurve';
-export * from './LineCurve';
-export * from './LineCurve3';
-export * from './QuadraticBezierCurve';
-export * from './QuadraticBezierCurve3';
-export * from './SplineCurve';

+ 0 - 26
spine-ts/spine-threejs/src/threejs/extras/curves/EllipseCurve.d.ts

@@ -1,26 +0,0 @@
-import { Curve } from './../core/Curve';
-import { Vector2 } from '../../math/Vector2';
-
-export class EllipseCurve extends Curve<Vector2> {
-
-	constructor(
-		aX: number,
-		aY: number,
-		xRadius: number,
-		yRadius: number,
-		aStartAngle: number,
-		aEndAngle: number,
-		aClockwise: boolean,
-		aRotation: number
-	);
-
-	aX: number;
-	aY: number;
-	xRadius: number;
-	yRadius: number;
-	aStartAngle: number;
-	aEndAngle: number;
-	aClockwise: boolean;
-	aRotation: number;
-
-}

+ 0 - 11
spine-ts/spine-threejs/src/threejs/extras/curves/LineCurve.d.ts

@@ -1,11 +0,0 @@
-import { Vector2 } from './../../math/Vector2';
-import { Curve } from './../core/Curve';
-
-export class LineCurve extends Curve<Vector2> {
-
-	constructor( v1: Vector2, v2: Vector2 );
-
-	v1: Vector2;
-	v2: Vector2;
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/extras/curves/LineCurve3.d.ts

@@ -1,13 +0,0 @@
-import { Vector3 } from './../../math/Vector3';
-import { Curve } from './../core/Curve';
-
-export class LineCurve3 extends Curve<Vector3> {
-
-	constructor( v1: Vector3, v2: Vector3 );
-
-	v1: Vector3;
-	v2: Vector3;
-
-	getPoint( t: number ): Vector3;
-
-}

+ 0 - 12
spine-ts/spine-threejs/src/threejs/extras/curves/QuadraticBezierCurve.d.ts

@@ -1,12 +0,0 @@
-import { Vector2 } from './../../math/Vector2';
-import { Curve } from './../core/Curve';
-
-export class QuadraticBezierCurve extends Curve<Vector2> {
-
-	constructor( v0: Vector2, v1: Vector2, v2: Vector2 );
-
-	v0: Vector2;
-	v1: Vector2;
-	v2: Vector2;
-
-}

+ 0 - 14
spine-ts/spine-threejs/src/threejs/extras/curves/QuadraticBezierCurve3.d.ts

@@ -1,14 +0,0 @@
-import { Vector3 } from './../../math/Vector3';
-import { Curve } from './../core/Curve';
-
-export class QuadraticBezierCurve3 extends Curve<Vector3> {
-
-	constructor( v0: Vector3, v1: Vector3, v2: Vector3 );
-
-	v0: Vector3;
-	v1: Vector3;
-	v2: Vector3;
-
-	getPoint( t: number ): Vector3;
-
-}

+ 0 - 10
spine-ts/spine-threejs/src/threejs/extras/curves/SplineCurve.d.ts

@@ -1,10 +0,0 @@
-import { Vector2 } from './../../math/Vector2';
-import { Curve } from './../core/Curve';
-
-export class SplineCurve extends Curve<Vector2> {
-
-	constructor( points?: Vector2[] );
-
-	points: Vector2[];
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/extras/objects/ImmediateRenderObject.d.ts

@@ -1,13 +0,0 @@
-import { Object3D } from './../../core/Object3D';
-import { Material } from './../../materials/Material';
-
-// Extras / Objects /////////////////////////////////////////////////////////////////////
-
-export class ImmediateRenderObject extends Object3D {
-
-	constructor( material: Material );
-
-	material: Material;
-	render( renderCallback: Function ): void;
-
-}

+ 0 - 58
spine-ts/spine-threejs/src/threejs/geometries/BoxGeometry.d.ts

@@ -1,58 +0,0 @@
-import { Geometry } from '../core/Geometry';
-import { BufferGeometry } from '../core/BufferGeometry';
-
-// Extras / Geometries /////////////////////////////////////////////////////////////////////
-export class BoxBufferGeometry extends BufferGeometry {
-
-	constructor(
-		width?: number,
-		height?: number,
-		depth?: number,
-		widthSegments?: number,
-		heightSegments?: number,
-		depthSegments?: number
-	);
-
-	parameters: {
-		width: number;
-		height: number;
-		depth: number;
-		widthSegments: number;
-		heightSegments: number;
-		depthSegments: number;
-	};
-
-}
-
-/**
- * BoxGeometry is the quadrilateral primitive geometry class. It is typically used for creating a cube or irregular quadrilateral of the dimensions provided within the (optional) 'width', 'height', & 'depth' constructor arguments.
- */
-export class BoxGeometry extends Geometry {
-
-	/**
-	 * @param width — Width of the sides on the X axis.
-	 * @param height — Height of the sides on the Y axis.
-	 * @param depth — Depth of the sides on the Z axis.
-	 * @param widthSegments — Number of segmented faces along the width of the sides.
-	 * @param heightSegments — Number of segmented faces along the height of the sides.
-	 * @param depthSegments — Number of segmented faces along the depth of the sides.
-	 */
-	constructor(
-		width?: number,
-		height?: number,
-		depth?: number,
-		widthSegments?: number,
-		heightSegments?: number,
-		depthSegments?: number
-	);
-
-	parameters: {
-		width: number;
-		height: number;
-		depth: number;
-		widthSegments: number;
-		heightSegments: number;
-		depthSegments: number;
-	};
-
-}

+ 0 - 38
spine-ts/spine-threejs/src/threejs/geometries/CircleGeometry.d.ts

@@ -1,38 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from '../core/BufferGeometry';
-
-export class CircleBufferGeometry extends BufferGeometry {
-
-	constructor(
-		radius?: number,
-		segments?: number,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		radius: number;
-		segments: number;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}
-
-export class CircleGeometry extends Geometry {
-
-	constructor(
-		radius?: number,
-		segments?: number,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		radius: number;
-		segments: number;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}

+ 0 - 30
spine-ts/spine-threejs/src/threejs/geometries/ConeGeometry.d.ts

@@ -1,30 +0,0 @@
-import { CylinderGeometry } from './CylinderGeometry';
-import { CylinderBufferGeometry } from './CylinderGeometry';
-
-export class ConeBufferGeometry extends CylinderBufferGeometry {
-
-	constructor(
-		radius?: number,
-		height?: number,
-		radialSegment?: number,
-		heightSegment?: number,
-		openEnded?: boolean,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-}
-
-export class ConeGeometry extends CylinderGeometry {
-
-	constructor(
-		radius?: number,
-		height?: number,
-		radialSegment?: number,
-		heightSegment?: number,
-		openEnded?: boolean,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-}

+ 0 - 62
spine-ts/spine-threejs/src/threejs/geometries/CylinderGeometry.d.ts

@@ -1,62 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from '../core/BufferGeometry';
-
-export class CylinderBufferGeometry extends BufferGeometry {
-
-	constructor(
-		radiusTop?: number,
-		radiusBottom?: number,
-		height?: number,
-		radialSegments?: number,
-		heightSegments?: number,
-		openEnded?: boolean,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		radiusTop: number;
-		radiusBottom: number;
-		height: number;
-		radialSegments: number;
-		heightSegments: number;
-		openEnded: boolean;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}
-
-export class CylinderGeometry extends Geometry {
-
-	/**
-	 * @param radiusTop — Radius of the cylinder at the top.
-	 * @param radiusBottom — Radius of the cylinder at the bottom.
-	 * @param height — Height of the cylinder.
-	 * @param radiusSegments — Number of segmented faces around the circumference of the cylinder.
-	 * @param heightSegments — Number of rows of faces along the height of the cylinder.
-	 * @param openEnded - A Boolean indicating whether or not to cap the ends of the cylinder.
-	 */
-	constructor(
-		radiusTop?: number,
-		radiusBottom?: number,
-		height?: number,
-		radiusSegments?: number,
-		heightSegments?: number,
-		openEnded?: boolean,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		radiusTop: number;
-		radiusBottom: number;
-		height: number;
-		radialSegments: number;
-		heightSegments: number;
-		openEnded: boolean;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}

+ 0 - 19
spine-ts/spine-threejs/src/threejs/geometries/DodecahedronGeometry.d.ts

@@ -1,19 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { PolyhedronBufferGeometry } from './PolyhedronGeometry';
-
-export class DodecahedronBufferGeometry extends PolyhedronBufferGeometry {
-
-	constructor( radius?: number, detail?: number );
-
-}
-
-export class DodecahedronGeometry extends Geometry {
-
-	constructor( radius?: number, detail?: number );
-
-	parameters: {
-		radius: number;
-		detail: number;
-	};
-
-}

+ 0 - 8
spine-ts/spine-threejs/src/threejs/geometries/EdgesGeometry.d.ts

@@ -1,8 +0,0 @@
-import { BufferGeometry } from '../core/BufferGeometry';
-import { Geometry } from '../core/Geometry';
-
-export class EdgesGeometry extends BufferGeometry {
-
-	constructor( geometry: BufferGeometry | Geometry, thresholdAngle?: number );
-
-}

+ 0 - 59
spine-ts/spine-threejs/src/threejs/geometries/ExtrudeGeometry.d.ts

@@ -1,59 +0,0 @@
-import { Curve } from './../extras/core/Curve';
-import { Vector2 } from './../math/Vector2';
-import { Vector3 } from './../math/Vector3';
-import { Shape } from './../extras/core/Shape';
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export interface ExtrudeGeometryOptions {
-	curveSegments?: number;
-	steps?: number;
-	depth?: number;
-	bevelEnabled?: boolean;
-	bevelThickness?: number;
-	bevelSize?: number;
-	bevelOffset?: number;
-	bevelSegments?: number;
-	extrudePath?: Curve<Vector3>;
-	UVGenerator?: UVGenerator;
-}
-
-export interface UVGenerator {
-	generateTopUV(
-		geometry: ExtrudeBufferGeometry,
-		vertices: number[],
-		indexA: number,
-		indexB: number,
-		indexC: number
-	): Vector2[];
-	generateSideWallUV(
-		geometry: ExtrudeBufferGeometry,
-		vertices: number[],
-		indexA: number,
-		indexB: number,
-		indexC: number,
-		indexD: number
-	): Vector2[];
-}
-
-export class ExtrudeBufferGeometry extends BufferGeometry {
-
-	constructor( shapes: Shape | Shape[], options?: ExtrudeGeometryOptions );
-
-	static WorldUVGenerator: UVGenerator;
-
-	addShapeList( shapes: Shape[], options?: any ): void;
-	addShape( shape: Shape, options?: any ): void;
-
-}
-
-export class ExtrudeGeometry extends Geometry {
-
-	constructor( shapes: Shape | Shape[], options?: ExtrudeGeometryOptions );
-
-	static WorldUVGenerator: UVGenerator;
-
-	addShapeList( shapes: Shape[], options?: any ): void;
-	addShape( shape: Shape, options?: any ): void;
-
-}

+ 0 - 22
spine-ts/spine-threejs/src/threejs/geometries/Geometries.d.ts

@@ -1,22 +0,0 @@
-export * from './WireframeGeometry';
-export * from './ParametricGeometry';
-export * from './TetrahedronGeometry';
-export * from './OctahedronGeometry';
-export * from './IcosahedronGeometry';
-export * from './DodecahedronGeometry';
-export * from './PolyhedronGeometry';
-export * from './TubeGeometry';
-export * from './TorusKnotGeometry';
-export * from './TorusGeometry';
-export * from './TextGeometry';
-export * from './SphereGeometry';
-export * from './RingGeometry';
-export * from './PlaneGeometry';
-export * from './LatheGeometry';
-export * from './ShapeGeometry';
-export * from './ExtrudeGeometry';
-export * from './EdgesGeometry';
-export * from './ConeGeometry';
-export * from './CylinderGeometry';
-export * from './CircleGeometry';
-export * from './BoxGeometry';

+ 0 - 16
spine-ts/spine-threejs/src/threejs/geometries/IcosahedronGeometry.d.ts

@@ -1,16 +0,0 @@
-import {
-	PolyhedronGeometry,
-	PolyhedronBufferGeometry,
-} from './PolyhedronGeometry';
-
-export class IcosahedronBufferGeometry extends PolyhedronBufferGeometry {
-
-	constructor( radius?: number, detail?: number );
-
-}
-
-export class IcosahedronGeometry extends PolyhedronGeometry {
-
-	constructor( radius?: number, detail?: number );
-
-}

+ 0 - 39
spine-ts/spine-threejs/src/threejs/geometries/LatheGeometry.d.ts

@@ -1,39 +0,0 @@
-import { Vector2 } from './../math/Vector2';
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class LatheBufferGeometry extends BufferGeometry {
-
-	constructor(
-		points: Vector2[],
-		segments?: number,
-		phiStart?: number,
-		phiLength?: number
-	);
-
-	parameters: {
-		points: Vector2[];
-		segments: number;
-		phiStart: number;
-		phiLength: number;
-	};
-
-}
-
-export class LatheGeometry extends Geometry {
-
-	constructor(
-		points: Vector2[],
-		segments?: number,
-		phiStart?: number,
-		phiLength?: number
-	);
-
-	parameters: {
-		points: Vector2[];
-		segments: number;
-		phiStart: number;
-		phiLength: number;
-	};
-
-}

+ 0 - 16
spine-ts/spine-threejs/src/threejs/geometries/OctahedronGeometry.d.ts

@@ -1,16 +0,0 @@
-import {
-	PolyhedronGeometry,
-	PolyhedronBufferGeometry,
-} from './PolyhedronGeometry';
-
-export class OctahedronBufferGeometry extends PolyhedronBufferGeometry {
-
-	constructor( radius?: number, detail?: number );
-
-}
-
-export class OctahedronGeometry extends PolyhedronGeometry {
-
-	constructor( radius?: number, detail?: number );
-
-}

+ 0 - 35
spine-ts/spine-threejs/src/threejs/geometries/ParametricGeometry.d.ts

@@ -1,35 +0,0 @@
-import { Vector3 } from './../math/Vector3';
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class ParametricBufferGeometry extends BufferGeometry {
-
-	constructor(
-		func: ( u: number, v: number, dest: Vector3 ) => void,
-		slices: number,
-		stacks: number
-	);
-
-	parameters: {
-		func: ( u: number, v: number, dest: Vector3 ) => void;
-		slices: number;
-		stacks: number;
-	};
-
-}
-
-export class ParametricGeometry extends Geometry {
-
-	constructor(
-		func: ( u: number, v: number, dest: Vector3 ) => void,
-		slices: number,
-		stacks: number
-	);
-
-	parameters: {
-		func: ( u: number, v: number, dest: Vector3 ) => void;
-		slices: number;
-		stacks: number;
-	};
-
-}

+ 0 - 38
spine-ts/spine-threejs/src/threejs/geometries/PlaneGeometry.d.ts

@@ -1,38 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class PlaneBufferGeometry extends BufferGeometry {
-
-	constructor(
-		width?: number,
-		height?: number,
-		widthSegments?: number,
-		heightSegments?: number
-	);
-
-	parameters: {
-		width: number;
-		height: number;
-		widthSegments: number;
-		heightSegments: number;
-	};
-
-}
-
-export class PlaneGeometry extends Geometry {
-
-	constructor(
-		width?: number,
-		height?: number,
-		widthSegments?: number,
-		heightSegments?: number
-	);
-
-	parameters: {
-		width: number;
-		height: number;
-		widthSegments: number;
-		heightSegments: number;
-	};
-
-}

+ 0 - 40
spine-ts/spine-threejs/src/threejs/geometries/PolyhedronGeometry.d.ts

@@ -1,40 +0,0 @@
-import { Sphere } from './../math/Sphere';
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class PolyhedronBufferGeometry extends BufferGeometry {
-
-	constructor(
-		vertices: number[],
-		indices: number[],
-		radius?: number,
-		detail?: number
-	);
-
-	parameters: {
-		vertices: number[];
-		indices: number[];
-		radius: number;
-		detail: number;
-	};
-
-}
-
-export class PolyhedronGeometry extends Geometry {
-
-	constructor(
-		vertices: number[],
-		indices: number[],
-		radius?: number,
-		detail?: number
-	);
-
-	parameters: {
-		vertices: number[];
-		indices: number[];
-		radius: number;
-		detail: number;
-	};
-	boundingSphere: Sphere;
-
-}

+ 0 - 46
spine-ts/spine-threejs/src/threejs/geometries/RingGeometry.d.ts

@@ -1,46 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class RingBufferGeometry extends BufferGeometry {
-
-	constructor(
-		innerRadius?: number,
-		outerRadius?: number,
-		thetaSegments?: number,
-		phiSegments?: number,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		innerRadius: number;
-		outerRadius: number;
-		thetaSegments: number;
-		phiSegments: number;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}
-
-export class RingGeometry extends Geometry {
-
-	constructor(
-		innerRadius?: number,
-		outerRadius?: number,
-		thetaSegments?: number,
-		phiSegments?: number,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		innerRadius: number;
-		outerRadius: number;
-		thetaSegments: number;
-		phiSegments: number;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}

+ 0 - 18
spine-ts/spine-threejs/src/threejs/geometries/ShapeGeometry.d.ts

@@ -1,18 +0,0 @@
-import { Shape } from './../extras/core/Shape';
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class ShapeBufferGeometry extends BufferGeometry {
-
-	constructor( shapes: Shape | Shape[], curveSegments?: number );
-
-}
-
-export class ShapeGeometry extends Geometry {
-
-	constructor( shapes: Shape | Shape[], curveSegments?: number );
-
-	addShapeList( shapes: Shape[], options: any ): ShapeGeometry;
-	addShape( shape: Shape, options?: any ): void;
-
-}

+ 0 - 64
spine-ts/spine-threejs/src/threejs/geometries/SphereGeometry.d.ts

@@ -1,64 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class SphereBufferGeometry extends BufferGeometry {
-
-	constructor(
-		radius?: number,
-		widthSegments?: number,
-		heightSegments?: number,
-		phiStart?: number,
-		phiLength?: number,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		radius: number;
-		widthSegments: number;
-		heightSegments: number;
-		phiStart: number;
-		phiLength: number;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}
-
-/**
- * A class for generating sphere geometries
- */
-export class SphereGeometry extends Geometry {
-
-	/**
-	 * The geometry is created by sweeping and calculating vertexes around the Y axis (horizontal sweep) and the Z axis (vertical sweep). Thus, incomplete spheres (akin to 'sphere slices') can be created through the use of different values of phiStart, phiLength, thetaStart and thetaLength, in order to define the points in which we start (or end) calculating those vertices.
-	 *
-	 * @param radius — sphere radius. Default is 50.
-	 * @param widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8.
-	 * @param heightSegments — number of vertical segments. Minimum value is 2, and the default is 6.
-	 * @param phiStart — specify horizontal starting angle. Default is 0.
-	 * @param phiLength — specify horizontal sweep angle size. Default is Math.PI * 2.
-	 * @param thetaStart — specify vertical starting angle. Default is 0.
-	 * @param thetaLength — specify vertical sweep angle size. Default is Math.PI.
-	 */
-	constructor(
-		radius?: number,
-		widthSegments?: number,
-		heightSegments?: number,
-		phiStart?: number,
-		phiLength?: number,
-		thetaStart?: number,
-		thetaLength?: number
-	);
-
-	parameters: {
-		radius: number;
-		widthSegments: number;
-		heightSegments: number;
-		phiStart: number;
-		phiLength: number;
-		thetaStart: number;
-		thetaLength: number;
-	};
-
-}

+ 0 - 13
spine-ts/spine-threejs/src/threejs/geometries/TetrahedronGeometry.d.ts

@@ -1,13 +0,0 @@
-import { PolyhedronGeometry, PolyhedronBufferGeometry } from './PolyhedronGeometry';
-
-export class TetrahedronBufferGeometry extends PolyhedronBufferGeometry {
-
-	constructor( radius?: number, detail?: number );
-
-}
-
-export class TetrahedronGeometry extends PolyhedronGeometry {
-
-	constructor( radius?: number, detail?: number );
-
-}

+ 0 - 50
spine-ts/spine-threejs/src/threejs/geometries/TextGeometry.d.ts

@@ -1,50 +0,0 @@
-import { Font } from './../extras/core/Font';
-import { ExtrudeGeometry, ExtrudeBufferGeometry } from './ExtrudeGeometry';
-
-export interface TextGeometryParameters {
-	font?: Font;
-	size?: number;
-	height?: number;
-	curveSegments?: number;
-	bevelEnabled?: boolean;
-	bevelThickness?: number;
-	bevelSize?: number;
-	bevelOffset?: number;
-	bevelSegments?: number;
-}
-
-export class TextBufferGeometry extends ExtrudeBufferGeometry {
-
-	constructor( text: string, parameters?: TextGeometryParameters );
-
-	parameters: {
-		font: Font;
-		size: number;
-		height: number;
-		curveSegments: number;
-		bevelEnabled: boolean;
-		bevelThickness: number;
-		bevelSize: number;
-		bevelOffset: number;
-		bevelSegments: number;
-	};
-
-}
-
-export class TextGeometry extends ExtrudeGeometry {
-
-	constructor( text: string, parameters?: TextGeometryParameters );
-
-	parameters: {
-		font: Font;
-		size: number;
-		height: number;
-		curveSegments: number;
-		bevelEnabled: boolean;
-		bevelThickness: number;
-		bevelSize: number;
-		bevelOffset: number;
-		bevelSegments: number;
-	};
-
-}

+ 0 - 42
spine-ts/spine-threejs/src/threejs/geometries/TorusGeometry.d.ts

@@ -1,42 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class TorusBufferGeometry extends BufferGeometry {
-
-	constructor(
-		radius?: number,
-		tube?: number,
-		radialSegments?: number,
-		tubularSegments?: number,
-		arc?: number
-	);
-
-	parameters: {
-		radius: number;
-		tube: number;
-		radialSegments: number;
-		tubularSegments: number;
-		arc: number;
-	};
-
-}
-
-export class TorusGeometry extends Geometry {
-
-	constructor(
-		radius?: number,
-		tube?: number,
-		radialSegments?: number,
-		tubularSegments?: number,
-		arc?: number
-	);
-
-	parameters: {
-		radius: number;
-		tube: number;
-		radialSegments: number;
-		tubularSegments: number;
-		arc: number;
-	};
-
-}

+ 0 - 48
spine-ts/spine-threejs/src/threejs/geometries/TorusKnotGeometry.d.ts

@@ -1,48 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class TorusKnotBufferGeometry extends BufferGeometry {
-
-	constructor(
-		radius?: number,
-		tube?: number,
-		tubularSegments?: number,
-		radialSegments?: number,
-		p?: number,
-		q?: number
-	);
-
-	parameters: {
-		radius: number;
-		tube: number;
-		tubularSegments: number;
-		radialSegments: number;
-		p: number;
-		q: number;
-		heightScale: number;
-	};
-
-}
-
-export class TorusKnotGeometry extends Geometry {
-
-	constructor(
-		radius?: number,
-		tube?: number,
-		tubularSegments?: number,
-		radialSegments?: number,
-		p?: number,
-		q?: number
-	);
-
-	parameters: {
-		radius: number;
-		tube: number;
-		tubularSegments: number;
-		radialSegments: number;
-		p: number;
-		q: number;
-		heightScale: number;
-	};
-
-}

+ 0 - 50
spine-ts/spine-threejs/src/threejs/geometries/TubeGeometry.d.ts

@@ -1,50 +0,0 @@
-import { Curve } from './../extras/core/Curve';
-import { Vector3 } from './../math/Vector3';
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class TubeBufferGeometry extends BufferGeometry {
-
-	constructor(
-		path: Curve<Vector3>,
-		tubularSegments?: number,
-		radius?: number,
-		radiusSegments?: number,
-		closed?: boolean
-	);
-
-	parameters: {
-		path: Curve<Vector3>;
-		tubularSegments: number;
-		radius: number;
-		radialSegments: number;
-		closed: boolean;
-	};
-	tangents: Vector3[];
-	normals: Vector3[];
-	binormals: Vector3[];
-
-}
-
-export class TubeGeometry extends Geometry {
-
-	constructor(
-		path: Curve<Vector3>,
-		tubularSegments?: number,
-		radius?: number,
-		radiusSegments?: number,
-		closed?: boolean
-	);
-
-	parameters: {
-		path: Curve<Vector3>;
-		tubularSegments: number;
-		radius: number;
-		radialSegments: number;
-		closed: boolean;
-	};
-	tangents: Vector3[];
-	normals: Vector3[];
-	binormals: Vector3[];
-
-}

+ 0 - 8
spine-ts/spine-threejs/src/threejs/geometries/WireframeGeometry.d.ts

@@ -1,8 +0,0 @@
-import { Geometry } from './../core/Geometry';
-import { BufferGeometry } from './../core/BufferGeometry';
-
-export class WireframeGeometry extends BufferGeometry {
-
-	constructor( geometry: Geometry | BufferGeometry );
-
-}

+ 0 - 27
spine-ts/spine-threejs/src/threejs/helpers/ArrowHelper.d.ts

@@ -1,27 +0,0 @@
-import { Vector3 } from './../math/Vector3';
-import { Line } from './../objects/Line';
-import { Mesh } from './../objects/Mesh';
-import { Color } from './../math/Color';
-import { Object3D } from './../core/Object3D';
-
-// Extras / Helpers /////////////////////////////////////////////////////////////////////
-
-export class ArrowHelper extends Object3D {
-
-	constructor(
-		dir: Vector3,
-		origin?: Vector3,
-		length?: number,
-		hex?: number,
-		headLength?: number,
-		headWidth?: number
-	);
-
-	line: Line;
-	cone: Mesh;
-
-	setDirection( dir: Vector3 ): void;
-	setLength( length: number, headLength?: number, headWidth?: number ): void;
-	setColor( color: Color | string | number ): void;
-
-}

+ 0 - 7
spine-ts/spine-threejs/src/threejs/helpers/AxesHelper.d.ts

@@ -1,7 +0,0 @@
-import { LineSegments } from './../objects/LineSegments';
-
-export class AxesHelper extends LineSegments {
-
-	constructor( size?: number );
-
-}

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно