angular-three-soba 1.12.4 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/abstractions/lib/billboard/billboard.d.ts +1 -1
  2. package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +1 -1
  3. package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +1 -1
  4. package/abstractions/lib/edges/edges.d.ts +2 -2
  5. package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +1 -1
  6. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +1 -1
  7. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +2 -2
  8. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +1 -1
  9. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +1 -1
  10. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +2 -2
  11. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +1 -1
  12. package/abstractions/lib/line/line-input.d.ts +1 -1
  13. package/abstractions/lib/line/line.d.ts +1 -1
  14. package/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.d.ts +1 -1
  15. package/abstractions/lib/text/text.d.ts +1 -1
  16. package/abstractions/lib/text-3d/text-3d.d.ts +1 -1
  17. package/cameras/lib/camera/camera-content.d.ts +1 -1
  18. package/cameras/lib/camera/camera.d.ts +1 -1
  19. package/cameras/lib/cube-camera/cube-camera.d.ts +1 -1
  20. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +1 -1
  21. package/controls/lib/orbit-controls/orbit-controls.d.ts +1 -1
  22. package/esm2022/abstractions/lib/billboard/billboard.mjs +74 -0
  23. package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +120 -0
  24. package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +99 -0
  25. package/esm2022/abstractions/lib/edges/edges.mjs +96 -0
  26. package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +213 -0
  27. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +92 -0
  28. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +184 -0
  29. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +46 -0
  30. package/{esm2020 → esm2022}/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +8 -7
  31. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  32. package/{esm2020 → esm2022}/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +8 -7
  33. package/esm2022/abstractions/lib/line/line-input.mjs +76 -0
  34. package/esm2022/abstractions/lib/line/line.mjs +133 -0
  35. package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
  36. package/esm2022/abstractions/lib/text/text.mjs +115 -0
  37. package/esm2022/abstractions/lib/text-3d/text-3d.mjs +145 -0
  38. package/esm2022/cameras/lib/camera/camera-content.mjs +21 -0
  39. package/esm2022/cameras/lib/camera/camera.mjs +75 -0
  40. package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +131 -0
  41. package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +93 -0
  42. package/{esm2020 → esm2022}/cameras/lib/perspective-camera/perspective-camera.mjs +8 -7
  43. package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +147 -0
  44. package/esm2022/loaders/index.mjs +6 -0
  45. package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +10 -0
  46. package/esm2022/loaders/lib/loader/loader.mjs +134 -0
  47. package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +75 -0
  48. package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +328 -0
  49. package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +158 -0
  50. package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +238 -0
  51. package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +68 -0
  52. package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +26 -0
  53. package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +47 -0
  54. package/esm2022/performance/lib/adaptive/adaptive-events.mjs +37 -0
  55. package/esm2022/performance/lib/detailed/detailed.mjs +54 -0
  56. package/esm2022/performance/lib/stats/stats.mjs +80 -0
  57. package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +61 -0
  58. package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +249 -0
  59. package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +201 -0
  60. package/{esm2020 → esm2022}/staging/lib/bounds/bounds.mjs +8 -7
  61. package/esm2022/staging/lib/camera-shake/camera-shake.mjs +122 -0
  62. package/esm2022/staging/lib/caustics/caustics.mjs +364 -0
  63. package/esm2022/staging/lib/center/center.mjs +143 -0
  64. package/esm2022/staging/lib/cloud/cloud.mjs +160 -0
  65. package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +228 -0
  66. package/esm2022/staging/lib/environment/environment-cube.mjs +41 -0
  67. package/esm2022/staging/lib/environment/environment-ground.mjs +67 -0
  68. package/esm2022/staging/lib/environment/environment-inputs.mjs +87 -0
  69. package/esm2022/staging/lib/environment/environment-map.mjs +39 -0
  70. package/esm2022/staging/lib/environment/environment-portal.mjs +111 -0
  71. package/{esm2020 → esm2022}/staging/lib/environment/environment.mjs +13 -11
  72. package/esm2022/staging/lib/float/float.mjs +77 -0
  73. package/esm2022/staging/lib/sky/sky.mjs +109 -0
  74. package/esm2022/staging/lib/sparkles/sparkles.mjs +210 -0
  75. package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +51 -0
  76. package/esm2022/staging/lib/spot-light/spot-light-input.mjs +62 -0
  77. package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +74 -0
  78. package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +126 -0
  79. package/{esm2020 → esm2022}/staging/lib/spot-light/spot-light-shadow.mjs +8 -7
  80. package/esm2022/staging/lib/spot-light/spot-light.mjs +117 -0
  81. package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +86 -0
  82. package/{esm2020 → esm2022}/staging/lib/stage/stage.mjs +13 -11
  83. package/esm2022/staging/lib/stars/stars.mjs +140 -0
  84. package/{fesm2020 → fesm2022}/angular-three-soba-abstractions.mjs +89 -89
  85. package/{fesm2015 → fesm2022}/angular-three-soba-abstractions.mjs.map +1 -1
  86. package/{fesm2015 → fesm2022}/angular-three-soba-cameras.mjs +21 -21
  87. package/{fesm2015 → fesm2022}/angular-three-soba-cameras.mjs.map +1 -1
  88. package/{fesm2020 → fesm2022}/angular-three-soba-controls.mjs +5 -5
  89. package/fesm2022/angular-three-soba-controls.mjs.map +1 -0
  90. package/{fesm2020 → fesm2022}/angular-three-soba-loaders.mjs +15 -8
  91. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -0
  92. package/{fesm2020 → fesm2022}/angular-three-soba-materials.mjs +25 -25
  93. package/fesm2022/angular-three-soba-materials.mjs.map +1 -0
  94. package/{fesm2020 → fesm2022}/angular-three-soba-misc.mjs +3 -3
  95. package/{fesm2020 → fesm2022}/angular-three-soba-misc.mjs.map +1 -1
  96. package/{fesm2020 → fesm2022}/angular-three-soba-performance.mjs +14 -14
  97. package/{fesm2020 → fesm2022}/angular-three-soba-performance.mjs.map +1 -1
  98. package/{fesm2020 → fesm2022}/angular-three-soba-shaders.mjs +2 -2
  99. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -0
  100. package/{fesm2020 → fesm2022}/angular-three-soba-staging.mjs +139 -139
  101. package/{fesm2020 → fesm2022}/angular-three-soba-staging.mjs.map +1 -1
  102. package/loaders/index.d.ts +1 -0
  103. package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +3 -0
  104. package/loaders/lib/loader/loader.d.ts +1 -1
  105. package/materials/lib/mesh-distort-material/mesh-distort-material.d.ts +8 -3
  106. package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +1 -1
  107. package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +1 -1
  108. package/materials/lib/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  109. package/materials/lib/mesh-wobble-material/mesh-wobble-material.d.ts +1 -1
  110. package/package.json +43 -68
  111. package/performance/lib/adaptive/adaptive-dpr.d.ts +1 -1
  112. package/performance/lib/detailed/detailed.d.ts +1 -1
  113. package/performance/lib/stats/stats.d.ts +1 -1
  114. package/plugin/package.json +1 -1
  115. package/plugin/src/generators/init/compat.js +1 -1
  116. package/plugin/src/generators/init/compat.js.map +1 -1
  117. package/plugin/src/generators/init/init.d.ts +1 -1
  118. package/plugin/src/generators/init/init.js +1 -1
  119. package/plugin/src/generators/init/init.js.map +1 -1
  120. package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +2 -2
  121. package/staging/lib/accumulative-shadows/randomized-lights.d.ts +1 -1
  122. package/staging/lib/bounds/bounds.d.ts +1 -1
  123. package/staging/lib/camera-shake/camera-shake.d.ts +1 -1
  124. package/staging/lib/caustics/caustics.d.ts +2 -2
  125. package/staging/lib/center/center.d.ts +1 -1
  126. package/staging/lib/cloud/cloud.d.ts +1 -1
  127. package/staging/lib/contact-shadows/contact-shadows.d.ts +1 -1
  128. package/staging/lib/environment/environment-inputs.d.ts +1 -1
  129. package/staging/lib/float/float.d.ts +1 -1
  130. package/staging/lib/sky/sky.d.ts +1 -1
  131. package/staging/lib/sparkles/sparkles.d.ts +2 -2
  132. package/staging/lib/spot-light/shadow-mesh-input.d.ts +1 -1
  133. package/staging/lib/spot-light/spot-light-input.d.ts +1 -1
  134. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +1 -1
  135. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +1 -1
  136. package/staging/lib/spot-light/spot-light.d.ts +1 -1
  137. package/staging/lib/spot-light/volumetric-mesh.d.ts +1 -1
  138. package/staging/lib/stage/stage.d.ts +2 -2
  139. package/staging/lib/stars/stars.d.ts +2 -2
  140. package/esm2020/abstractions/lib/billboard/billboard.mjs +0 -73
  141. package/esm2020/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -119
  142. package/esm2020/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -98
  143. package/esm2020/abstractions/lib/edges/edges.mjs +0 -95
  144. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -211
  145. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -91
  146. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -182
  147. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -45
  148. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -193
  149. package/esm2020/abstractions/lib/line/line-input.mjs +0 -75
  150. package/esm2020/abstractions/lib/line/line.mjs +0 -132
  151. package/esm2020/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -127
  152. package/esm2020/abstractions/lib/text/text.mjs +0 -114
  153. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +0 -144
  154. package/esm2020/cameras/lib/camera/camera-content.mjs +0 -20
  155. package/esm2020/cameras/lib/camera/camera.mjs +0 -74
  156. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +0 -130
  157. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -92
  158. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +0 -146
  159. package/esm2020/loaders/index.mjs +0 -5
  160. package/esm2020/loaders/lib/loader/loader.mjs +0 -133
  161. package/esm2020/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -74
  162. package/esm2020/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -327
  163. package/esm2020/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -157
  164. package/esm2020/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -237
  165. package/esm2020/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -67
  166. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +0 -25
  167. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +0 -46
  168. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +0 -36
  169. package/esm2020/performance/lib/detailed/detailed.mjs +0 -53
  170. package/esm2020/performance/lib/stats/stats.mjs +0 -79
  171. package/esm2020/shaders/lib/blur-pass/blur-pass.mjs +0 -61
  172. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -247
  173. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -199
  174. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +0 -121
  175. package/esm2020/staging/lib/caustics/caustics.mjs +0 -363
  176. package/esm2020/staging/lib/center/center.mjs +0 -142
  177. package/esm2020/staging/lib/cloud/cloud.mjs +0 -159
  178. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +0 -227
  179. package/esm2020/staging/lib/environment/environment-cube.mjs +0 -40
  180. package/esm2020/staging/lib/environment/environment-ground.mjs +0 -66
  181. package/esm2020/staging/lib/environment/environment-inputs.mjs +0 -86
  182. package/esm2020/staging/lib/environment/environment-map.mjs +0 -38
  183. package/esm2020/staging/lib/environment/environment-portal.mjs +0 -110
  184. package/esm2020/staging/lib/float/float.mjs +0 -76
  185. package/esm2020/staging/lib/sky/sky.mjs +0 -108
  186. package/esm2020/staging/lib/sparkles/sparkles.mjs +0 -209
  187. package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +0 -50
  188. package/esm2020/staging/lib/spot-light/spot-light-input.mjs +0 -61
  189. package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -73
  190. package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -125
  191. package/esm2020/staging/lib/spot-light/spot-light.mjs +0 -116
  192. package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +0 -85
  193. package/esm2020/staging/lib/stars/stars.mjs +0 -139
  194. package/fesm2015/angular-three-soba-abstractions.mjs +0 -2048
  195. package/fesm2015/angular-three-soba-controls.mjs +0 -153
  196. package/fesm2015/angular-three-soba-controls.mjs.map +0 -1
  197. package/fesm2015/angular-three-soba-loaders.mjs +0 -222
  198. package/fesm2015/angular-three-soba-loaders.mjs.map +0 -1
  199. package/fesm2015/angular-three-soba-materials.mjs +0 -851
  200. package/fesm2015/angular-three-soba-materials.mjs.map +0 -1
  201. package/fesm2015/angular-three-soba-misc.mjs +0 -148
  202. package/fesm2015/angular-three-soba-misc.mjs.map +0 -1
  203. package/fesm2015/angular-three-soba-performance.mjs +0 -210
  204. package/fesm2015/angular-three-soba-performance.mjs.map +0 -1
  205. package/fesm2015/angular-three-soba-shaders.mjs +0 -1239
  206. package/fesm2015/angular-three-soba-shaders.mjs.map +0 -1
  207. package/fesm2015/angular-three-soba-staging.mjs +0 -3772
  208. package/fesm2015/angular-three-soba-staging.mjs.map +0 -1
  209. package/fesm2020/angular-three-soba-abstractions.mjs.map +0 -1
  210. package/fesm2020/angular-three-soba-cameras.mjs +0 -347
  211. package/fesm2020/angular-three-soba-cameras.mjs.map +0 -1
  212. package/fesm2020/angular-three-soba-controls.mjs.map +0 -1
  213. package/fesm2020/angular-three-soba-loaders.mjs.map +0 -1
  214. package/fesm2020/angular-three-soba-materials.mjs.map +0 -1
  215. package/fesm2020/angular-three-soba-shaders.mjs.map +0 -1
  216. package/fesm2020/angular-three-soba.mjs +0 -6
  217. package/fesm2020/angular-three-soba.mjs.map +0 -1
  218. /package/{esm2020 → esm2022}/abstractions/angular-three-soba-abstractions.mjs +0 -0
  219. /package/{esm2020 → esm2022}/abstractions/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -0
  221. /package/{esm2020 → esm2022}/angular-three-soba.mjs +0 -0
  222. /package/{esm2020 → esm2022}/cameras/angular-three-soba-cameras.mjs +0 -0
  223. /package/{esm2020 → esm2022}/cameras/index.mjs +0 -0
  224. /package/{esm2020 → esm2022}/controls/angular-three-soba-controls.mjs +0 -0
  225. /package/{esm2020 → esm2022}/controls/index.mjs +0 -0
  226. /package/{esm2020 → esm2022}/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/loaders/angular-three-soba-loaders.mjs +0 -0
  228. /package/{esm2020 → esm2022}/loaders/lib/gltf-loader/gltf-loader.mjs +0 -0
  229. /package/{esm2020 → esm2022}/loaders/lib/progress/progress.mjs +0 -0
  230. /package/{esm2020 → esm2022}/loaders/lib/texture-loader/texture-loader.mjs +0 -0
  231. /package/{esm2020 → esm2022}/materials/angular-three-soba-materials.mjs +0 -0
  232. /package/{esm2020 → esm2022}/materials/index.mjs +0 -0
  233. /package/{esm2020 → esm2022}/misc/angular-three-soba-misc.mjs +0 -0
  234. /package/{esm2020 → esm2022}/misc/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/misc/lib/animations/animations.mjs +0 -0
  236. /package/{esm2020 → esm2022}/misc/lib/depth-buffer/depth-buffer.mjs +0 -0
  237. /package/{esm2020 → esm2022}/misc/lib/fbo/fbo.mjs +0 -0
  238. /package/{esm2020 → esm2022}/performance/angular-three-soba-performance.mjs +0 -0
  239. /package/{esm2020 → esm2022}/performance/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/shaders/angular-three-soba-shaders.mjs +0 -0
  241. /package/{esm2020 → esm2022}/shaders/index.mjs +0 -0
  242. /package/{esm2020 → esm2022}/shaders/lib/caustics-material/caustics-material.mjs +0 -0
  243. /package/{esm2020 → esm2022}/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -0
  244. /package/{esm2020 → esm2022}/shaders/lib/convolution-material/convolution-material.mjs +0 -0
  245. /package/{esm2020 → esm2022}/shaders/lib/discard-material/discard-material.mjs +0 -0
  246. /package/{esm2020 → esm2022}/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -0
  247. /package/{esm2020 → esm2022}/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -0
  248. /package/{esm2020 → esm2022}/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -0
  249. /package/{esm2020 → esm2022}/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -0
  250. /package/{esm2020 → esm2022}/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -0
  251. /package/{esm2020 → esm2022}/shaders/lib/shader-material/shader-material.mjs +0 -0
  252. /package/{esm2020 → esm2022}/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -0
  253. /package/{esm2020 → esm2022}/shaders/lib/spot-light-material/spot-light-material.mjs +0 -0
  254. /package/{esm2020 → esm2022}/shaders/lib/star-field-material/star-field-material.mjs +0 -0
  255. /package/{esm2020 → esm2022}/staging/angular-three-soba-staging.mjs +0 -0
  256. /package/{esm2020 → esm2022}/staging/index.mjs +0 -0
  257. /package/{esm2020 → esm2022}/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -0
  258. /package/{esm2020 → esm2022}/staging/lib/environment/assets.mjs +0 -0
  259. /package/{esm2020 → esm2022}/staging/lib/environment/utils.mjs +0 -0
  260. /package/{esm2020 → esm2022}/staging/lib/spot-light/common.mjs +0 -0
  261. /package/{fesm2015 → fesm2022}/angular-three-soba.mjs +0 -0
  262. /package/{fesm2015 → fesm2022}/angular-three-soba.mjs.map +0 -0
@@ -4,10 +4,9 @@ import { NgtsSpotLightShadowMeshInput } from './shadow-mesh-input';
4
4
  import { NgtsSpotLightShadowNoShader } from './spot-light-shadow-no-shader';
5
5
  import { NgtsSpotLightShadowShader } from './spot-light-shadow-shader';
6
6
  import * as i0 from "@angular/core";
7
- export class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {
8
- }
9
- NgtsSpotLightShadowfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadow, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
- NgtsSpotLightShadow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", usesInheritance: true, ngImport: i0, template: `
7
+ class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSpotLightShadow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", usesInheritance: true, ngImport: i0, template: `
11
10
  <ngts-spot-light-shadow-shader
12
11
  *ngIf="get('shader'); else noShader"
13
12
  [distance]="get('distance')"
@@ -28,8 +27,10 @@ NgtsSpotLightShadow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
28
27
  [height]="get('height')"
29
28
  />
30
29
  </ng-template>
31
- `, isInline: true, dependencies: [{ kind: "component", type: NgtsSpotLightShadowShader, selector: "ngts-spot-light-shadow-shader" }, { kind: "component", type: NgtsSpotLightShadowNoShader, selector: "ngts-spot-light-shadow-no-shader" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
30
+ `, isInline: true, dependencies: [{ kind: "component", type: NgtsSpotLightShadowShader, selector: "ngts-spot-light-shadow-shader" }, { kind: "component", type: NgtsSpotLightShadowNoShader, selector: "ngts-spot-light-shadow-no-shader" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
31
+ }
32
+ export { NgtsSpotLightShadow };
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
33
34
  type: Component,
34
35
  args: [{
35
36
  selector: 'ngts-spot-light-shadow',
@@ -59,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
59
60
  imports: [NgtsSpotLightShadowShader, NgtsSpotLightShadowNoShader, NgIf],
60
61
  }]
61
62
  }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC1zaGFkb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3BvdC1saWdodC9zcG90LWxpZ2h0LXNoYWRvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUE2QnZFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSw0QkFBNEI7O2dIQUF4RCxtQkFBbUI7b0dBQW5CLG1CQUFtQix5R0F4QmxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxQlQsNERBQ1MseUJBQXlCLDBFQUFFLDJCQUEyQiw2RUFBRSxJQUFJOzJGQUU3RCxtQkFBbUI7a0JBM0IvQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSxJQUFJLENBQUM7aUJBQzFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoSW5wdXQgfSBmcm9tICcuL3NoYWRvdy1tZXNoLWlucHV0JztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRTaGFkb3dOb1NoYWRlciB9IGZyb20gJy4vc3BvdC1saWdodC1zaGFkb3ctbm8tc2hhZGVyJztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRTaGFkb3dTaGFkZXIgfSBmcm9tICcuL3Nwb3QtbGlnaHQtc2hhZG93LXNoYWRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1zcG90LWxpZ2h0LXNoYWRvdycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0cy1zcG90LWxpZ2h0LXNoYWRvdy1zaGFkZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZ2V0KCdzaGFkZXInKTsgZWxzZSBub1NoYWRlclwiXG4gICAgICAgICAgICBbZGlzdGFuY2VdPVwiZ2V0KCdkaXN0YW5jZScpXCJcbiAgICAgICAgICAgIFtzaGFkZXJdPVwiZ2V0KCdzaGFkZXInKVwiXG4gICAgICAgICAgICBbYWxwaGFUZXN0XT1cImdldCgnYWxwaGFUZXN0JylcIlxuICAgICAgICAgICAgW3NjYWxlXT1cImdldCgnc2NhbGUnKVwiXG4gICAgICAgICAgICBbbWFwXT1cImdldCgnbWFwJylcIlxuICAgICAgICAgICAgW3dpZHRoXT1cImdldCgnd2lkdGgnKVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cImdldCgnaGVpZ2h0JylcIlxuICAgICAgICAvPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vU2hhZGVyPlxuICAgICAgICAgICAgPG5ndHMtc3BvdC1saWdodC1zaGFkb3ctbm8tc2hhZGVyXG4gICAgICAgICAgICAgICAgW2Rpc3RhbmNlXT1cImdldCgnZGlzdGFuY2UnKVwiXG4gICAgICAgICAgICAgICAgW2FscGhhVGVzdF09XCJnZXQoJ2FscGhhVGVzdCcpXCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZ2V0KCdzY2FsZScpXCJcbiAgICAgICAgICAgICAgICBbbWFwXT1cImdldCgnbWFwJylcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJnZXQoJ3dpZHRoJylcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiZ2V0KCdoZWlnaHQnKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05ndHNTcG90TGlnaHRTaGFkb3dTaGFkZXIsIE5ndHNTcG90TGlnaHRTaGFkb3dOb1NoYWRlciwgTmdJZl0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcG90TGlnaHRTaGFkb3cgZXh0ZW5kcyBOZ3RzU3BvdExpZ2h0U2hhZG93TWVzaElucHV0IHt9XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC1zaGFkb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3BvdC1saWdodC9zcG90LWxpZ2h0LXNoYWRvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFdkUsTUEyQmEsbUJBQW9CLFNBQVEsNEJBQTRCOzhHQUF4RCxtQkFBbUI7a0dBQW5CLG1CQUFtQix5R0F4QmxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxQlQsNERBQ1MseUJBQXlCLDBFQUFFLDJCQUEyQiw2RUFBRSxJQUFJOztTQUU3RCxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkEzQi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBcUJUO29CQUNELE9BQU8sRUFBRSxDQUFDLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLElBQUksQ0FBQztpQkFDMUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodFNoYWRvd01lc2hJbnB1dCB9IGZyb20gJy4vc2hhZG93LW1lc2gtaW5wdXQnO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodFNoYWRvd05vU2hhZGVyIH0gZnJvbSAnLi9zcG90LWxpZ2h0LXNoYWRvdy1uby1zaGFkZXInO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodFNoYWRvd1NoYWRlciB9IGZyb20gJy4vc3BvdC1saWdodC1zaGFkb3ctc2hhZGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQtc2hhZG93JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3RzLXNwb3QtbGlnaHQtc2hhZG93LXNoYWRlclxuICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ3NoYWRlcicpOyBlbHNlIG5vU2hhZGVyXCJcbiAgICAgICAgICAgIFtkaXN0YW5jZV09XCJnZXQoJ2Rpc3RhbmNlJylcIlxuICAgICAgICAgICAgW3NoYWRlcl09XCJnZXQoJ3NoYWRlcicpXCJcbiAgICAgICAgICAgIFthbHBoYVRlc3RdPVwiZ2V0KCdhbHBoYVRlc3QnKVwiXG4gICAgICAgICAgICBbc2NhbGVdPVwiZ2V0KCdzY2FsZScpXCJcbiAgICAgICAgICAgIFttYXBdPVwiZ2V0KCdtYXAnKVwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiZ2V0KCd3aWR0aCcpXCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiZ2V0KCdoZWlnaHQnKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9TaGFkZXI+XG4gICAgICAgICAgICA8bmd0cy1zcG90LWxpZ2h0LXNoYWRvdy1uby1zaGFkZXJcbiAgICAgICAgICAgICAgICBbZGlzdGFuY2VdPVwiZ2V0KCdkaXN0YW5jZScpXCJcbiAgICAgICAgICAgICAgICBbYWxwaGFUZXN0XT1cImdldCgnYWxwaGFUZXN0JylcIlxuICAgICAgICAgICAgICAgIFtzY2FsZV09XCJnZXQoJ3NjYWxlJylcIlxuICAgICAgICAgICAgICAgIFttYXBdPVwiZ2V0KCdtYXAnKVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImdldCgnd2lkdGgnKVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCJnZXQoJ2hlaWdodCcpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0c1Nwb3RMaWdodFNoYWRvd1NoYWRlciwgTmd0c1Nwb3RMaWdodFNoYWRvd05vU2hhZGVyLCBOZ0lmXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1Nwb3RMaWdodFNoYWRvdyBleHRlbmRzIE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoSW5wdXQge31cbiJdfQ==
@@ -0,0 +1,117 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, InjectionToken, Input } from '@angular/core';
3
+ import { extend, injectNgtRef, NgtArgs } from 'angular-three';
4
+ import { Group, SpotLight, SpotLightHelper } from 'three';
5
+ import { NgtsSpotLightInput } from './spot-light-input';
6
+ import { NgtsVolumetricMesh } from './volumetric-mesh';
7
+ import * as i0 from "@angular/core";
8
+ extend({ SpotLight, SpotLightHelper, Group });
9
+ export const NGTS_SPOT_LIGHT_API = new InjectionToken('NgtsSpotLight API');
10
+ function spotLightApiFactory(spotLight) {
11
+ const api = {
12
+ spotLight: spotLight.spotLightRef,
13
+ };
14
+ Object.defineProperty(api, 'debug', {
15
+ get: () => spotLight.get('debug'),
16
+ });
17
+ return api;
18
+ }
19
+ class NgtsSpotLight extends NgtsSpotLightInput {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.spotLightRef = injectNgtRef();
23
+ }
24
+ set volumetric(volumetric) {
25
+ this.set({ volumetric });
26
+ }
27
+ initialize() {
28
+ super.initialize();
29
+ this.set({
30
+ opacity: 1,
31
+ color: 'white',
32
+ distance: 5,
33
+ angle: 0.15,
34
+ attenuation: 5,
35
+ anglePower: 5,
36
+ volumetric: true,
37
+ debug: false,
38
+ });
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSpotLight, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { spotLightRef: "spotLightRef", volumetric: "volumetric" }, providers: [{ provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] }], usesInheritance: true, ngImport: i0, template: `
42
+ <ngt-group>
43
+ <ng-container *ngIf="get('debug') && spotLightRef.nativeElement">
44
+ <ngt-spot-light-helper *args="[spotLightRef.nativeElement]" />
45
+ </ng-container>
46
+ <ngt-spot-light
47
+ [ref]="spotLightRef"
48
+ [color]="get('color')"
49
+ [distance]="get('distance')"
50
+ [angle]="get('angle')"
51
+ [castShadow]="true"
52
+ ngtCompound
53
+ >
54
+ <ngts-volumetric-mesh
55
+ *ngIf="get('volumetric')"
56
+ [debug]="get('debug')"
57
+ [opacity]="get('opacity')"
58
+ [radiusTop]="get('radiusTop')"
59
+ [radiusBottom]="get('radiusBottom')"
60
+ [depthBuffer]="get('depthBuffer')"
61
+ [color]="get('color')"
62
+ [distance]="get('distance')"
63
+ [angle]="get('angle')"
64
+ [attenuation]="get('attenuation')"
65
+ [anglePower]="get('anglePower')"
66
+ />
67
+ </ngt-spot-light>
68
+ <ng-content />
69
+ </ngt-group>
70
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsVolumetricMesh, selector: "ngts-volumetric-mesh" }] }); }
71
+ }
72
+ export { NgtsSpotLight };
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSpotLight, decorators: [{
74
+ type: Component,
75
+ args: [{
76
+ selector: 'ngts-spot-light',
77
+ standalone: true,
78
+ template: `
79
+ <ngt-group>
80
+ <ng-container *ngIf="get('debug') && spotLightRef.nativeElement">
81
+ <ngt-spot-light-helper *args="[spotLightRef.nativeElement]" />
82
+ </ng-container>
83
+ <ngt-spot-light
84
+ [ref]="spotLightRef"
85
+ [color]="get('color')"
86
+ [distance]="get('distance')"
87
+ [angle]="get('angle')"
88
+ [castShadow]="true"
89
+ ngtCompound
90
+ >
91
+ <ngts-volumetric-mesh
92
+ *ngIf="get('volumetric')"
93
+ [debug]="get('debug')"
94
+ [opacity]="get('opacity')"
95
+ [radiusTop]="get('radiusTop')"
96
+ [radiusBottom]="get('radiusBottom')"
97
+ [depthBuffer]="get('depthBuffer')"
98
+ [color]="get('color')"
99
+ [distance]="get('distance')"
100
+ [angle]="get('angle')"
101
+ [attenuation]="get('attenuation')"
102
+ [anglePower]="get('anglePower')"
103
+ />
104
+ </ngt-spot-light>
105
+ <ng-content />
106
+ </ngt-group>
107
+ `,
108
+ imports: [NgIf, NgtArgs, NgtsVolumetricMesh],
109
+ providers: [{ provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] }],
110
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
111
+ }]
112
+ }], propDecorators: { spotLightRef: [{
113
+ type: Input
114
+ }], volumetric: [{
115
+ type: Input
116
+ }] } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL3N0YWdpbmcvc3JjL2xpYi9zcG90LWxpZ2h0L3Nwb3QtbGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFdkQsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBTzlDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFtQixtQkFBbUIsQ0FBQyxDQUFDO0FBRTdGLFNBQVMsbUJBQW1CLENBQUMsU0FBd0I7SUFDakQsTUFBTSxHQUFHLEdBQUc7UUFDUixTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVk7S0FDcEMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRTtRQUNoQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUF1QixDQUFDO0FBQ25DLENBQUM7QUFFRCxNQXFDYSxhQUFjLFNBQVEsa0JBQWtCO0lBckNyRDs7UUFzQ2EsaUJBQVksR0FBRyxZQUFZLEVBQW1CLENBQUM7S0FtQjNEO0lBakJHLElBQWEsVUFBVSxDQUFDLFVBQW1CO1FBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFUSxVQUFVO1FBQ2YsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDTCxPQUFPLEVBQUUsQ0FBQztZQUNWLEtBQUssRUFBRSxPQUFPO1lBQ2QsUUFBUSxFQUFFLENBQUM7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxDQUFDO1lBQ2QsVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBbkJRLGFBQWE7a0dBQWIsYUFBYSxrSUFIWCxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGlEQS9CM0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNkJULDREQUNTLElBQUksNkZBQUUsT0FBTyxxRUFBRSxrQkFBa0I7O1NBSWxDLGFBQWE7MkZBQWIsYUFBYTtrQkFyQ3pCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E2QlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQztvQkFDNUMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztvQkFDckcsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQUVZLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRU8sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0Tmd0UmVmLCBOZ3RBcmdzLCBOZ3RJbmplY3RlZFJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAsIFNwb3RMaWdodCwgU3BvdExpZ2h0SGVscGVyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodElucHV0IH0gZnJvbSAnLi9zcG90LWxpZ2h0LWlucHV0JztcbmltcG9ydCB7IE5ndHNWb2x1bWV0cmljTWVzaCB9IGZyb20gJy4vdm9sdW1ldHJpYy1tZXNoJztcblxuZXh0ZW5kKHsgU3BvdExpZ2h0LCBTcG90TGlnaHRIZWxwZXIsIEdyb3VwIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNTcG90TGlnaHRBUEkge1xuICAgIHNwb3RMaWdodDogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuU3BvdExpZ2h0PjtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE5HVFNfU1BPVF9MSUdIVF9BUEkgPSBuZXcgSW5qZWN0aW9uVG9rZW48Tmd0c1Nwb3RMaWdodEFQST4oJ05ndHNTcG90TGlnaHQgQVBJJyk7XG5cbmZ1bmN0aW9uIHNwb3RMaWdodEFwaUZhY3Rvcnkoc3BvdExpZ2h0OiBOZ3RzU3BvdExpZ2h0KTogTmd0c1Nwb3RMaWdodEFQSSB7XG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBzcG90TGlnaHQ6IHNwb3RMaWdodC5zcG90TGlnaHRSZWYsXG4gICAgfTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcGksICdkZWJ1ZycsIHtcbiAgICAgICAgZ2V0OiAoKSA9PiBzcG90TGlnaHQuZ2V0KCdkZWJ1ZycpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFwaSBhcyBOZ3RzU3BvdExpZ2h0QVBJO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3BvdC1saWdodCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWdyb3VwPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldCgnZGVidWcnKSAmJiBzcG90TGlnaHRSZWYubmF0aXZlRWxlbWVudFwiPlxuICAgICAgICAgICAgICAgIDxuZ3Qtc3BvdC1saWdodC1oZWxwZXIgKmFyZ3M9XCJbc3BvdExpZ2h0UmVmLm5hdGl2ZUVsZW1lbnRdXCIgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5ndC1zcG90LWxpZ2h0XG4gICAgICAgICAgICAgICAgW3JlZl09XCJzcG90TGlnaHRSZWZcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXQoJ2NvbG9yJylcIlxuICAgICAgICAgICAgICAgIFtkaXN0YW5jZV09XCJnZXQoJ2Rpc3RhbmNlJylcIlxuICAgICAgICAgICAgICAgIFthbmdsZV09XCJnZXQoJ2FuZ2xlJylcIlxuICAgICAgICAgICAgICAgIFtjYXN0U2hhZG93XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndHMtdm9sdW1ldHJpYy1tZXNoXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0KCd2b2x1bWV0cmljJylcIlxuICAgICAgICAgICAgICAgICAgICBbZGVidWddPVwiZ2V0KCdkZWJ1ZycpXCJcbiAgICAgICAgICAgICAgICAgICAgW29wYWNpdHldPVwiZ2V0KCdvcGFjaXR5JylcIlxuICAgICAgICAgICAgICAgICAgICBbcmFkaXVzVG9wXT1cImdldCgncmFkaXVzVG9wJylcIlxuICAgICAgICAgICAgICAgICAgICBbcmFkaXVzQm90dG9tXT1cImdldCgncmFkaXVzQm90dG9tJylcIlxuICAgICAgICAgICAgICAgICAgICBbZGVwdGhCdWZmZXJdPVwiZ2V0KCdkZXB0aEJ1ZmZlcicpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImdldCgnY29sb3InKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXN0YW5jZV09XCJnZXQoJ2Rpc3RhbmNlJylcIlxuICAgICAgICAgICAgICAgICAgICBbYW5nbGVdPVwiZ2V0KCdhbmdsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dGVudWF0aW9uXT1cImdldCgnYXR0ZW51YXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbmdsZVBvd2VyXT1cImdldCgnYW5nbGVQb3dlcicpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9uZ3Qtc3BvdC1saWdodD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5ndEFyZ3MsIE5ndHNWb2x1bWV0cmljTWVzaF0sXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR1RTX1NQT1RfTElHSFRfQVBJLCB1c2VGYWN0b3J5OiBzcG90TGlnaHRBcGlGYWN0b3J5LCBkZXBzOiBbTmd0c1Nwb3RMaWdodF0gfV0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3BvdExpZ2h0IGV4dGVuZHMgTmd0c1Nwb3RMaWdodElucHV0IHtcbiAgICBASW5wdXQoKSBzcG90TGlnaHRSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuU3BvdExpZ2h0PigpO1xuXG4gICAgQElucHV0KCkgc2V0IHZvbHVtZXRyaWModm9sdW1ldHJpYzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IHZvbHVtZXRyaWMgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICBkaXN0YW5jZTogNSxcbiAgICAgICAgICAgIGFuZ2xlOiAwLjE1LFxuICAgICAgICAgICAgYXR0ZW51YXRpb246IDUsXG4gICAgICAgICAgICBhbmdsZVBvd2VyOiA1LFxuICAgICAgICAgICAgdm9sdW1ldHJpYzogdHJ1ZSxcbiAgICAgICAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,86 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
2
+ import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtStore, startWithUndefined } from 'angular-three';
3
+ import { SpotLightMaterial } from 'angular-three-soba/shaders';
4
+ import { combineLatest, map } from 'rxjs';
5
+ import * as THREE from 'three';
6
+ import { Mesh } from 'three';
7
+ import { NgtsSpotLightInput } from './spot-light-input';
8
+ import * as i0 from "@angular/core";
9
+ extend({ Mesh });
10
+ class NgtsVolumetricMesh extends NgtsSpotLightInput {
11
+ initialize() {
12
+ super.initialize();
13
+ this.set({ opacity: 1, color: 'white', distance: 5, angle: 0.15, attenuation: 5, anglePower: 5 });
14
+ }
15
+ constructor() {
16
+ super();
17
+ this.mesh = injectNgtRef();
18
+ this.material = new SpotLightMaterial();
19
+ this.nullRaycast = () => null;
20
+ this.vec = new THREE.Vector3();
21
+ this.store = inject(NgtStore);
22
+ this.connect('normalizedRadiusTop', this.select('radiusTop').pipe(startWithUndefined(), map((radiusTop) => (radiusTop === undefined ? 0.1 : radiusTop))));
23
+ this.connect('normalizedRadiusBottom', combineLatest([this.select('radiusBottom').pipe(startWithUndefined()), this.select('angle')]).pipe(map(([radiusBottom, angle]) => (radiusBottom === undefined ? angle * 7 : radiusBottom))));
24
+ this.connect('geometry', combineLatest([
25
+ this.select('normalizedRadiusTop'),
26
+ this.select('normalizedRadiusBottom'),
27
+ this.select('distance'),
28
+ ]).pipe(map(([radiusTop, radiusBottom, distance]) => {
29
+ const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);
30
+ geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));
31
+ geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
32
+ return geometry;
33
+ })));
34
+ this.connect('cameraNear', this.store.select('camera').pipe(map((camera) => camera.near)));
35
+ this.connect('cameraFar', this.store.select('camera').pipe(map((camera) => camera.far)));
36
+ this.connect('resolution', combineLatest([
37
+ this.select('depthBuffer').pipe(startWithUndefined()),
38
+ this.store.select('size'),
39
+ this.store.select('viewport', 'dpr'),
40
+ ]).pipe(map(([depthBuffer, size, dpr]) => (depthBuffer ? [size.width * dpr, size.height * dpr] : [0, 0]))));
41
+ injectBeforeRender(() => {
42
+ this.material.uniforms['spotPosition'].value.copy(this.mesh.nativeElement.getWorldPosition(this.vec));
43
+ this.mesh.nativeElement.lookAt(this.mesh.nativeElement.parent.target.getWorldPosition(this.vec));
44
+ });
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", usesInheritance: true, ngImport: i0, template: `
48
+ <ngt-mesh [ref]="mesh" [geometry]="get('geometry')" [raycast]="nullRaycast">
49
+ <ngt-primitive *args="[material]" attach="material">
50
+ <ngt-value [rawValue]="get('opacity')" attach="uniforms.opacity.value" />
51
+ <ngt-value [rawValue]="get('color')" attach="uniforms.lightColor.value" />
52
+ <ngt-value [rawValue]="get('attenuation')" attach="uniforms.attenuation.value" />
53
+ <ngt-value [rawValue]="get('anglePower')" attach="uniforms.anglePower.value" />
54
+ <ngt-value [rawvalue]="get('depthBuffer')" attach="uniforms.depth.value" />
55
+ <ngt-value [rawvalue]="get('cameraNear')" attach="uniforms.cameraNear.value" />
56
+ <ngt-value [rawvalue]="get('cameraFar')" attach="uniforms.cameraFar.value" />
57
+ <ngt-value [rawvalue]="get('resolution')" attach="uniforms.resolution.value" />
58
+ </ngt-primitive>
59
+ </ngt-mesh>
60
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
61
+ }
62
+ export { NgtsVolumetricMesh };
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
64
+ type: Component,
65
+ args: [{
66
+ selector: 'ngts-volumetric-mesh',
67
+ standalone: true,
68
+ template: `
69
+ <ngt-mesh [ref]="mesh" [geometry]="get('geometry')" [raycast]="nullRaycast">
70
+ <ngt-primitive *args="[material]" attach="material">
71
+ <ngt-value [rawValue]="get('opacity')" attach="uniforms.opacity.value" />
72
+ <ngt-value [rawValue]="get('color')" attach="uniforms.lightColor.value" />
73
+ <ngt-value [rawValue]="get('attenuation')" attach="uniforms.attenuation.value" />
74
+ <ngt-value [rawValue]="get('anglePower')" attach="uniforms.anglePower.value" />
75
+ <ngt-value [rawvalue]="get('depthBuffer')" attach="uniforms.depth.value" />
76
+ <ngt-value [rawvalue]="get('cameraNear')" attach="uniforms.cameraNear.value" />
77
+ <ngt-value [rawvalue]="get('cameraFar')" attach="uniforms.cameraFar.value" />
78
+ <ngt-value [rawvalue]="get('resolution')" attach="uniforms.resolution.value" />
79
+ </ngt-primitive>
80
+ </ngt-mesh>
81
+ `,
82
+ imports: [NgtArgs],
83
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
84
+ }]
85
+ }], ctorParameters: function () { return []; } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9sdW1ldHJpYy1tZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3Nwb3QtbGlnaHQvdm9sdW1ldHJpYy1tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFeEQsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUVqQixNQW9CYSxrQkFBbUIsU0FBUSxrQkFBa0I7SUFRN0MsVUFBVTtRQUNmLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBYkgsU0FBSSxHQUFHLFlBQVksRUFBYyxDQUFD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QztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFN0b3JlLCBzdGFydFdpdGhVbmRlZmluZWQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFNwb3RMaWdodE1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodElucHV0IH0gZnJvbSAnLi9zcG90LWxpZ2h0LWlucHV0JztcblxuZXh0ZW5kKHsgTWVzaCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXZvbHVtZXRyaWMtbWVzaCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW1lc2ggW3JlZl09XCJtZXNoXCIgW2dlb21ldHJ5XT1cImdldCgnZ2VvbWV0cnknKVwiIFtyYXljYXN0XT1cIm51bGxSYXljYXN0XCI+XG4gICAgICAgICAgICA8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbF1cIiBhdHRhY2g9XCJtYXRlcmlhbFwiPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnb3BhY2l0eScpXCIgYXR0YWNoPVwidW5pZm9ybXMub3BhY2l0eS52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdjb2xvcicpXCIgYXR0YWNoPVwidW5pZm9ybXMubGlnaHRDb2xvci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdhdHRlbnVhdGlvbicpXCIgYXR0YWNoPVwidW5pZm9ybXMuYXR0ZW51YXRpb24udmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnYW5nbGVQb3dlcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuYW5nbGVQb3dlci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdkZXB0aEJ1ZmZlcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuZGVwdGgudmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cImdldCgnY2FtZXJhTmVhcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuY2FtZXJhTmVhci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdjYW1lcmFGYXInKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYUZhci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdyZXNvbHV0aW9uJylcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlXCIgLz5cbiAgICAgICAgICAgIDwvbmd0LXByaW1pdGl2ZT5cbiAgICAgICAgPC9uZ3QtbWVzaD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNWb2x1bWV0cmljTWVzaCBleHRlbmRzIE5ndHNTcG90TGlnaHRJbnB1dCB7XG4gICAgcmVhZG9ubHkgbWVzaCA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuICAgIHJlYWRvbmx5IG1hdGVyaWFsID0gbmV3IFNwb3RMaWdodE1hdGVyaWFsKCk7XG4gICAgcmVhZG9ubHkgbnVsbFJheWNhc3QgPSAoKSA9PiBudWxsO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB2ZWMgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7IG9wYWNpdHk6IDEsIGNvbG9yOiAnd2hpdGUnLCBkaXN0YW5jZTogNSwgYW5nbGU6IDAuMTUsIGF0dGVudWF0aW9uOiA1LCBhbmdsZVBvd2VyOiA1IH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnbm9ybWFsaXplZFJhZGl1c1RvcCcsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCgncmFkaXVzVG9wJykucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGhVbmRlZmluZWQoKSxcbiAgICAgICAgICAgICAgICBtYXAoKHJhZGl1c1RvcCkgPT4gKHJhZGl1c1RvcCA9PT0gdW5kZWZpbmVkID8gMC4xIDogcmFkaXVzVG9wKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ25vcm1hbGl6ZWRSYWRpdXNCb3R0b20nLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3JhZGl1c0JvdHRvbScpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLCB0aGlzLnNlbGVjdCgnYW5nbGUnKV0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChbcmFkaXVzQm90dG9tLCBhbmdsZV0pID0+IChyYWRpdXNCb3R0b20gPT09IHVuZGVmaW5lZCA/IGFuZ2xlICogNyA6IHJhZGl1c0JvdHRvbSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2dlb21ldHJ5JyxcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdub3JtYWxpemVkUmFkaXVzVG9wJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ25vcm1hbGl6ZWRSYWRpdXNCb3R0b20nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnZGlzdGFuY2UnKSxcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChbcmFkaXVzVG9wLCByYWRpdXNCb3R0b20sIGRpc3RhbmNlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBUSFJFRS5DeWxpbmRlckdlb21ldHJ5KHJhZGl1c1RvcCwgcmFkaXVzQm90dG9tLCBkaXN0YW5jZSwgMTI4LCA2NCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VUcmFuc2xhdGlvbigwLCAtZGlzdGFuY2UgLyAyLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VSb3RhdGlvblgoLU1hdGguUEkgLyAyKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdCgnY2FtZXJhTmVhcicsIHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKS5waXBlKG1hcCgoY2FtZXJhKSA9PiBjYW1lcmEubmVhcikpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KCdjYW1lcmFGYXInLCB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJykucGlwZShtYXAoKGNhbWVyYSkgPT4gY2FtZXJhLmZhcikpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2RlcHRoQnVmZmVyJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgndmlld3BvcnQnLCAnZHByJyksXG4gICAgICAgICAgICBdKS5waXBlKG1hcCgoW2RlcHRoQnVmZmVyLCBzaXplLCBkcHJdKSA9PiAoZGVwdGhCdWZmZXIgPyBbc2l6ZS53aWR0aCAqIGRwciwgc2l6ZS5oZWlnaHQgKiBkcHJdIDogWzAsIDBdKSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWwudW5pZm9ybXNbJ3Nwb3RQb3NpdGlvbiddLnZhbHVlLmNvcHkodGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQuZ2V0V29ybGRQb3NpdGlvbih0aGlzLnZlYykpO1xuICAgICAgICAgICAgdGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQubG9va0F0KFxuICAgICAgICAgICAgICAgICh0aGlzLm1lc2gubmF0aXZlRWxlbWVudC5wYXJlbnQgYXMgVEhSRUUuU3BvdExpZ2h0KS50YXJnZXQuZ2V0V29ybGRQb3NpdGlvbih0aGlzLnZlYylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -28,7 +28,7 @@ const presets = {
28
28
  fill: [-1, 0.5, -1.5],
29
29
  },
30
30
  };
31
- export class NgtsStageRefit {
31
+ class NgtsStageRefit {
32
32
  constructor() {
33
33
  this.boundsApi = inject(NGTS_BOUNDS_API);
34
34
  this.radius = 0;
@@ -39,10 +39,11 @@ export class NgtsStageRefit {
39
39
  this.boundsApi.refresh().clip().fit();
40
40
  }
41
41
  }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: "radius", adjustCamera: "adjustCamera" }, usesOnChanges: true, ngImport: i0 }); }
42
44
  }
43
- NgtsStageRefit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive });
44
- NgtsStageRefit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: "radius", adjustCamera: "adjustCamera" }, usesOnChanges: true, ngImport: i0 });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStageRefit, decorators: [{
45
+ export { NgtsStageRefit };
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStageRefit, decorators: [{
46
47
  type: Directive,
47
48
  args: [{ selector: 'ngts-stage-refit', standalone: true }]
48
49
  }], propDecorators: { radius: [{
@@ -51,7 +52,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
51
52
  type: Input
52
53
  }] } });
53
54
  extend({ AmbientLight, SpotLight, Vector2, PointLight, Group });
54
- export class NgtsStage extends NgtRxStore {
55
+ class NgtsStage extends NgtRxStore {
55
56
  constructor() {
56
57
  super(...arguments);
57
58
  this.cdr = inject(ChangeDetectorRef);
@@ -126,9 +127,8 @@ export class NgtsStage extends NgtRxStore {
126
127
  if (this.centered.observed)
127
128
  this.centered.emit(props);
128
129
  }
129
- }
130
- NgtsStagefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStage, deps: null, target: i0.ɵɵFactoryTarget.Component });
131
- NgtsStage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { preset: "preset", shadows: "shadows", adjustCamera: "adjustCamera", environment: "environment", intensity: "intensity", center: "center" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
131
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { preset: "preset", shadows: "shadows", adjustCamera: "adjustCamera", environment: "environment", intensity: "intensity", center: "center" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
132
132
  <ngt-ambient-light [intensity]="get('intensity')! / 3" />
133
133
  <ngt-spot-light
134
134
  [penumbra]="1"
@@ -228,8 +228,10 @@ NgtsStage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
228
228
  [ground]="get('environmentInfo').ground"
229
229
  [encoding]="get('environmentInfo').encoding"
230
230
  />
231
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["boundsRef", "damping", "fit", "clip", "observe", "margin", "eps"], outputs: ["fitted"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["centerRef", "top", "right", "bottom", "left", "front", "back", "disableX", "disableY", "disableZ", "disabled", "precise"], outputs: ["centered"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["contactShadowsRef", "opacity", "width", "height", "blur", "far", "smooth", "resolution", "frames", "scale", "color", "depthWrite", "renderOrder"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["frames", "blend", "limit", "scale", "temporal", "opacity", "alphaTest", "color", "colorBlend", "resolution", "toneMapped"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["lightsRef", "frames", "position", "radius", "amount", "intensity", "ambient", "castShadow", "bias", "mapSize", "size", "near", "far"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment" }] });
232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStage, decorators: [{
231
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["boundsRef", "damping", "fit", "clip", "observe", "margin", "eps"], outputs: ["fitted"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["centerRef", "top", "right", "bottom", "left", "front", "back", "disableX", "disableY", "disableZ", "disabled", "precise"], outputs: ["centered"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["contactShadowsRef", "opacity", "width", "height", "blur", "far", "smooth", "resolution", "frames", "scale", "color", "depthWrite", "renderOrder"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["frames", "blend", "limit", "scale", "temporal", "opacity", "alphaTest", "color", "colorBlend", "resolution", "toneMapped"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["lightsRef", "frames", "position", "radius", "amount", "intensity", "ambient", "castShadow", "bias", "mapSize", "size", "near", "far"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment" }] }); }
232
+ }
233
+ export { NgtsStage };
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStage, decorators: [{
233
235
  type: Component,
234
236
  args: [{
235
237
  selector: 'ngts-stage',
@@ -363,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
363
365
  }], centered: [{
364
366
  type: Output
365
367
  }] } });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3RhZ2Uvc3RhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLEdBQUc7SUFDWixTQUFTLEVBQUU7UUFDUCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENB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SU8sT0FBTztzQkFBbkIsS0FBSztnQkFJTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW1iaWVudExpZ2h0LCBHcm91cCwgUG9pbnRMaWdodCwgU3BvdExpZ2h0LCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3MgfSBmcm9tICcuLi9hY2N1bXVsYXRpdmUtc2hhZG93cy9hY2N1bXVsYXRpdmUtc2hhZG93cyc7XG5pbXBvcnQgeyBOZ3RzUmFuZG9taXplZExpZ2h0cyB9IGZyb20gJy4uL2FjY3VtdWxhdGl2ZS1zaGFkb3dzL3JhbmRvbWl6ZWQtbGlnaHRzJztcbmltcG9ydCB7IE5ndHNCb3VuZHMsIE5HVFNfQk9VTkRTX0FQSSB9IGZyb20gJy4uL2JvdW5kcy9ib3VuZHMnO1xuaW1wb3J0IHsgTmd0c0NlbnRlciB9IGZyb20gJy4uL2NlbnRlci9jZW50ZXInO1xuaW1wb3J0IHsgTmd0c0NvbnRhY3RTaGFkb3dzIH0gZnJvbSAnLi4vY29udGFjdC1zaGFkb3dzL2NvbnRhY3Qtc2hhZG93cyc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB9IGZyb20gJy4uL2Vudmlyb25tZW50L2Fzc2V0cyc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRJbnB1dHMgfSBmcm9tICcuLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC1pbnB1dHMnO1xuXG5jb25zdCBwcmVzZXRzID0ge1xuICAgIHJlbWJyYW5kdDoge1xuICAgICAgICBtYWluOiBbMSwgMiwgMV0sXG4gICAgICAgIGZpbGw6IFstMiwgLTAuNSwgLTJdLFxuICAgIH0sXG4gICAgcG9ydHJhaXQ6IHtcbiAgICAgICAgbWFpbjogWy0xLCAyLCAwLjVdLFxuICAgICAgICBmaWxsOiBbLTEsIDAuNSwgLTEuNV0sXG4gICAgfSxcbiAgICB1cGZyb250OiB7XG4gICAgICAgIG1haW46IFswLCAyLCAxXSxcbiAgICAgICAgZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuICAgIH0sXG4gICAgc29mdDoge1xuICAgICAgICBtYWluOiBbLTIsIDQsIDRdLFxuICAgICAgICBmaWxsOiBbLTEsIDAuNSwgLTEuNV0sXG4gICAgfSxcbn07XG5cbnR5cGUgTmd0c1N0YWdlU2hhZG93cyA9IFBhcnRpYWw8Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3M+ICZcbiAgICBQYXJ0aWFsPE5ndHNSYW5kb21pemVkTGlnaHRzPiAmXG4gICAgUGFydGlhbDxOZ3RzQ29udGFjdFNoYWRvd3M+ICYge1xuICAgICAgICB0eXBlOiAnY29udGFjdCcgfCAnYWNjdW11bGF0aXZlJztcbiAgICAgICAgLyoqIFNoYWRvdyBwbGFuZSBvZmZzZXQsIGRlZmF1bHQ6IDAgKi9cbiAgICAgICAgb2Zmc2V0PzogbnVtYmVyO1xuICAgICAgICAvKiogU2hhZG93IGJpYXMsIGRlZmF1bHQ6IC0wLjAwMDEgKi9cbiAgICAgICAgYmlhcz86IG51bWJlcjtcbiAgICAgICAgLyoqIFNoYWRvdyBub3JtYWwgYmlhcywgZGVmYXVsdDogMCAqL1xuICAgICAgICBub3JtYWxCaWFzPzogbnVtYmVyO1xuICAgICAgICAvKiogU2hhZG93IG1hcCBzaXplLCBkZWZhdWx0OiAxMDI0ICovXG4gICAgICAgIHNpemU/OiBudW1iZXI7XG4gICAgfTtcblxudHlwZSBOZ3RzU3RhZ2VQcm9wcyA9IHtcbiAgICAvKiogTGlnaHRpbmcgc2V0dXAsIGRlZmF1bHQ6IFwicmVtYnJhbmR0XCIgKi9cbiAgICBwcmVzZXQ/OlxuICAgICAgICB8ICdyZW1icmFuZHQnXG4gICAgICAgIHwgJ3BvcnRyYWl0J1xuICAgICAgICB8ICd1cGZyb250J1xuICAgICAgICB8ICdzb2Z0J1xuICAgICAgICB8IHsgbWFpbjogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdOyBmaWxsOiBbeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcl0gfTtcbiAgICAvKiogQ29udHJvbHMgdGhlIGdyb3VuZCBzaGFkb3dzLCBkZWZhdWx0OiBcImNvbnRhY3RcIiAqL1xuICAgIHNoYWRvd3M/OiBib29sZWFuIHwgJ2NvbnRhY3QnIHwgJ2FjY3VtdWxhdGl2ZScgfCBOZ3RzU3RhZ2VTaGFkb3dzO1xuICAgIC8qKiBPcHRpb25hbGx5IHdyYXBzIGFuZCB0aGVyZWJ5IGNlbnRlcnMgdGhlIG1vZGVscyB1c2luZyA8Qm91bmRzPiwgY2FuIGFsc28gYmUgYSBtYXJnaW4sIGRlZmF1bHQ6IHRydWUgKi9cbiAgICBhZGp1c3RDYW1lcmE/OiBib29sZWFuIHwgbnVtYmVyO1xuICAgIC8qKiBUaGUgZGVmYXVsdCBlbnZpcm9ubWVudCwgZGVmYXVsdDogXCJjaXR5XCIgKi9cbiAgICBlbnZpcm9ubWVudD86IE5ndHNFbnZpcm9ubWVudFByZXNldHNUeXBlIHwgUGFydGlhbDxOZ3RzRW52aXJvbm1lbnRJbnB1dHM+O1xuICAgIC8qKiBUaGUgbGlnaHRpbmcgaW50ZW5zaXR5LCBkZWZhdWx0OiAwLjUgKi9cbiAgICBpbnRlbnNpdHk/OiBudW1iZXI7XG4gICAgLyoqIFRvIGFkanVzdCBjZW50ZXJpbmcsIGRlZmF1bHQ6IHVuZGVmaW5lZCAqL1xuICAgIGNlbnRlcj86IFBhcnRpYWw8Tmd0c0NlbnRlcj47XG59O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RzLXN0YWdlLXJlZml0Jywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFnZVJlZml0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kc0FwaSA9IGluamVjdChOR1RTX0JPVU5EU19BUEkpO1xuXG4gICAgQElucHV0KCkgcmFkaXVzID0gMDtcbiAgICBASW5wdXQoKSBhZGp1c3RDYW1lcmEgPSB0cnVlO1xuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmFkanVzdENhbWVyYSkge1xuICAgICAgICAgICAgdGhpcy5ib3VuZHNBcGkucmVmcmVzaCgpLmNsaXAoKS5maXQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXh0ZW5kKHsgQW1iaWVudExpZ2h0LCBTcG90TGlnaHQsIFZlY3RvcjIsIFBvaW50TGlnaHQsIEdyb3VwIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3RhZ2UnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1hbWJpZW50LWxpZ2h0IFtpbnRlbnNpdHldPVwiZ2V0KCdpbnRlbnNpdHknKSEgLyAzXCIgLz5cbiAgICAgICAgPG5ndC1zcG90LWxpZ2h0XG4gICAgICAgICAgICBbcGVudW1icmFdPVwiMVwiXG4gICAgICAgICAgICBbcG9zaXRpb25dPVwiZ2V0KCdzcG90TGlnaHRQb3NpdGlvbicpXCJcbiAgICAgICAgICAgIFtpbnRlbnNpdHldPVwiZ2V0KCdpbnRlbnNpdHknKSEgKiAyXCJcbiAgICAgICAgICAgIFtjYXN0U2hhZG93XT1cIiEhZ2V0KCdzaGFkb3dzJylcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJnZXQoJ3NoYWRvd3NJbmZvJykuc2hhZG93Qmlhc1wiIGF0dGFjaD1cInNoYWRvdy5iaWFzXCIgLz5cbiAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnc2hhZG93c0luZm8nKS5ub3JtYWxCaWFzXCIgYXR0YWNoPVwic2hhZG93Lm5vcm1hbEJpYXNcIiAvPlxuICAgICAgICAgICAgPG5ndC12ZWN0b3IyXG4gICAgICAgICAgICAgICAgKmFyZ3M9XCJbZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd1NpemUsIGdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dTaXplXVwiXG4gICAgICAgICAgICAgICAgYXR0YWNoPVwic2hhZG93Lm1hcFNpemVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9uZ3Qtc3BvdC1saWdodD5cbiAgICAgICAgPG5ndC1wb2ludC1saWdodCBbcG9zaXRpb25dPVwiZ2V0KCdwb2ludExpZ2h0UG9zaXRpb24nKVwiIFtpbnRlbnNpdHldPVwiZ2V0KCdpbnRlbnNpdHknKVwiIC8+XG5cbiAgICAgICAgPG5ndHMtYm91bmRzXG4gICAgICAgICAgICBbZml0XT1cIiEhZ2V0KCdhZGp1c3RDYW1lcmEnKVwiXG4gICAgICAgICAgICBbY2xpcF09XCIhIWdldCgnYWRqdXN0Q2FtZXJhJylcIlxuICAgICAgICAgICAgW21hcmdpbl09XCJOdW1iZXIoZ2V0KCdhZGp1c3RDYW1lcmEnKSlcIlxuICAgICAgICAgICAgW29ic2VydmVdPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZ3RzLXN0YWdlLXJlZml0IFtyYWRpdXNdPVwiZ2V0KCdyYWRpdXMnKVwiIFthZGp1c3RDYW1lcmFdPVwiISFnZXQoJ2FkanVzdENhbWVyYScpXCIgLz5cbiAgICAgICAgICAgIDxuZ3RzLWNlbnRlclxuICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJbMCwgZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd09mZnNldCAvIDIsIDBdXCJcbiAgICAgICAgICAgICAgICBbdG9wXT1cIiEhZ2V0KCdjZW50ZXInKT8udG9wXCJcbiAgICAgICAgICAgICAgICBbcmlnaHRdPVwiISFnZXQoJ2NlbnRlcicpPy5yaWdodFwiXG4gICAgICAgICAgICAgICAgW2JvdHRvbV09XCIhIWdldCgnY2VudGVyJyk/LmJvdHRvbVwiXG4gICAgICAgICAgICAgICAgW2xlZnRdPVwiISFnZXQoJ2NlbnRlcicpPy5sZWZ0XCJcbiAgICAgICAgICAgICAgICBbZnJvbnRdPVwiISFnZXQoJ2NlbnRlcicpPy5mcm9udFwiXG4gICAgICAgICAgICAgICAgW2JhY2tdPVwiISFnZXQoJ2NlbnRlcicpPy5iYWNrXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVhdPVwiISFnZXQoJ2NlbnRlcicpPy5kaXNhYmxlWFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVZXT1cIiEhZ2V0KCdjZW50ZXInKT8uZGlzYWJsZVlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlWl09XCIhIWdldCgnY2VudGVyJyk/LmRpc2FibGVaXCJcbiAgICAgICAgICAgICAgICBbcHJlY2lzZV09XCIhIWdldCgnY2VudGVyJyk/LnByZWNpc2VcIlxuICAgICAgICAgICAgICAgIChjZW50ZXJlZCk9XCJvbkNlbnRlcmVkKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L25ndHMtY2VudGVyPlxuICAgICAgICA8L25ndHMtYm91bmRzPlxuICAgICAgICA8bmd0LWdyb3VwIFtwb3NpdGlvbl09XCJbMCwgLWdldCgnaGVpZ2h0JykgLyAyIC0gZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd09mZnNldCAvIDIsIDBdXCI+XG4gICAgICAgICAgICA8bmd0cy1jb250YWN0LXNoYWRvd3NcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdldCgnc2hhZG93c0luZm8nKS5jb250YWN0U2hhZG93XCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZ2V0KCdyYWRpdXMnKSAqIDRcIlxuICAgICAgICAgICAgICAgIFtmYXJdPVwiZ2V0KCdyYWRpdXMnKVwiXG4gICAgICAgICAgICAgICAgW2JsdXJdPVwiMlwiXG4gICAgICAgICAgICAgICAgW29wYWNpdHldPVwiZ2V0KCdzaGFkb3dzSW5mbycpLm9wYWNpdHlcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJnZXQoJ3NoYWRvd3NJbmZvJykud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgW3Ntb290aF09XCJnZXQoJ3NoYWRvd3NJbmZvJykuc21vb3RoXCJcbiAgICAgICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJnZXQoJ3NoYWRvd3NJbmZvJykucmVzb2x1dGlvblwiXG4gICAgICAgICAgICAgICAgW2ZyYW1lc109XCJnZXQoJ3NoYWRvd3NJbmZvJykuZnJhbWVzXCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNjYWxlXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbZGVwdGhXcml0ZV09XCJnZXQoJ3NoYWRvd3NJbmZvJykuZGVwdGhXcml0ZVwiXG4gICAgICAgICAgICAgICAgW3JlbmRlck9yZGVyXT1cImdldCgnc2hhZG93c0luZm8nKS5yZW5kZXJPcmRlclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG5ndHMtYWNjdW11bGF0aXZlLXNoYWRvd3NcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdldCgnc2hhZG93c0luZm8nKS5hY2N1bXVsYXRpdmVTaGFkb3dcIlxuICAgICAgICAgICAgICAgIFt0ZW1wb3JhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZnJhbWVzXT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgW2FscGhhVGVzdF09XCIwLjlcIlxuICAgICAgICAgICAgICAgIFt0b25lTWFwcGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzY2FsZV09XCJnZXQoJ3JhZGl1cycpICogNFwiXG4gICAgICAgICAgICAgICAgW29wYWNpdHldPVwiZ2V0KCdzaGFkb3dzSW5mbycpLm9wYWNpdHlcIlxuICAgICAgICAgICAgICAgIFthbHBoYVRlc3RdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmFscGhhVGVzdFwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cImdldCgnc2hhZG93c0luZm8nKS5jb2xvclwiXG4gICAgICAgICAgICAgICAgW2NvbG9yQmxlbmRdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmNvbG9yQmxlbmRcIlxuICAgICAgICAgICAgICAgIFtyZXNvbHV0aW9uXT1cImdldCgnc2hhZG93c0luZm8nKS5yZXNvbHV0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmd0cy1yYW5kb21pemVkLWxpZ2h0c1xuICAgICAgICAgICAgICAgICAgICBbYW1vdW50XT1cImdldCgnc2hhZG93c0luZm8nKS5hbW91bnQgPz8gOFwiXG4gICAgICAgICAgICAgICAgICAgIFtyYWRpdXNdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnJhZGl1cyA/PyBnZXQoJ3JhZGl1cycpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FtYmllbnRdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmFtYmllbnQgPz8gMC41XCJcbiAgICAgICAgICAgICAgICAgICAgW2ludGVuc2l0eV09XCJnZXQoJ3NoYWRvd3NJbmZvJykuaW50ZW5zaXR5ID8/IDFcIlxuICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZ2V0KCdzcG90TGlnaHRQb3NpdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiZ2V0KCdyYWRpdXMnKSAqIDRcIlxuICAgICAgICAgICAgICAgICAgICBbYmlhc109XCItZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd0JpYXNcIlxuICAgICAgICAgICAgICAgICAgICBbbWFwU2l6ZV09XCJnZXQoJ3NoYWRvd3NJbmZvJykuc2hhZG93U2l6ZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cz5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgICAgIDxuZ3RzLWVudmlyb25tZW50XG4gICAgICAgICAgICAqbmdJZj1cImdldCgnZW52aXJvbm1lbnRJbmZvJylcIlxuICAgICAgICAgICAgW2ZyYW1lc109XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmZyYW1lc1wiXG4gICAgICAgICAgICBbbmVhcl09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLm5lYXJcIlxuICAgICAgICAgICAgW2Zhcl09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmZhclwiXG4gICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnJlc29sdXRpb25cIlxuICAgICAgICAgICAgW2JhY2tncm91bmRdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5iYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgIFtibHVyXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykuYmx1clwiXG4gICAgICAgICAgICBbbWFwXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykubWFwXCJcbiAgICAgICAgICAgIFtmaWxlc109XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmZpbGVzXCJcbiAgICAgICAgICAgIFtwYXRoXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykucGF0aFwiXG4gICAgICAgICAgICBbcHJlc2V0XT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykucHJlc2V0XCJcbiAgICAgICAgICAgIFtzY2VuZV09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnNjZW5lXCJcbiAgICAgICAgICAgIFtleHRlbnNpb25zXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykuZXh0ZW5zaW9uc1wiXG4gICAgICAgICAgICBbZ3JvdW5kXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykuZ3JvdW5kXCJcbiAgICAgICAgICAgIFtlbmNvZGluZ109XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmVuY29kaW5nXCJcbiAgICAgICAgLz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmd0QXJncyxcbiAgICAgICAgTmd0c0JvdW5kcyxcbiAgICAgICAgTmd0c1N0YWdlUmVmaXQsXG4gICAgICAgIE5ndHNDZW50ZXIsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5ndHNDb250YWN0U2hhZG93cyxcbiAgICAgICAgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3MsXG4gICAgICAgIE5ndHNSYW5kb21pemVkTGlnaHRzLFxuICAgICAgICBOZ3RzRW52aXJvbm1lbnQsXG4gICAgXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFnZSBleHRlbmRzIE5ndFJ4U3RvcmU8Tmd0c1N0YWdlUHJvcHM+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcmVhZG9ubHkgTnVtYmVyID0gTnVtYmVyO1xuXG4gICAgQElucHV0KCkgc2V0IHByZXNldChwcmVzZXQ6IE5ndHNTdGFnZVByb3BzWydwcmVzZXQnXSkge1xuICAgICAgICB0aGlzLnNldCh7IHByZXNldCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hhZG93cyhzaGFkb3dzOiBOZ3RzU3RhZ2VQcm9wc1snc2hhZG93cyddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2hhZG93cyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYWRqdXN0Q2FtZXJhKGFkanVzdENhbWVyYTogTmd0c1N0YWdlUHJvcHNbJ2FkanVzdENhbWVyYSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYWRqdXN0Q2FtZXJhIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogTmd0c1N0YWdlUHJvcHNbJ2Vudmlyb25tZW50J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBlbnZpcm9ubWVudCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgaW50ZW5zaXR5KGludGVuc2l0eTogTmd0c1N0YWdlUHJvcHNbJ2ludGVuc2l0eSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW50ZW5zaXR5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjZW50ZXIoY2VudGVyOiBOZ3RzU3RhZ2VQcm9wc1snY2VudGVyJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjZW50ZXIgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGNlbnRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcigpIGFzIE5ndHNDZW50ZXJbJ2NlbnRlcmVkJ107XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCkge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIGFkanVzdENhbWVyYTogdHJ1ZSxcbiAgICAgICAgICAgIGludGVuc2l0eTogMC41LFxuICAgICAgICAgICAgc2hhZG93czogJ2NvbnRhY3QnLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6ICdjaXR5JyxcbiAgICAgICAgICAgIHByZXNldDogJ3JlbWJyYW5kdCcsXG5cbiAgICAgICAgICAgIHJhZGl1czogMCxcbiAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdjb25maWcnLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3ByZXNldCcpLnBpcGUobWFwKChwcmVzZXQpID0+ICh0eXBlb2YgcHJlc2V0ID09PSAnc3RyaW5nJyA/IHByZXNldHNbcHJlc2V0XSA6IHByZXNldCkpKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdzaGFkb3dzSW5mbycsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCgnc2hhZG93cycpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChzaGFkb3dzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0U2hhZG93OiBzaGFkb3dzID09PSAnY29udGFjdCcgfHwgKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/LnR5cGUgPT09ICdjb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGl2ZVNoYWRvdzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dzID09PSAnYWNjdW11bGF0aXZlJyB8fCAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8udHlwZSA9PT0gJ2FjY3VtdWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dCaWFzOiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8uYmlhcyA/PyAtMC4wMDAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsQmlhczogKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/Lm5vcm1hbEJpYXMgPz8gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1NpemU6IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy5zaXplID8/IDEwMjQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dPZmZzZXQ6IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy5vZmZzZXQgPz8gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0eXBlb2Ygc2hhZG93cyA9PT0gJ3N0cmluZycgPyB7fSA6IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpIHx8IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdzcG90TGlnaHRQb3NpdGlvbicsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2NvbmZpZycsICdyYWRpdXMnXSwgKHsgY29uZmlnLCByYWRpdXMgfSkgPT4gW1xuICAgICAgICAgICAgICAgIGNvbmZpZy5tYWluWzBdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5tYWluWzFdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5tYWluWzJdICogcmFkaXVzLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAncG9pbnRMaWdodFBvc2l0aW9uJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KFsnY29uZmlnJywgJ3JhZGl1cyddLCAoeyBjb25maWcsIHJhZGl1cyB9KSA9PiBbXG4gICAgICAgICAgICAgICAgY29uZmlnLmZpbGxbMF0gKiByYWRpdXMsXG4gICAgICAgICAgICAgICAgY29uZmlnLmZpbGxbMV0gKiByYWRpdXMsXG4gICAgICAgICAgICAgICAgY29uZmlnLmZpbGxbMl0gKiByYWRpdXMsXG4gICAgICAgICAgICBdKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdlbnZpcm9ubWVudEluZm8nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2Vudmlyb25tZW50JykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGVudmlyb25tZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZW52aXJvbm1lbnQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVudmlyb25tZW50ID09PSAnc3RyaW5nJykgcmV0dXJuIHsgcHJlc2V0OiBlbnZpcm9ubWVudCB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkNlbnRlcmVkKHByb3BzOiB7XG4gICAgICAgIC8qKiBUaGUgbmV4dCBwYXJlbnQgYWJvdmUgPENlbnRlcj4gKi9cbiAgICAgICAgcGFyZW50OiBUSFJFRS5PYmplY3QzRDtcbiAgICAgICAgLyoqIFRoZSBvdXRtb3N0IGNvbnRhaW5lciBncm91cCBvZiB0aGUgPENlbnRlcj4gY29tcG9uZW50ICovXG4gICAgICAgIGNvbnRhaW5lcjogVEhSRUUuT2JqZWN0M0Q7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgICAgICBkZXB0aDogbnVtYmVyO1xuICAgICAgICBib3VuZGluZ0JveDogVEhSRUUuQm94MztcbiAgICAgICAgYm91bmRpbmdTcGhlcmU6IFRIUkVFLlNwaGVyZTtcbiAgICAgICAgY2VudGVyOiBUSFJFRS5WZWN0b3IzO1xuICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogbnVtYmVyO1xuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiBudW1iZXI7XG4gICAgICAgIGRlcHRoQWxpZ25tZW50OiBudW1iZXI7XG4gICAgfSkge1xuICAgICAgICBjb25zdCB7IGJvdW5kaW5nU3BoZXJlLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCB9ID0gcHJvcHM7XG4gICAgICAgIHRoaXMuc2V0KHsgcmFkaXVzOiBib3VuZGluZ1NwaGVyZS5yYWRpdXMsIHdpZHRoLCBoZWlnaHQsIGRlcHRoIH0pO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGlmICh0aGlzLmNlbnRlcmVkLm9ic2VydmVkKSB0aGlzLmNlbnRlcmVkLmVtaXQocHJvcHMpO1xuICAgIH1cbn1cbiJdfQ==
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3RhZ2Uvc3RhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLEdBQUc7SUFDWixTQUFTLEVBQUU7UUFDUCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENB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QixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBOZ3RBcmdzLCBOZ3RSeFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFtYmllbnRMaWdodCwgR3JvdXAsIFBvaW50TGlnaHQsIFNwb3RMaWdodCwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIH0gZnJvbSAnLi4vYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c1JhbmRvbWl6ZWRMaWdodHMgfSBmcm9tICcuLi9hY2N1bXVsYXRpdmUtc2hhZG93cy9yYW5kb21pemVkLWxpZ2h0cyc7XG5pbXBvcnQgeyBOZ3RzQm91bmRzLCBOR1RTX0JPVU5EU19BUEkgfSBmcm9tICcuLi9ib3VuZHMvYm91bmRzJztcbmltcG9ydCB7IE5ndHNDZW50ZXIgfSBmcm9tICcuLi9jZW50ZXIvY2VudGVyJztcbmltcG9ydCB7IE5ndHNDb250YWN0U2hhZG93cyB9IGZyb20gJy4uL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50UHJlc2V0c1R5cGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudC9hc3NldHMnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50SW5wdXRzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQtaW5wdXRzJztcblxuY29uc3QgcHJlc2V0cyA9IHtcbiAgICByZW1icmFuZHQ6IHtcbiAgICAgICAgbWFpbjogWzEsIDIsIDFdLFxuICAgICAgICBmaWxsOiBbLTIsIC0wLjUsIC0yXSxcbiAgICB9LFxuICAgIHBvcnRyYWl0OiB7XG4gICAgICAgIG1haW46IFstMSwgMiwgMC41XSxcbiAgICAgICAgZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuICAgIH0sXG4gICAgdXBmcm9udDoge1xuICAgICAgICBtYWluOiBbMCwgMiwgMV0sXG4gICAgICAgIGZpbGw6IFstMSwgMC41LCAtMS41XSxcbiAgICB9LFxuICAgIHNvZnQ6IHtcbiAgICAgICAgbWFpbjogWy0yLCA0LCA0XSxcbiAgICAgICAgZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuICAgIH0sXG59O1xuXG50eXBlIE5ndHNTdGFnZVNoYWRvd3MgPSBQYXJ0aWFsPE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzPiAmXG4gICAgUGFydGlhbDxOZ3RzUmFuZG9taXplZExpZ2h0cz4gJlxuICAgIFBhcnRpYWw8Tmd0c0NvbnRhY3RTaGFkb3dzPiAmIHtcbiAgICAgICAgdHlwZTogJ2NvbnRhY3QnIHwgJ2FjY3VtdWxhdGl2ZSc7XG4gICAgICAgIC8qKiBTaGFkb3cgcGxhbmUgb2Zmc2V0LCBkZWZhdWx0OiAwICovXG4gICAgICAgIG9mZnNldD86IG51bWJlcjtcbiAgICAgICAgLyoqIFNoYWRvdyBiaWFzLCBkZWZhdWx0OiAtMC4wMDAxICovXG4gICAgICAgIGJpYXM/OiBudW1iZXI7XG4gICAgICAgIC8qKiBTaGFkb3cgbm9ybWFsIGJpYXMsIGRlZmF1bHQ6IDAgKi9cbiAgICAgICAgbm9ybWFsQmlhcz86IG51bWJlcjtcbiAgICAgICAgLyoqIFNoYWRvdyBtYXAgc2l6ZSwgZGVmYXVsdDogMTAyNCAqL1xuICAgICAgICBzaXplPzogbnVtYmVyO1xuICAgIH07XG5cbnR5cGUgTmd0c1N0YWdlUHJvcHMgPSB7XG4gICAgLyoqIExpZ2h0aW5nIHNldHVwLCBkZWZhdWx0OiBcInJlbWJyYW5kdFwiICovXG4gICAgcHJlc2V0PzpcbiAgICAgICAgfCAncmVtYnJhbmR0J1xuICAgICAgICB8ICdwb3J0cmFpdCdcbiAgICAgICAgfCAndXBmcm9udCdcbiAgICAgICAgfCAnc29mdCdcbiAgICAgICAgfCB7IG1haW46IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXTsgZmlsbDogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIH07XG4gICAgLyoqIENvbnRyb2xzIHRoZSBncm91bmQgc2hhZG93cywgZGVmYXVsdDogXCJjb250YWN0XCIgKi9cbiAgICBzaGFkb3dzPzogYm9vbGVhbiB8ICdjb250YWN0JyB8ICdhY2N1bXVsYXRpdmUnIHwgTmd0c1N0YWdlU2hhZG93cztcbiAgICAvKiogT3B0aW9uYWxseSB3cmFwcyBhbmQgdGhlcmVieSBjZW50ZXJzIHRoZSBtb2RlbHMgdXNpbmcgPEJvdW5kcz4sIGNhbiBhbHNvIGJlIGEgbWFyZ2luLCBkZWZhdWx0OiB0cnVlICovXG4gICAgYWRqdXN0Q2FtZXJhPzogYm9vbGVhbiB8IG51bWJlcjtcbiAgICAvKiogVGhlIGRlZmF1bHQgZW52aXJvbm1lbnQsIGRlZmF1bHQ6IFwiY2l0eVwiICovXG4gICAgZW52aXJvbm1lbnQ/OiBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB8IFBhcnRpYWw8Tmd0c0Vudmlyb25tZW50SW5wdXRzPjtcbiAgICAvKiogVGhlIGxpZ2h0aW5nIGludGVuc2l0eSwgZGVmYXVsdDogMC41ICovXG4gICAgaW50ZW5zaXR5PzogbnVtYmVyO1xuICAgIC8qKiBUbyBhZGp1c3QgY2VudGVyaW5nLCBkZWZhdWx0OiB1bmRlZmluZWQgKi9cbiAgICBjZW50ZXI/OiBQYXJ0aWFsPE5ndHNDZW50ZXI+O1xufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0cy1zdGFnZS1yZWZpdCcsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2VSZWZpdCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBib3VuZHNBcGkgPSBpbmplY3QoTkdUU19CT1VORFNfQVBJKTtcblxuICAgIEBJbnB1dCgpIHJhZGl1cyA9IDA7XG4gICAgQElucHV0KCkgYWRqdXN0Q2FtZXJhID0gdHJ1ZTtcblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5hZGp1c3RDYW1lcmEpIHtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzQXBpLnJlZnJlc2goKS5jbGlwKCkuZml0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4dGVuZCh7IEFtYmllbnRMaWdodCwgU3BvdExpZ2h0LCBWZWN0b3IyLCBQb2ludExpZ2h0LCBHcm91cCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXN0YWdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtYW1iaWVudC1saWdodCBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JykhIC8gM1wiIC8+XG4gICAgICAgIDxuZ3Qtc3BvdC1saWdodFxuICAgICAgICAgICAgW3BlbnVtYnJhXT1cIjFcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImdldCgnc3BvdExpZ2h0UG9zaXRpb24nKVwiXG4gICAgICAgICAgICBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JykhICogMlwiXG4gICAgICAgICAgICBbY2FzdFNoYWRvd109XCIhIWdldCgnc2hhZG93cycpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd0JpYXNcIiBhdHRhY2g9XCJzaGFkb3cuYmlhc1wiIC8+XG4gICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJnZXQoJ3NoYWRvd3NJbmZvJykubm9ybWFsQmlhc1wiIGF0dGFjaD1cInNoYWRvdy5ub3JtYWxCaWFzXCIgLz5cbiAgICAgICAgICAgIDxuZ3QtdmVjdG9yMlxuICAgICAgICAgICAgICAgICphcmdzPVwiW2dldCgnc2hhZG93c0luZm8nKS5zaGFkb3dTaXplLCBnZXQoJ3NoYWRvd3NJbmZvJykuc2hhZG93U2l6ZV1cIlxuICAgICAgICAgICAgICAgIGF0dGFjaD1cInNoYWRvdy5tYXBTaXplXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmd0LXNwb3QtbGlnaHQ+XG4gICAgICAgIDxuZ3QtcG9pbnQtbGlnaHQgW3Bvc2l0aW9uXT1cImdldCgncG9pbnRMaWdodFBvc2l0aW9uJylcIiBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JylcIiAvPlxuXG4gICAgICAgIDxuZ3RzLWJvdW5kc1xuICAgICAgICAgICAgW2ZpdF09XCIhIWdldCgnYWRqdXN0Q2FtZXJhJylcIlxuICAgICAgICAgICAgW2NsaXBdPVwiISFnZXQoJ2FkanVzdENhbWVyYScpXCJcbiAgICAgICAgICAgIFttYXJnaW5dPVwiTnVtYmVyKGdldCgnYWRqdXN0Q2FtZXJhJykpXCJcbiAgICAgICAgICAgIFtvYnNlcnZlXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmd0cy1zdGFnZS1yZWZpdCBbcmFkaXVzXT1cImdldCgncmFkaXVzJylcIiBbYWRqdXN0Q2FtZXJhXT1cIiEhZ2V0KCdhZGp1c3RDYW1lcmEnKVwiIC8+XG4gICAgICAgICAgICA8bmd0cy1jZW50ZXJcbiAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiWzAsIGdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dPZmZzZXQgLyAyLCAwXVwiXG4gICAgICAgICAgICAgICAgW3RvcF09XCIhIWdldCgnY2VudGVyJyk/LnRvcFwiXG4gICAgICAgICAgICAgICAgW3JpZ2h0XT1cIiEhZ2V0KCdjZW50ZXInKT8ucmlnaHRcIlxuICAgICAgICAgICAgICAgIFtib3R0b21dPVwiISFnZXQoJ2NlbnRlcicpPy5ib3R0b21cIlxuICAgICAgICAgICAgICAgIFtsZWZ0XT1cIiEhZ2V0KCdjZW50ZXInKT8ubGVmdFwiXG4gICAgICAgICAgICAgICAgW2Zyb250XT1cIiEhZ2V0KCdjZW50ZXInKT8uZnJvbnRcIlxuICAgICAgICAgICAgICAgIFtiYWNrXT1cIiEhZ2V0KCdjZW50ZXInKT8uYmFja1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVYXT1cIiEhZ2V0KCdjZW50ZXInKT8uZGlzYWJsZVhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlWV09XCIhIWdldCgnY2VudGVyJyk/LmRpc2FibGVZXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVpdPVwiISFnZXQoJ2NlbnRlcicpPy5kaXNhYmxlWlwiXG4gICAgICAgICAgICAgICAgW3ByZWNpc2VdPVwiISFnZXQoJ2NlbnRlcicpPy5wcmVjaXNlXCJcbiAgICAgICAgICAgICAgICAoY2VudGVyZWQpPVwib25DZW50ZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9uZ3RzLWNlbnRlcj5cbiAgICAgICAgPC9uZ3RzLWJvdW5kcz5cbiAgICAgICAgPG5ndC1ncm91cCBbcG9zaXRpb25dPVwiWzAsIC1nZXQoJ2hlaWdodCcpIC8gMiAtIGdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dPZmZzZXQgLyAyLCAwXVwiPlxuICAgICAgICAgICAgPG5ndHMtY29udGFjdC1zaGFkb3dzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ3NoYWRvd3NJbmZvJykuY29udGFjdFNoYWRvd1wiXG4gICAgICAgICAgICAgICAgW3NjYWxlXT1cImdldCgncmFkaXVzJykgKiA0XCJcbiAgICAgICAgICAgICAgICBbZmFyXT1cImdldCgncmFkaXVzJylcIlxuICAgICAgICAgICAgICAgIFtibHVyXT1cIjJcIlxuICAgICAgICAgICAgICAgIFtvcGFjaXR5XT1cImdldCgnc2hhZG93c0luZm8nKS5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImdldCgnc2hhZG93c0luZm8nKS5oZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzbW9vdGhdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNtb290aFwiXG4gICAgICAgICAgICAgICAgW3Jlc29sdXRpb25dPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnJlc29sdXRpb25cIlxuICAgICAgICAgICAgICAgIFtmcmFtZXNdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmZyYW1lc1wiXG4gICAgICAgICAgICAgICAgW3NjYWxlXT1cImdldCgnc2hhZG93c0luZm8nKS5zY2FsZVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cImdldCgnc2hhZG93c0luZm8nKS5jb2xvclwiXG4gICAgICAgICAgICAgICAgW2RlcHRoV3JpdGVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmRlcHRoV3JpdGVcIlxuICAgICAgICAgICAgICAgIFtyZW5kZXJPcmRlcl09XCJnZXQoJ3NoYWRvd3NJbmZvJykucmVuZGVyT3JkZXJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZ3RzLWFjY3VtdWxhdGl2ZS1zaGFkb3dzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ3NoYWRvd3NJbmZvJykuYWNjdW11bGF0aXZlU2hhZG93XCJcbiAgICAgICAgICAgICAgICBbdGVtcG9yYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2ZyYW1lc109XCIxMDBcIlxuICAgICAgICAgICAgICAgIFthbHBoYVRlc3RdPVwiMC45XCJcbiAgICAgICAgICAgICAgICBbdG9uZU1hcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZ2V0KCdyYWRpdXMnKSAqIDRcIlxuICAgICAgICAgICAgICAgIFtvcGFjaXR5XT1cImdldCgnc2hhZG93c0luZm8nKS5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICBbYWxwaGFUZXN0XT1cImdldCgnc2hhZG93c0luZm8nKS5hbHBoYVRlc3RcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXQoJ3NoYWRvd3NJbmZvJykuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtjb2xvckJsZW5kXT1cImdldCgnc2hhZG93c0luZm8nKS5jb2xvckJsZW5kXCJcbiAgICAgICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJnZXQoJ3NoYWRvd3NJbmZvJykucmVzb2x1dGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndHMtcmFuZG9taXplZC1saWdodHNcbiAgICAgICAgICAgICAgICAgICAgW2Ftb3VudF09XCJnZXQoJ3NoYWRvd3NJbmZvJykuYW1vdW50ID8/IDhcIlxuICAgICAgICAgICAgICAgICAgICBbcmFkaXVzXT1cImdldCgnc2hhZG93c0luZm8nKS5yYWRpdXMgPz8gZ2V0KCdyYWRpdXMnKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbWJpZW50XT1cImdldCgnc2hhZG93c0luZm8nKS5hbWJpZW50ID8/IDAuNVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnRlbnNpdHldPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmludGVuc2l0eSA/PyAxXCJcbiAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImdldCgnc3BvdExpZ2h0UG9zaXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImdldCgncmFkaXVzJykgKiA0XCJcbiAgICAgICAgICAgICAgICAgICAgW2JpYXNdPVwiLWdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dCaWFzXCJcbiAgICAgICAgICAgICAgICAgICAgW21hcFNpemVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd1NpemVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L25ndHMtYWNjdW11bGF0aXZlLXNoYWRvd3M+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgICAgICA8bmd0cy1lbnZpcm9ubWVudFxuICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpXCJcbiAgICAgICAgICAgIFtmcmFtZXNdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5mcmFtZXNcIlxuICAgICAgICAgICAgW25lYXJdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5uZWFyXCJcbiAgICAgICAgICAgIFtmYXJdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5mYXJcIlxuICAgICAgICAgICAgW3Jlc29sdXRpb25dPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5yZXNvbHV0aW9uXCJcbiAgICAgICAgICAgIFtiYWNrZ3JvdW5kXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykuYmFja2dyb3VuZFwiXG4gICAgICAgICAgICBbYmx1cl09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmJsdXJcIlxuICAgICAgICAgICAgW21hcF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLm1hcFwiXG4gICAgICAgICAgICBbZmlsZXNdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5maWxlc1wiXG4gICAgICAgICAgICBbcGF0aF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnBhdGhcIlxuICAgICAgICAgICAgW3ByZXNldF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnByZXNldFwiXG4gICAgICAgICAgICBbc2NlbmVdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5zY2VuZVwiXG4gICAgICAgICAgICBbZXh0ZW5zaW9uc109XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgW2dyb3VuZF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmdyb3VuZFwiXG4gICAgICAgICAgICBbZW5jb2RpbmddPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5lbmNvZGluZ1wiXG4gICAgICAgIC8+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5ndEFyZ3MsXG4gICAgICAgIE5ndHNCb3VuZHMsXG4gICAgICAgIE5ndHNTdGFnZVJlZml0LFxuICAgICAgICBOZ3RzQ2VudGVyLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ3RzQ29udGFjdFNoYWRvd3MsXG4gICAgICAgIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzLFxuICAgICAgICBOZ3RzUmFuZG9taXplZExpZ2h0cyxcbiAgICAgICAgTmd0c0Vudmlyb25tZW50LFxuICAgIF0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2UgZXh0ZW5kcyBOZ3RSeFN0b3JlPE5ndHNTdGFnZVByb3BzPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHJlYWRvbmx5IE51bWJlciA9IE51bWJlcjtcblxuICAgIEBJbnB1dCgpIHNldCBwcmVzZXQocHJlc2V0OiBOZ3RzU3RhZ2VQcm9wc1sncHJlc2V0J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwcmVzZXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNoYWRvd3Moc2hhZG93czogTmd0c1N0YWdlUHJvcHNbJ3NoYWRvd3MnXSkge1xuICAgICAgICB0aGlzLnNldCh7IHNoYWRvd3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGFkanVzdENhbWVyYShhZGp1c3RDYW1lcmE6IE5ndHNTdGFnZVByb3BzWydhZGp1c3RDYW1lcmEnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGFkanVzdENhbWVyYSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IE5ndHNTdGFnZVByb3BzWydlbnZpcm9ubWVudCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZW52aXJvbm1lbnQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGludGVuc2l0eShpbnRlbnNpdHk6IE5ndHNTdGFnZVByb3BzWydpbnRlbnNpdHknXSkge1xuICAgICAgICB0aGlzLnNldCh7IGludGVuc2l0eSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY2VudGVyKGNlbnRlcjogTmd0c1N0YWdlUHJvcHNbJ2NlbnRlciddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2VudGVyIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBjZW50ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKSBhcyBOZ3RzQ2VudGVyWydjZW50ZXJlZCddO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBhZGp1c3RDYW1lcmE6IHRydWUsXG4gICAgICAgICAgICBpbnRlbnNpdHk6IDAuNSxcbiAgICAgICAgICAgIHNoYWRvd3M6ICdjb250YWN0JyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiAnY2l0eScsXG4gICAgICAgICAgICBwcmVzZXQ6ICdyZW1icmFuZHQnLFxuXG4gICAgICAgICAgICByYWRpdXM6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnY29uZmlnJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdwcmVzZXQnKS5waXBlKG1hcCgocHJlc2V0KSA9PiAodHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycgPyBwcmVzZXRzW3ByZXNldF0gOiBwcmVzZXQpKSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc2hhZG93c0luZm8nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3NoYWRvd3MnKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc2hhZG93cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdFNoYWRvdzogc2hhZG93cyA9PT0gJ2NvbnRhY3QnIHx8IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy50eXBlID09PSAnY29udGFjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3c6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93cyA9PT0gJ2FjY3VtdWxhdGl2ZScgfHwgKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/LnR5cGUgPT09ICdhY2N1bXVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93QmlhczogKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/LmJpYXMgPz8gLTAuMDAwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbEJpYXM6IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy5ub3JtYWxCaWFzID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTaXplOiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8uc2l6ZSA/PyAxMDI0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8ub2Zmc2V0ID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHNoYWRvd3MgPT09ICdzdHJpbmcnID8ge30gOiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKSB8fCB7fSksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc3BvdExpZ2h0UG9zaXRpb24nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoWydjb25maWcnLCAncmFkaXVzJ10sICh7IGNvbmZpZywgcmFkaXVzIH0pID0+IFtcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblswXSAqIHJhZGl1cyxcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblsxXSAqIHJhZGl1cyxcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblsyXSAqIHJhZGl1cyxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3BvaW50TGlnaHRQb3NpdGlvbicsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2NvbmZpZycsICdyYWRpdXMnXSwgKHsgY29uZmlnLCByYWRpdXMgfSkgPT4gW1xuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzBdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzFdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzJdICogcmFkaXVzLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnZW52aXJvbm1lbnRJbmZvJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdlbnZpcm9ubWVudCcpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChlbnZpcm9ubWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVudmlyb25tZW50KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbnZpcm9ubWVudCA9PT0gJ3N0cmluZycpIHJldHVybiB7IHByZXNldDogZW52aXJvbm1lbnQgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25DZW50ZXJlZChwcm9wczoge1xuICAgICAgICAvKiogVGhlIG5leHQgcGFyZW50IGFib3ZlIDxDZW50ZXI+ICovXG4gICAgICAgIHBhcmVudDogVEhSRUUuT2JqZWN0M0Q7XG4gICAgICAgIC8qKiBUaGUgb3V0bW9zdCBjb250YWluZXIgZ3JvdXAgb2YgdGhlIDxDZW50ZXI+IGNvbXBvbmVudCAqL1xuICAgICAgICBjb250YWluZXI6IFRIUkVFLk9iamVjdDNEO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgZGVwdGg6IG51bWJlcjtcbiAgICAgICAgYm91bmRpbmdCb3g6IFRIUkVFLkJveDM7XG4gICAgICAgIGJvdW5kaW5nU3BoZXJlOiBUSFJFRS5TcGhlcmU7XG4gICAgICAgIGNlbnRlcjogVEhSRUUuVmVjdG9yMztcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IG51bWJlcjtcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogbnVtYmVyO1xuICAgICAgICBkZXB0aEFsaWdubWVudDogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgY29uc3QgeyBib3VuZGluZ1NwaGVyZSwgd2lkdGgsIGhlaWdodCwgZGVwdGggfSA9IHByb3BzO1xuICAgICAgICB0aGlzLnNldCh7IHJhZGl1czogYm91bmRpbmdTcGhlcmUucmFkaXVzLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCB9KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAodGhpcy5jZW50ZXJlZC5vYnNlcnZlZCkgdGhpcy5jZW50ZXJlZC5lbWl0KHByb3BzKTtcbiAgICB9XG59XG4iXX0=