@itwin/core-frontend 4.0.0 → 4.0.3

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 (822) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/lib/cjs/AccuDraw.js.map +1 -1
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  6. package/lib/cjs/AuxCoordSys.js.map +1 -1
  7. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  8. package/lib/cjs/BingLocation.js.map +1 -1
  9. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  11. package/lib/cjs/CategorySelectorState.js.map +1 -1
  12. package/lib/cjs/ChangeFlags.js.map +1 -1
  13. package/lib/cjs/CheckpointConnection.js.map +1 -1
  14. package/lib/cjs/CoordSystem.js.map +1 -1
  15. package/lib/cjs/DecorationsCache.js.map +1 -1
  16. package/lib/cjs/DevTools.js.map +1 -1
  17. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  18. package/lib/cjs/DisplayStyleState.js +2 -1
  19. package/lib/cjs/DisplayStyleState.js.map +1 -1
  20. package/lib/cjs/DrawingViewState.js +5 -5
  21. package/lib/cjs/DrawingViewState.js.map +1 -1
  22. package/lib/cjs/ElementLocateManager.js.map +1 -1
  23. package/lib/cjs/EmphasizeElements.js.map +1 -1
  24. package/lib/cjs/EntityState.js.map +1 -1
  25. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  26. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  27. package/lib/cjs/FlashSettings.js.map +1 -1
  28. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  29. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  30. package/lib/cjs/Frustum2d.js.map +1 -1
  31. package/lib/cjs/FrustumAnimator.js.map +1 -1
  32. package/lib/cjs/FuzzySearch.js.map +1 -1
  33. package/lib/cjs/GeoServices.js.map +1 -1
  34. package/lib/cjs/GlobeAnimator.js.map +1 -1
  35. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  36. package/lib/cjs/HitDetail.js.map +1 -1
  37. package/lib/cjs/IModelApp.js.map +1 -1
  38. package/lib/cjs/IModelConnection.js +23 -23
  39. package/lib/cjs/IModelConnection.js.map +1 -1
  40. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  41. package/lib/cjs/IModeljs-css.js +133 -133
  42. package/lib/cjs/IModeljs-css.js.map +1 -1
  43. package/lib/cjs/ImageUtil.js.map +1 -1
  44. package/lib/cjs/IpcApp.js.map +1 -1
  45. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  46. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  47. package/lib/cjs/MarginPercent.js.map +1 -1
  48. package/lib/cjs/Marker.js.map +1 -1
  49. package/lib/cjs/ModelSelectorState.js.map +1 -1
  50. package/lib/cjs/NativeApp.js.map +1 -1
  51. package/lib/cjs/NativeAppLogger.js.map +1 -1
  52. package/lib/cjs/NoRenderApp.js.map +1 -1
  53. package/lib/cjs/NotificationManager.js.map +1 -1
  54. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  55. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  56. package/lib/cjs/RealityDataSource.js.map +1 -1
  57. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  58. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  59. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  60. package/lib/cjs/SelectionSet.js.map +1 -1
  61. package/lib/cjs/SheetViewState.js.map +1 -1
  62. package/lib/cjs/SpatialViewState.js.map +1 -1
  63. package/lib/cjs/Sprites.js.map +1 -1
  64. package/lib/cjs/StandardView.js.map +1 -1
  65. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  66. package/lib/cjs/TentativePoint.js.map +1 -1
  67. package/lib/cjs/Tiles.js.map +1 -1
  68. package/lib/cjs/UserPreferences.js.map +1 -1
  69. package/lib/cjs/ViewAnimation.js.map +1 -1
  70. package/lib/cjs/ViewContext.js.map +1 -1
  71. package/lib/cjs/ViewCreator2d.js.map +1 -1
  72. package/lib/cjs/ViewCreator3d.js.map +1 -1
  73. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  74. package/lib/cjs/ViewManager.js.map +1 -1
  75. package/lib/cjs/ViewPose.js.map +1 -1
  76. package/lib/cjs/ViewRect.js.map +1 -1
  77. package/lib/cjs/ViewState.js.map +1 -1
  78. package/lib/cjs/ViewStatus.js.map +1 -1
  79. package/lib/cjs/ViewingSpace.js.map +1 -1
  80. package/lib/cjs/Viewport.js.map +1 -1
  81. package/lib/cjs/ViewportSync.js.map +1 -1
  82. package/lib/cjs/WebWorkerManager.js.map +1 -1
  83. package/lib/cjs/core-frontend.js.map +1 -1
  84. package/lib/cjs/extension/Extension.js.map +1 -1
  85. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  86. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  87. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  88. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  89. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  90. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  91. package/lib/cjs/gltf/GltfModel.js.map +1 -1
  92. package/lib/cjs/gltf/GltfParser.js.map +1 -1
  93. package/lib/cjs/gltf/GltfSchema.js.map +1 -1
  94. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  95. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  96. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  97. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  98. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  99. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  100. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  101. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  102. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  103. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  104. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  105. package/lib/cjs/render/Decorations.js.map +1 -1
  106. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  107. package/lib/cjs/render/FrameStats.js.map +1 -1
  108. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  109. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  110. package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
  111. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  112. package/lib/cjs/render/MockRender.js.map +1 -1
  113. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  114. package/lib/cjs/render/Pixel.js.map +1 -1
  115. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  116. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  117. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  118. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  119. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  120. package/lib/cjs/render/RenderMemory.js.map +1 -1
  121. package/lib/cjs/render/RenderPlan.js.map +1 -1
  122. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  123. package/lib/cjs/render/RenderSystem.js.map +1 -1
  124. package/lib/cjs/render/RenderTarget.js.map +1 -1
  125. package/lib/cjs/render/RenderTexture.js.map +1 -1
  126. package/lib/cjs/render/Scene.js.map +1 -1
  127. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  128. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  129. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  130. package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
  131. package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
  132. package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
  133. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  134. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  135. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  136. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  137. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  138. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  139. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  140. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
  141. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  142. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  143. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
  144. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  145. package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
  146. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  147. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  148. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  149. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  150. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  151. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  152. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  153. package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
  154. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  155. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  156. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  157. package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
  158. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  159. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  160. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  161. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  162. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  163. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  164. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  165. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  166. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  167. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  168. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  169. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  170. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  171. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  172. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  173. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  174. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  175. package/lib/cjs/render/webgl/GL.js.map +1 -1
  176. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  177. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  178. package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
  179. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  180. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  181. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  182. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  183. package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
  184. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  185. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  186. package/lib/cjs/render/webgl/Material.js.map +1 -1
  187. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  188. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  189. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  190. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  191. package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
  192. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  193. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  194. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  195. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  196. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  197. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  198. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  199. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  200. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  201. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  202. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  203. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  204. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  205. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  206. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  207. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  208. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  209. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  210. package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
  211. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  212. package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
  213. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  214. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  215. package/lib/cjs/render/webgl/System.js.map +1 -1
  216. package/lib/cjs/render/webgl/Target.js.map +1 -1
  217. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  218. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  219. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  220. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  221. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  222. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  223. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  224. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  225. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  226. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  227. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  228. package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
  229. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  230. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
  231. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  232. package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
  233. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  234. package/lib/cjs/render/webgl/glsl/Atmosphere.js +266 -266
  235. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  236. package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
  237. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  238. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
  239. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  240. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
  241. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  242. package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
  243. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  244. package/lib/cjs/render/webgl/glsl/Color.js +12 -12
  245. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  246. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
  247. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  248. package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
  249. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  250. package/lib/cjs/render/webgl/glsl/Common.js +16 -16
  251. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  252. package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
  253. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  254. package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
  255. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  256. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
  257. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  258. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
  259. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  260. package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
  261. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  262. package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
  263. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  264. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
  265. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  266. package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
  267. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  268. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +232 -232
  269. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  270. package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
  271. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  272. package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
  273. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  274. package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
  275. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  276. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  277. package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
  278. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  279. package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
  280. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  281. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
  282. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  283. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
  284. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  285. package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
  286. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  287. package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
  288. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  289. package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
  290. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  291. package/lib/cjs/render/webgl/glsl/RealityMesh.js +83 -83
  292. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  293. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  294. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  295. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  296. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  297. package/lib/cjs/render/webgl/glsl/SkySphere.js +49 -49
  298. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  299. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
  300. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  301. package/lib/cjs/render/webgl/glsl/Surface.js +239 -239
  302. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  303. package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
  304. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  305. package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
  306. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  307. package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
  308. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  309. package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
  310. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  311. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
  313. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  314. package/lib/cjs/render-primitives.js.map +1 -1
  315. package/lib/cjs/request/Request.js.map +1 -1
  316. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  317. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  318. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  319. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  320. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  321. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  322. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  323. package/lib/cjs/tile/GltfReader.js.map +1 -1
  324. package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
  325. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  326. package/lib/cjs/tile/IModelTile.js.map +1 -1
  327. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  328. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  329. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  330. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  331. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  332. package/lib/cjs/tile/PntsReader.js.map +1 -1
  333. package/lib/cjs/tile/RealityTile.js.map +1 -1
  334. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  335. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  336. package/lib/cjs/tile/RealityTileTree.js +1 -1
  337. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  338. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  339. package/lib/cjs/tile/Tile.js.map +1 -1
  340. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  341. package/lib/cjs/tile/TileContent.js.map +1 -1
  342. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  343. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  344. package/lib/cjs/tile/TileParams.js.map +1 -1
  345. package/lib/cjs/tile/TileRequest.js.map +1 -1
  346. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  347. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  348. package/lib/cjs/tile/TileStorage.js.map +1 -1
  349. package/lib/cjs/tile/TileTree.js.map +1 -1
  350. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  351. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  352. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  353. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  354. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  355. package/lib/cjs/tile/TileUser.js.map +1 -1
  356. package/lib/cjs/tile/TileUserSet.js.map +1 -1
  357. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  358. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  359. package/lib/cjs/tile/internal.js.map +1 -1
  360. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  361. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  362. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  363. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  364. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  365. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  366. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  367. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  368. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  369. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  370. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  371. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  372. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  373. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  374. package/lib/cjs/tile/map/ImageryTileTree.js +14 -7
  375. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  376. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  377. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  378. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  379. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  380. package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
  381. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  382. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  383. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  384. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  385. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  386. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  387. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  388. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  389. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  390. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  391. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  392. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  393. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  394. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  395. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  396. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  397. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  398. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  399. package/lib/cjs/tools/EventController.js.map +1 -1
  400. package/lib/cjs/tools/IdleTool.js.map +1 -1
  401. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  402. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  403. package/lib/cjs/tools/SelectTool.js.map +1 -1
  404. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  405. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  406. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  407. package/lib/cjs/tools/ViewTool.js.map +1 -1
  408. package/lib/cjs/webgl.js.map +1 -1
  409. package/lib/esm/AccuDraw.js.map +1 -1
  410. package/lib/esm/AccuSnap.js.map +1 -1
  411. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  412. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  413. package/lib/esm/AuxCoordSys.js.map +1 -1
  414. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  415. package/lib/esm/BingLocation.js.map +1 -1
  416. package/lib/esm/BriefcaseConnection.js.map +1 -1
  417. package/lib/esm/BriefcaseTxns.js.map +1 -1
  418. package/lib/esm/CategorySelectorState.js.map +1 -1
  419. package/lib/esm/ChangeFlags.js.map +1 -1
  420. package/lib/esm/CheckpointConnection.js.map +1 -1
  421. package/lib/esm/CoordSystem.js.map +1 -1
  422. package/lib/esm/DecorationsCache.js.map +1 -1
  423. package/lib/esm/DevTools.js.map +1 -1
  424. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  425. package/lib/esm/DisplayStyleState.js +2 -1
  426. package/lib/esm/DisplayStyleState.js.map +1 -1
  427. package/lib/esm/DrawingViewState.js +5 -5
  428. package/lib/esm/DrawingViewState.js.map +1 -1
  429. package/lib/esm/ElementLocateManager.js.map +1 -1
  430. package/lib/esm/EmphasizeElements.js.map +1 -1
  431. package/lib/esm/EntityState.js.map +1 -1
  432. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  433. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  434. package/lib/esm/FlashSettings.js.map +1 -1
  435. package/lib/esm/FrontendHubAccess.js.map +1 -1
  436. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  437. package/lib/esm/Frustum2d.js.map +1 -1
  438. package/lib/esm/FrustumAnimator.js.map +1 -1
  439. package/lib/esm/FuzzySearch.js.map +1 -1
  440. package/lib/esm/GeoServices.js.map +1 -1
  441. package/lib/esm/GlobeAnimator.js.map +1 -1
  442. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  443. package/lib/esm/HitDetail.js.map +1 -1
  444. package/lib/esm/IModelApp.js.map +1 -1
  445. package/lib/esm/IModelConnection.js +23 -23
  446. package/lib/esm/IModelConnection.js.map +1 -1
  447. package/lib/esm/IModelRoutingContext.js.map +1 -1
  448. package/lib/esm/IModeljs-css.js +133 -133
  449. package/lib/esm/IModeljs-css.js.map +1 -1
  450. package/lib/esm/ImageUtil.js.map +1 -1
  451. package/lib/esm/IpcApp.js.map +1 -1
  452. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  453. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  454. package/lib/esm/MarginPercent.js.map +1 -1
  455. package/lib/esm/Marker.js.map +1 -1
  456. package/lib/esm/ModelSelectorState.js.map +1 -1
  457. package/lib/esm/NativeApp.js.map +1 -1
  458. package/lib/esm/NativeAppLogger.js.map +1 -1
  459. package/lib/esm/NoRenderApp.js.map +1 -1
  460. package/lib/esm/NotificationManager.js.map +1 -1
  461. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  462. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  463. package/lib/esm/RealityDataSource.js.map +1 -1
  464. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  465. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  466. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  467. package/lib/esm/SelectionSet.js.map +1 -1
  468. package/lib/esm/SheetViewState.js.map +1 -1
  469. package/lib/esm/SpatialViewState.js.map +1 -1
  470. package/lib/esm/Sprites.js.map +1 -1
  471. package/lib/esm/StandardView.js.map +1 -1
  472. package/lib/esm/SubCategoriesCache.js.map +1 -1
  473. package/lib/esm/TentativePoint.js.map +1 -1
  474. package/lib/esm/Tiles.js.map +1 -1
  475. package/lib/esm/UserPreferences.js.map +1 -1
  476. package/lib/esm/ViewAnimation.js.map +1 -1
  477. package/lib/esm/ViewContext.js.map +1 -1
  478. package/lib/esm/ViewCreator2d.js.map +1 -1
  479. package/lib/esm/ViewCreator3d.js.map +1 -1
  480. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  481. package/lib/esm/ViewManager.js.map +1 -1
  482. package/lib/esm/ViewPose.js.map +1 -1
  483. package/lib/esm/ViewRect.js.map +1 -1
  484. package/lib/esm/ViewState.js.map +1 -1
  485. package/lib/esm/ViewStatus.js.map +1 -1
  486. package/lib/esm/ViewingSpace.js.map +1 -1
  487. package/lib/esm/Viewport.js.map +1 -1
  488. package/lib/esm/ViewportSync.js.map +1 -1
  489. package/lib/esm/WebWorkerManager.js.map +1 -1
  490. package/lib/esm/core-frontend.js.map +1 -1
  491. package/lib/esm/extension/Extension.js.map +1 -1
  492. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  493. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  494. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  495. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  496. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  497. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  498. package/lib/esm/gltf/GltfModel.js.map +1 -1
  499. package/lib/esm/gltf/GltfParser.js.map +1 -1
  500. package/lib/esm/gltf/GltfSchema.js.map +1 -1
  501. package/lib/esm/properties/AngleDescription.js.map +1 -1
  502. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  503. package/lib/esm/properties/LengthDescription.js.map +1 -1
  504. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  505. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  506. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  507. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  508. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  509. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  510. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  511. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  512. package/lib/esm/render/Decorations.js.map +1 -1
  513. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  514. package/lib/esm/render/FrameStats.js.map +1 -1
  515. package/lib/esm/render/GraphicBranch.js.map +1 -1
  516. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  517. package/lib/esm/render/GraphicPrimitive.js.map +1 -1
  518. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  519. package/lib/esm/render/MockRender.js.map +1 -1
  520. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  521. package/lib/esm/render/Pixel.js.map +1 -1
  522. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  523. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  524. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  525. package/lib/esm/render/RenderGraphic.js.map +1 -1
  526. package/lib/esm/render/RenderMaterial.js.map +1 -1
  527. package/lib/esm/render/RenderMemory.js.map +1 -1
  528. package/lib/esm/render/RenderPlan.js.map +1 -1
  529. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  530. package/lib/esm/render/RenderSystem.js.map +1 -1
  531. package/lib/esm/render/RenderTarget.js.map +1 -1
  532. package/lib/esm/render/RenderTexture.js.map +1 -1
  533. package/lib/esm/render/Scene.js.map +1 -1
  534. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  535. package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
  536. package/lib/esm/render/VisibleFeature.js.map +1 -1
  537. package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
  538. package/lib/esm/render/primitives/ColorMap.js.map +1 -1
  539. package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
  540. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  541. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  542. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  543. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  544. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  545. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  546. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  547. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
  548. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  549. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  550. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
  551. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  552. package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
  553. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  554. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  555. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  556. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  557. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  558. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  559. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  560. package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
  561. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  562. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  563. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  564. package/lib/esm/render/webgl/BranchStack.js.map +1 -1
  565. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  566. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  567. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  568. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  569. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  570. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  571. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  572. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  573. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  574. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  575. package/lib/esm/render/webgl/EDL.js.map +1 -1
  576. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  577. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  578. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  579. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  580. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  581. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  582. package/lib/esm/render/webgl/GL.js.map +1 -1
  583. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  584. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  585. package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
  586. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  587. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  588. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  589. package/lib/esm/render/webgl/Layer.js.map +1 -1
  590. package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
  591. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  592. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  593. package/lib/esm/render/webgl/Material.js.map +1 -1
  594. package/lib/esm/render/webgl/Matrix.js.map +1 -1
  595. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  596. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  597. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  598. package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
  599. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  600. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  601. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  602. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  603. package/lib/esm/render/webgl/PointString.js.map +1 -1
  604. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  605. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  606. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  607. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  608. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  609. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  610. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  611. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  612. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  613. package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
  614. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  615. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  616. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  617. package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
  618. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  619. package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
  620. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  621. package/lib/esm/render/webgl/Sync.js.map +1 -1
  622. package/lib/esm/render/webgl/System.js.map +1 -1
  623. package/lib/esm/render/webgl/Target.js.map +1 -1
  624. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  625. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  626. package/lib/esm/render/webgl/Technique.js.map +1 -1
  627. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  628. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  629. package/lib/esm/render/webgl/Texture.js.map +1 -1
  630. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  631. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  632. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  633. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  634. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  635. package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
  636. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  637. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
  638. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  639. package/lib/esm/render/webgl/glsl/Animation.js +83 -83
  640. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  641. package/lib/esm/render/webgl/glsl/Atmosphere.js +266 -266
  642. package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
  643. package/lib/esm/render/webgl/glsl/Blur.js +37 -37
  644. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  645. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
  646. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  647. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
  648. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  649. package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
  650. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  651. package/lib/esm/render/webgl/glsl/Color.js +12 -12
  652. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  653. package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
  654. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  655. package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
  656. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  657. package/lib/esm/render/webgl/glsl/Common.js +16 -16
  658. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  659. package/lib/esm/render/webgl/glsl/Composite.js +71 -71
  660. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  661. package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
  662. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  663. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
  664. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  665. package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
  666. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  667. package/lib/esm/render/webgl/glsl/Decode.js +65 -65
  668. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  669. package/lib/esm/render/webgl/glsl/EDL.js +103 -103
  670. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  671. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
  672. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  673. package/lib/esm/render/webgl/glsl/Edge.js +146 -146
  674. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  675. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +232 -232
  676. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  677. package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
  678. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  679. package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
  680. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  681. package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
  682. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  683. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  684. package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
  685. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  686. package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
  687. package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
  688. package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
  689. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  690. package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
  691. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  692. package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
  693. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  694. package/lib/esm/render/webgl/glsl/PointString.js +9 -9
  695. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  696. package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
  697. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  698. package/lib/esm/render/webgl/glsl/RealityMesh.js +83 -83
  699. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  700. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  701. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  702. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  703. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  704. package/lib/esm/render/webgl/glsl/SkySphere.js +49 -49
  705. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  706. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
  707. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  708. package/lib/esm/render/webgl/glsl/Surface.js +239 -239
  709. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  710. package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
  711. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  712. package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
  713. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  714. package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
  715. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  716. package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
  717. package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  719. package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
  720. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  721. package/lib/esm/render-primitives.js.map +1 -1
  722. package/lib/esm/request/Request.js.map +1 -1
  723. package/lib/esm/tile/B3dmReader.js.map +1 -1
  724. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  725. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  726. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  727. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  728. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  729. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  730. package/lib/esm/tile/GltfReader.js.map +1 -1
  731. package/lib/esm/tile/GraphicsCollector.js.map +1 -1
  732. package/lib/esm/tile/I3dmReader.js.map +1 -1
  733. package/lib/esm/tile/IModelTile.js.map +1 -1
  734. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  735. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  736. package/lib/esm/tile/ImdlReader.js.map +1 -1
  737. package/lib/esm/tile/LRUTileList.js.map +1 -1
  738. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  739. package/lib/esm/tile/PntsReader.js.map +1 -1
  740. package/lib/esm/tile/RealityTile.js.map +1 -1
  741. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  742. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  743. package/lib/esm/tile/RealityTileTree.js +1 -1
  744. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  745. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  746. package/lib/esm/tile/Tile.js.map +1 -1
  747. package/lib/esm/tile/TileAdmin.js.map +1 -1
  748. package/lib/esm/tile/TileContent.js.map +1 -1
  749. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  750. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  751. package/lib/esm/tile/TileParams.js.map +1 -1
  752. package/lib/esm/tile/TileRequest.js.map +1 -1
  753. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  754. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  755. package/lib/esm/tile/TileStorage.js.map +1 -1
  756. package/lib/esm/tile/TileTree.js.map +1 -1
  757. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  758. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  759. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  760. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  761. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  762. package/lib/esm/tile/TileUser.js.map +1 -1
  763. package/lib/esm/tile/TileUserSet.js.map +1 -1
  764. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  765. package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
  766. package/lib/esm/tile/internal.js.map +1 -1
  767. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  768. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  769. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  770. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  771. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  772. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  773. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  774. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  775. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  776. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  777. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  778. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  779. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  780. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  781. package/lib/esm/tile/map/ImageryTileTree.js +14 -7
  782. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  783. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  784. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  785. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  786. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  787. package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
  788. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  789. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  790. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  791. package/lib/esm/tile/map/MapTile.js.map +1 -1
  792. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  793. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  794. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  795. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  796. package/lib/esm/tile/map/QuadId.js.map +1 -1
  797. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  798. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  799. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  800. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  801. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  802. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  803. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  804. package/lib/esm/tools/EditManipulator.js.map +1 -1
  805. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  806. package/lib/esm/tools/EventController.js.map +1 -1
  807. package/lib/esm/tools/IdleTool.js.map +1 -1
  808. package/lib/esm/tools/MeasureTool.js.map +1 -1
  809. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  810. package/lib/esm/tools/SelectTool.js.map +1 -1
  811. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  812. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  813. package/lib/esm/tools/ToolSettings.js.map +1 -1
  814. package/lib/esm/tools/ViewTool.js.map +1 -1
  815. package/lib/esm/webgl.js.map +1 -1
  816. package/lib/public/assets/MapLayerSources.json +25 -25
  817. package/lib/public/images/cesium-ion.svg +92 -92
  818. package/lib/public/images/imodeljs-icon.svg +2 -2
  819. package/lib/public/locales/en/CoreTools.json +477 -477
  820. package/lib/public/locales/en/iModelJs.json +170 -170
  821. package/lib/public/scripts/checkbrowser.js +24 -24
  822. package/package.json +23 -22
@@ -1 +1 @@
1
- {"version":3,"file":"AccuDrawTool.js","sourceRoot":"","sources":["../../../src/tools/AccuDrawTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAoD;AACpD,wDAAwF;AACxF,0CAA+I;AAC/I,0CAAkD;AAClD,gDAAwE;AAExE,4CAAyC;AAGzC,iCAA+G;AAE/G,+BAA+B;AAE/B,SAAS,oBAAoB,CAAC,MAAe,EAAE,MAAe,EAAE,GAAa;IAC3E,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAc,EAAE,IAAc,EAAE,GAAa;IAC3E,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAa,iBAAiB;IACrB,MAAM,CAAC,iBAAiB,CAAC,SAAkB,EAAE,aAAsB;QACxE,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO,KAAK,CAAC;QAEf,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE;YACL,OAAO,KAAK,CAAC;QAEf,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAEhB,IAAI,aAAa;YACf,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;;YAE/F,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QAEjG,4CAA4C;QAC5C,MAAM,IAAI,GAAG,IAAI,wBAAQ,EAAE,CAAC;QAC5B,IAAI,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,wBAAQ,CAAC,iBAAiB;YAClF,OAAO,KAAK,CAAC;QAEf,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,uBAAY,CAAC,OAAO,KAAK,QAAQ,CAAC,YAAY;YAChD,QAAQ,CAAC,eAAe,CAAC,uBAAY,CAAC,OAAO,CAAC,CAAC;QAEjD,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,sBAAW,CAAC,KAAK,CAAC;QAClD,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;QAEtC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE1B,kGAAkG;QAClG,QAAQ,CAAC,OAAO,IAAI,uBAAY,CAAC,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,GAAwB,EAAE,EAAY,EAAE,MAAiB,EAAE,UAAmB;QAC5G,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO,KAAK,CAAC;QAEf,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,GAAG,GAAG,CAAC,IAAI,wBAAQ,EAAE,EAAE,IAAI,wBAAQ,EAAE,EAAE,IAAI,wBAAQ,EAAE,CAAC,CAAC;QAC7D,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,QAAQ,MAAM,CAAC,MAAM,EAAE;YACrB,KAAK,CAAC;gBACJ,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC7B,IAAI,CAAC,UAAU,EAAE;oBACf,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,wBAAa,CAAC,SAAS,CAAC;oBACnD,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;iBAChC;gBACD,MAAM;YAER,KAAK,CAAC;gBACJ,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE;oBAChE,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;iBACP;gBAED,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;oBAClB,IAAI,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE;wBACrE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAE1B,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE;4BAC5D,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;4BAC1B,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;yBAChD;qBACF;oBAED,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/C,GAAG,CAAC,WAAW,CAAC,wBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE7D,IAAI,CAAC,UAAU,EAAE;wBACf,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7C,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,wBAAa,CAAC,SAAS,GAAG,wBAAa,CAAC,SAAS,CAAC;wBAC7E,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC3C;oBACD,MAAM;iBACP;gBAED,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC1B,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,WAAW,CAAC,wBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM;YAER,KAAK,CAAC;gBACJ,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;oBAC9D,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;oBAC5D,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE;oBAC1D,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;iBACP;gBAED,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,WAAW,CAAC,wBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM;SACT;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,mBAAmB,KAAK,qBAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAEnE,MAAM,CAAC,iBAAiB;QAC7B,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC1B,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAED,0CAA0C;IACnC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAgB,EAAE,GAAW,EAAE,OAAgB;QACnF,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9B,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,sBAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAChF,MAAM,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SACpD;aAAM;YACL,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAW,CAAC,OAAO,CAAC,CAAC;YACpD,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7D,QAAQ,KAAK,EAAE;YACb,KAAK,oBAAS,CAAC,SAAS;gBACtB,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAS,CAAC,UAAU,CAAC,CAAC;gBACvE,MAAM;YAER,KAAK,oBAAS,CAAC,UAAU;gBACvB,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAS,CAAC,SAAS,CAAC,CAAC;gBACrE,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC;gBACnE,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC;gBAClE,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAS,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7H,MAAM;SACT;QAED,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAW,CAAC,OAAO,CAAC,CAAC;QACpD,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,KAAgB,IAAU,qBAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnH,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAgB,EAAE,GAAW;QACpE,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAW,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9B,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAElE,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACrB,IAAI,CAAC,EAAE;gBACL,OAAO;YAET,IAAI,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW;gBAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;;gBAE3B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAEnC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACxC,OAAO;SACR;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7D,QAAQ,KAAK,EAAE;YACb,KAAK,oBAAS,CAAC,SAAS;gBACtB,KAAK,GAAG,oBAAS,CAAC,UAAU,CAAC;gBAC7B,MAAM;YAER,KAAK,oBAAS,CAAC,UAAU;gBACvB,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAS,CAAC,SAAS,CAAC,CAAC;gBACxD,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,KAAK,GAAG,oBAAS,CAAC,MAAM,CAAC;gBACzB,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAS,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM;SACT;QACD,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,KAAgB;QAChD,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAChC,QAAQ,KAAK,EAAE;gBACb,KAAK,oBAAS,CAAC,SAAS;oBACtB,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACnC,MAAM;gBAER,KAAK,oBAAS,CAAC,UAAU;oBACvB,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACrB,MAAM;gBAER,KAAK,oBAAS,CAAC,MAAM;oBACnB,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC1B,QAAQ,CAAC,MAAM,IAAI,uBAAY,CAAC,IAAI,CAAC;oBACrC,MAAM;gBAER,KAAK,oBAAS,CAAC,MAAM;oBACnB,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC1B,QAAQ,CAAC,MAAM,IAAI,uBAAY,CAAC,IAAI,CAAC;oBACrC,MAAM;gBAER,KAAK,oBAAS,CAAC,MAAM;oBACnB,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC1B,MAAM;aACT;YAED,OAAO;SACR;QAED,QAAQ,KAAK,EAAE;YACb,KAAK,oBAAS,CAAC,SAAS;gBACtB,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,OAAO,CAAC;gBACzC,MAAM;YAER,KAAK,oBAAS,CAAC,UAAU;gBACvB,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,QAAQ,CAAC;gBAC1C,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC;gBACtC,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC;gBACtC,MAAM;YAER,KAAK,oBAAS,CAAC,MAAM;gBACnB,MAAM;SACT;QAED,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;QAC/B,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,QAAsB;QACzD,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAExC,IAAI,CAAC,IAAI,IAAI,CAAC,uBAAY,CAAC,KAAK,KAAK,QAAQ,IAAI,uBAAY,CAAC,IAAI,KAAK,QAAQ,CAAC;YAC9E,QAAQ,CAAC,eAAe,CAAC,uBAAY,CAAC,GAAG,CAAC,CAAC;QAE7C,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;QACvC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,mDAAmD;IAC5C,MAAM,CAAC,SAAS,CAAC,cAAwB;QAC9C,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,IAAI,cAAc,EAAE;YAClB,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAClD,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;SACvC;aAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,aAAa,EAAE;YACxD,kFAAkF;YAClF,MAAM,IAAI,GAAG,8BAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,SAAS,KAAK,IAAI,EAAE;gBACtB,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC/F,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;aACvC;iBAAM;gBACL,MAAM,EAAE,GAAG,IAAI,oBAAa,EAAE,CAAC;gBAC/B,qBAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;gBAEpD,IAAI,EAAE,CAAC,QAAQ,EAAE;oBACf,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC5C,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;iBACvC;qBAAM;oBACL,wEAAwE;oBACxE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACnD;aACF;SACF;aAAM;YACL,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;YACtC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAClD;QAED,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAEhC,0EAA0E;QAC1E,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;YACvB,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;QAEpC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,wBAAa,CAAC,SAAS,CAAC;QACpD,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,iBAAiB;QAC7B,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,uBAAY,CAAC,KAAK,CAAC;QAE1D,IAAI,cAAc,EAAE;YAClB,IAAI,sBAAW,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE;gBACpD,IAAI,cAAc,GAAG,uBAAY,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG;oBAChE,cAAc,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC;gBAEvC,IAAI,cAAc,GAAG,uBAAY,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG;oBAChE,cAAc,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC;aACxC;SACF;QAED,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,cAAc,EAAE;YAClB,IAAI,sBAAW,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE;gBACpD,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;gBAE1C,IAAI,cAAc,GAAG,uBAAY,CAAC,IAAI;oBACpC,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;qBAC3C,IAAI,cAAc,GAAG,uBAAY,CAAC,IAAI;oBACzC,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;aACjD;iBAAM;gBACL,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACnD;YACD,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC;SAClC;QACD,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC/C,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QAEpC,gDAAgD;QAChD,IAAI,QAAQ,CAAC,KAAK,EAAE;YAClB,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEjB,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;YAChC,IAAI,EAAE,EAAE;gBACN,IAAI,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW;oBAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;;oBAE3B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;aACpC;SACF;QAED,IAAI,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,EAAE;YAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,uBAAY,CAAC,QAAQ,EAAE,EAAE,2BAA2B;gBACxE,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACnD,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,QAAQ,CAAC;aAC3C;iBAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,SAAS,CAAC,EAAE,EAAE,8BAA8B;gBACrF,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAClD,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,OAAO,CAAC;aAC1C;iBAAM,IAAI,SAAS,EAAE;gBACpB,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aACjC;iBAAM,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,QAAQ,EAAE,EAAE,0BAA0B;gBAC/E,QAAQ,CAAC,SAAS,EAAE,CAAC;aACtB;iBAAM;gBACL,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/G,QAAQ,CAAC,OAAO,IAAI,uBAAY,CAAC,IAAI,CAAC;;oBAEtC,QAAQ,CAAC,OAAO,IAAI,uBAAY,CAAC,IAAI,CAAC;gBACxC,QAAQ,CAAC,SAAS,EAAE,CAAC;aACtB;YACD,QAAQ,CAAC,6BAA6B,EAAE,CAAC;YACzC,OAAO;SACR;QAED,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,oBAAoB;YACzC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,KAAK,CAAC;YACvC,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;gBAC9F,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAClD;aAAM,EAAE,uBAAuB;YAC9B,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE;gBAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,wBAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,wBAAQ,CAAC,iBAAiB,EAAE;oBACxH,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAC5B,OAAO;iBACR;aACF;YAED,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;YAChC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC3D,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;gBACvB,QAAQ,CAAC,kBAAkB,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC;gBAC9C,QAAQ,CAAC,MAAM,IAAI,uBAAY,CAAC,IAAI,CAAC;gBACrC,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC;gBACtC,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC/C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACtE;iBAAM;gBACL,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;gBACvB,QAAQ,CAAC,kBAAkB,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC;gBAC9C,QAAQ,CAAC,MAAM,IAAI,uBAAY,CAAC,IAAI,CAAC;gBACrC,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC;gBACtC,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC/C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACtE;YAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE;gBAClC,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBACrC,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,sBAAW,CAAC,MAAM,CAAC;gBACnD,QAAQ,CAAC,eAAe,CAAC,uBAAY,CAAC,OAAO,CAAC,CAAC;aAChD;SACF;QACD,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAK;QACjB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE1B,IAAI,sBAAW,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE;YACpD,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,EAAE;gBACL,OAAO;YAET,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAClC;QAED,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,CAAC,EAAE;YAC3C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,uBAAY,CAAC,IAAI,CAAC;SACxD;aAAM;YACL,QAAQ,CAAC,cAAc,CAAC,oBAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,uBAAY,CAAC,IAAI,CAAC;SACvD;QACD,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAK;QACjB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE1B,IAAI,sBAAW,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE;YACpD,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,EAAE;gBACL,OAAO;YAET,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAClC;QAED,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,CAAC,EAAE;YAC3C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,uBAAY,CAAC,IAAI,CAAC;SACxD;aAAM;YACL,QAAQ,CAAC,cAAc,CAAC,oBAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,uBAAY,CAAC,IAAI,CAAC;SACvD;QACD,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAK;QACjB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;YACxB,OAAO;QAET,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE5C,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,CAAC,EAAE;YAC3C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAChD;aAAM;YACL,2BAA2B;YAC3B,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,eAAe,EAAE;gBAC1C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC;gBACxC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;aAC/B;YACD,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SAC/C;QACD,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,YAAY;QACxB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE5C,IAAI,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,EAAE;YAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,EAAE;gBACL,OAAO;YAET,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC3B,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAClC;QAED,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,SAAS,CAAC,EAAE;YAC9C,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAClD,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAY,CAAC,OAAO,CAAC;YAEzC,QAAQ,CAAC,cAAc,CAAC,oBAAS,CAAC,SAAS,EAAE,sBAAW,CAAC,OAAO,CAAC,CAAC,CAAC,qGAAqG;SACzK;aAAM;YACL,kCAAkC;YAClC,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,eAAe;gBACxC,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,SAAS,CAAC,CAAC;YAC7C,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACnC;QACD,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QACT,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;QAChD,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,SAAS;QACd,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;YAC9B,IAAI,QAAQ,CAAC,MAAM;gBACjB,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAEhC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;SACpC;aAAM;YACL,IAAI,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,EAAE;gBAC9C,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,KAAK,EAAE;oBACzC,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAClD,QAAQ,CAAC,SAAS,EAAE,CAAC;iBACtB;gBAED,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,OAAO;oBACzC,iBAAiB,CAAC,YAAY,EAAE,CAAC;aACpC;iBAAM;gBACL,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,IAAI,EAAE;oBACxC,iBAAiB,CAAC,KAAK,EAAE,CAAC;oBAE1B,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,OAAO;wBACzC,iBAAiB,CAAC,KAAK,EAAE,CAAC;iBAC7B;gBAED,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,IAAI,EAAE;oBACxC,iBAAiB,CAAC,KAAK,EAAE,CAAC;oBAE1B,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,OAAO;wBACzC,iBAAiB,CAAC,KAAK,EAAE,CAAC;iBAC7B;gBAED,IAAI,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,uBAAY,CAAC,KAAK,CAAC,EAAE;oBACvF,IAAI,QAAQ,CAAC,MAAM,GAAG,uBAAY,CAAC,IAAI;wBACrC,iBAAiB,CAAC,KAAK,EAAE,CAAC;;wBAE1B,iBAAiB,CAAC,KAAK,EAAE,CAAC;iBAC7B;aACF;YAED,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;SACnC;QAED,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,QAAsB;QACtD,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,IAAI,uBAAY,CAAC,OAAO,KAAK,QAAQ,EAAE;YACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC3E,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,QAAQ,CAAC,6BAA6B,EAAE,CAAC;YACzC,OAAO;SACR;aAAM;YACL,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;YACvC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;SACpC;QACD,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE;YACL,OAAO;QAET,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC;YACrC,OAAO;QAET,MAAM,YAAY,GAAG,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,yBAAS,CAAC,yBAAyB,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,CAAC;QACpG,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;QACnC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAErC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACrC,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,oBAAoB,EAAE,CAAC;QAE1B,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,YAAY,KAAW,IAAI,CAAC,mBAAmB,CAAC,qBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAEhG,MAAM,CAAC,WAAW;QACvB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QACT,sEAAsE;QACtE,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,GAAG,CAAC;QACnD,IAAI,CAAC,mBAAmB,CAAC,uBAAY,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;YACxB,OAAO;QAET,IAAI,QAAsB,CAAC;QAC3B,QAAQ,QAAQ,CAAC,YAAY,EAAE;YAC7B,KAAK,uBAAY,CAAC,IAAI,CAAC;YACvB,KAAK,uBAAY,CAAC,IAAI;gBACpB,QAAQ,GAAG,uBAAY,CAAC,GAAG,CAAC;gBAC5B,MAAM;YAER,KAAK,uBAAY,CAAC,GAAG;gBACnB,QAAQ,GAAG,uBAAY,CAAC,KAAK,CAAC;gBAC9B,MAAM;YAER,KAAK,uBAAY,CAAC,KAAK;gBACrB,QAAQ,GAAG,uBAAY,CAAC,IAAI,CAAC;gBAC7B,MAAM;YAER,KAAK,uBAAY,CAAC,OAAO;gBACvB,QAAQ,GAAG,uBAAY,CAAC,OAAO,CAAC;gBAEhC,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;oBAC5C,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACzC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,GAAG,CAAC;oBACnD,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;iBACxC;qBAAM;oBACL,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACvC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAC3E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC7B,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;iBAC7C;gBAED,QAAQ,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE;oBACvC,KAAK,uBAAY,CAAC,KAAK;wBACrB,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,IAAI,CAAC;wBACpD,MAAM;oBAER,KAAK,uBAAY,CAAC,IAAI;wBACpB,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,GAAG,CAAC;wBACnD,MAAM;oBAER,KAAK,uBAAY,CAAC,GAAG;wBACnB,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,KAAK,CAAC;wBACrD,MAAM;iBACT;gBACD,MAAM;YAER,KAAK,uBAAY,CAAC,GAAG;gBACnB,QAAQ,GAAG,uBAAY,CAAC,GAAG,CAAC;gBAC5B,QAAQ,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE;oBACvC,KAAK,uBAAY,CAAC,KAAK;wBACrB,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,IAAI,CAAC;wBACpD,MAAM;oBACR,KAAK,uBAAY,CAAC,IAAI;wBACpB,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,GAAG,CAAC;wBACnD,MAAM;oBACR,KAAK,uBAAY,CAAC,GAAG;wBACnB,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,KAAK,CAAC;wBACrD,MAAM;iBACT;gBACD,MAAM;YAER;gBACE,OAAO;SACV;QAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAY;QACjC,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO;QAET,MAAM,WAAW,GAAG,IAAI,oBAAS,EAAE,CAAC;QAEpC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;QACvC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAE3B,QAAQ,IAAI,EAAE;YACZ,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAM;YAER,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAM;YAER,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAM;SACT;QAED,QAAQ,CAAC,kBAAkB,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClE,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAsB;QACnD,OAAO,qBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,eAAe;QACjC,OAAO,qBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB;QACpC,OAAO,qBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACnC,OAAO,qBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAA2B,EAAE,SAAkB,EAAE,WAAoB;QACxF,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO,4BAAa,CAAC,KAAK,CAAC;QAE7B,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE;YACL,OAAO,4BAAa,CAAC,KAAK,CAAC;QAE7B,IAAI,YAAY,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,oBAAS,EAAE,CAAC;QAE7B,IAAI,CAAC,WAAW,EAAE;YAChB,qFAAqF;YACrF,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;YACrC,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,IAAI,OAAO,IAAI,EAAE,KAAK,OAAO,EAAE;YAC7B,yCAAyC;YACzC,4GAA4G;YAC5G,wGAAwG;YAExG,0BAA0B;YAC1B,oBAAoB;YAEpB,4GAA4G;YAE5G,2BAA2B;YAC3B,oBAAoB;YAEpB,qEAAqE;YAErE,2BAA2B;YAC3B,oBAAoB;YAEpB,kFAAkF;YAElF,oBAAoB;YACpB,+CAA+C;YAE/C,sBAAsB;YACtB,mDAAmD;YAEnD,0DAA0D;SAC3D;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC;QAErD,IAAI,SAAS,EAAE;YACb,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;YAChD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC3C;QAED,IAAI,WAAW,EAAE;YACf,QAAQ,CAAC,KAAK,CAAC,gBAAgB,GAAG,uBAAY,CAAC,GAAG,CAAC;YACnD,IAAI,CAAC,mBAAmB,CAAC,uBAAY,CAAC,GAAG,CAAC,CAAC;SAC5C;aAAM;YACL,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE1B,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACvC,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,gBAAgB,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,uBAAY,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;gBACpD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;gBAE/B,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACvC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAEzB,mBAAQ,CAAC,yBAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aAC7C;YAED,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,wBAAa,CAAC,SAAS,CAAC;SACtD;QAED,OAAO,4BAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,QAAgB;QACrC,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS;YACrB,OAAO,4BAAa,CAAC,KAAK,CAAC;QAE7B,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,EAAE;YACL,OAAO,4BAAa,CAAC,KAAK,CAAC;QAE7B,kCAAkC;QAClC,0CAA0C;QAC1C,8GAA8G;QAC9G,+BAA+B;QAC/B,kCAAkC;QAClC,sHAAsH;QACtH,qIAAqI;QACrI,gCAAgC;QAEhC,uCAAuC;QACvC,wBAAwB;QACxB,gCAAgC;QAEhC,yCAAyC;QACzC,gCAAgC;QAChC,IAAI;QAEJ,wDAAwD;QAExD,kDAAkD;QAClD,8CAA8C;QAE9C,OAAO,4BAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,kBAAkB;QAC9B,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,QAAQ,CAAC,SAAS;YACpB,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,8CAA8C;IACvC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAuB;QAC5D,QAAQ,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;YAClC,KAAK,OAAO;gBACV,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,YAAY,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,GAAG,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,KAAK,CAAC,CAAC;gBAC1D,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,IAAI,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,IAAI,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,iBAAiB,CAAC,WAAW,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,OAAO,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,GAAG;gBACN,OAAO,iBAAiB,CAAC,eAAe,EAAE,CAAC;YAC7C,KAAK,GAAG;gBACN,OAAO,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;SAChD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA38BD,8CA28BC;AAED,gBAAgB;AAChB,MAAa,qBAAsB,SAAQ,WAAI;IAE7B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,4BAAM,GAAG,oBAAoB,CAAC;AAD1C,sDAAqB;AAQlC,gBAAgB;AAChB,MAAa,wBAAyB,SAAQ,WAAI;IAEhC,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,+BAAM,GAAG,oBAAoB,CAAC;AAD1C,4DAAwB;AAQrC,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,WAAI;IAE5B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,2BAAM,GAAG,gBAAgB,CAAC;AADtC,oDAAoB;AAQjC,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,WAAI;IAE5B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,2BAAM,GAAG,gBAAgB,CAAC;AADtC,oDAAoB;AAQjC,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,WAAI;IAE5B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,2BAAM,GAAG,gBAAgB,CAAC;AADtC,oDAAoB;AAQjC,gBAAgB;AAChB,MAAa,2BAA4B,SAAQ,WAAI;IAEnC,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,kCAAM,GAAG,uBAAuB,CAAC;AAD7C,kEAA2B;AAQxC,gBAAgB;AAChB,MAAa,wBAAyB,SAAQ,WAAI;IAEhC,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,+BAAM,GAAG,oBAAoB,CAAC;AAD1C,4DAAwB;AAQrC,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,WAAI;IAE9B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,6BAAM,GAAG,qBAAqB,CAAC;AAD3C,wDAAsB;AAQnC,gBAAgB;AAChB,MAAa,uBAAwB,SAAQ,WAAI;IAE/B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,8BAAM,GAAG,sBAAsB,CAAC;AAD5C,0DAAuB;AAQpC,gBAAgB;AAChB,MAAa,qBAAsB,SAAQ,WAAI;IAE7B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,GAAG,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,4BAAM,GAAG,oBAAoB,CAAC;AAD1C,sDAAqB;AAQlC,gBAAgB;AAChB,MAAa,uBAAwB,SAAQ,WAAI;IAE/B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,8BAAM,GAAG,sBAAsB,CAAC;AAD5C,0DAAuB;AAQpC,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,WAAI;IAE9B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,6BAAM,GAAG,qBAAqB,CAAC;AAD3C,wDAAsB;AAQnC,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,WAAI;IAE9B,KAAK,CAAC,GAAG;QACvB,iBAAiB,CAAC,mBAAmB,CAAC,uBAAY,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;;AAJsB,6BAAM,GAAG,qBAAqB,CAAC;AAD3C,wDAAsB;AAQnC,gBAAgB;AAChB,MAAe,qBAAsB,SAAQ,qBAAc;IAEzD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEe,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,8BAAuB,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC,CAAC,+EAA+E;IAEjE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;SACvB;QAED,OAAO,mBAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB,IAAmB,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxF,KAAK,CAAC,QAAQ;QAC5B,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;IACxC,CAAC,CAAC,oDAAoD;IAE/C,uBAAuB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAC1C,mBAAmB;QACxB,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,qBAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAEhC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAEM,kBAAkB,CAAC,MAAe;QACvC,IAAI,CAAC,MAAM;YACT,qBAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC5F,CAAC;IAEM,sBAAsB,KAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;CAE7D;AAED,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,qBAAqB;IAExD,MAAM,KAAc,OAAO,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IAE1D,YAA0B,gBAAyB,IAAI;QAAI,KAAK,EAAE,CAAC;QAAzC,kBAAa,GAAb,aAAa,CAAgB;QAD7C,mBAAc,GAAY,KAAK,CAAC;IAC0B,CAAC;IAErD,KAAK,CAAC,SAAS;QAC7B,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACpB,OAAO,KAAK,CAAC,CAAC,4DAA4D;QAE5E,IAAI,IAAI,CAAC,aAAa;YACpB,QAAQ,CAAC,sBAAsB,CAAC,uBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,oGAAoG;QAE7J,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,qBAAS,CAAC,QAAQ,CAAC,KAAK;YACvD,CAAC,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,UAAU,CAAC,CAAC;YAC3F,CAAC,sBAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,EAAE;YACpI,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;gBACjE,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;gBACvC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;gBACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC5B;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,KAAK,CAAC,aAAa;QACjC,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO;SACR;QACD,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAEe,sBAAsB,KAAoB,OAAO,wBAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,mBAAmB;QACjC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,gBAAS,CAAC,iBAAiB,CAAC,wCAAwC,CAAC,CAAC;IACxE,CAAC;IAEM,cAAc,CAAC,EAA6B,EAAE,QAAiB;QACpE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,EAAE;YACL,OAAO,IAAI,CAAC;QACd,iBAAiB,CAAC,iBAAiB,CAAC,8BAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACnF,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ;YACX,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,GAAG,IAAW;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,WAAW;gBACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;;AAxDsB,6BAAM,GAAG,qBAAqB,AAAxB,CAAyB;AAD3C,wDAAsB;AA4DnC,gBAAgB;AAChB,MAAa,yBAA0B,SAAQ,qBAAqB;IAApE;;QAES,eAAU,GAAY,CAAC,qBAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,kEAAkE;IAwC/H,CAAC;IAvCiB,KAAK,CAAC,SAAS,KAAuB,OAAO,qBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oDAAoD;IAEjI,sBAAsB;QACpC,IAAI,WAAW,GAAG,wBAAa,CAAC,UAAU,GAAG,wBAAa,CAAC,OAAO,CAAC,CAAC,0HAA0H;QAC9L,IAAI,IAAI,CAAC,UAAU;YACjB,WAAW,IAAI,wBAAa,CAAC,SAAS,CAAC;QACzC,OAAO,WAAW,CAAC;IACrB,CAAC;IAEe,mBAAmB;QACjC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,gBAAS,CAAC,iBAAiB,CAAC,2CAA2C,CAAC,CAAC;IAC3E,CAAC;IAEM,iBAAiB,CAAC,IAAgB,EAAE,EAAY;QACrD,MAAM,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;QACpC,MAAM,OAAO,GAAG,mBAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO,KAAK,CAAC;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClE,QAAQ,CAAC,UAAU,CAAC,wBAAa,CAAC,eAAe,GAAG,wBAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,cAAc,CAAC,EAA6B,EAAE,QAAiB;QACpE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,EAAE;YACL,OAAO,IAAI,CAAC;QAEd,MAAM,UAAU,GAAG,8BAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,SAAS,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QAEd,IAAI,SAAS,KAAK,EAAE;YAClB,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ;YACX,qBAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,uBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,qEAAqE;QACxI,OAAO,IAAI,CAAC;IACd,CAAC;;AAxCsB,gCAAM,GAAG,wBAAwB,AAA3B,CAA4B;AAD9C,8DAAyB;AA4CtC,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,qBAAqB;IAAjE;;QAEU,YAAO,GAAG,uBAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,aAAQ,GAAG,wBAAQ,CAAC,cAAc,EAAE,CAAC;IAiD/C,CAAC;IA9CiB,uBAAuB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,sBAAsB,KAAoB,OAAO,wBAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5E,mBAAmB;QACjC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,gBAAS,CAAC,iBAAiB,CAAC,gDAAgD,CAAC,CAAC;IAChF,CAAC;IAEM,iBAAiB,CAAC,IAAgB,EAAE,EAAY;QACrD,MAAM,OAAO,GAAG,mBAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,cAAc,CAAC,EAA6B,EAAE,QAAiB;QACpE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,EAAE;YACL,OAAO,IAAI,CAAC;QAEd,MAAM,UAAU,GAAG,8BAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,SAAS,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;QACtD,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC;QAEd,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,mBAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,+BAAiB,CAAC,MAAM,GAAG,+BAAiB,CAAC,QAAQ,CAAC,CAAC;IACpF,CAAC;;AAlDsB,6BAAM,GAAG,6BAA6B,AAAhC,CAAiC;AADnD,wDAAsB;AAsDnC,gBAAgB;AAChB,MAAa,qBAAsB,SAAQ,qBAAqB;IAAhE;;QAEmB,YAAO,GAAc,EAAE,CAAC;IA6D3C,CAAC;IA1DiB,uBAAuB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,sBAAsB,KAAoB,OAAO,wBAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5E,mBAAmB;QACjC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,qBAAS,CAAC,cAAc,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAC5B,gBAAS,CAAC,iBAAiB,CAAC,+CAA+C,CAAC,CAAC;YAC7E,OAAO;SACR;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;QACjD,gBAAS,CAAC,iBAAiB,CAAC,gDAAgD,CAAC,CAAC;QAC9E,qBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,wBAAa,CAAC,SAAS,GAAG,wBAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,cAAc,CAAC,EAA6B,EAAE,QAAiB;QACpE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ;YACrB,OAAO,IAAI,CAAC;QAEd,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;QACtD,IAAI,QAAQ;YACV,OAAO,KAAK,CAAC;QAEf,qBAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAEpC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QAExD,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC3E,mBAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClD,iBAAiB,CAAC,WAAW,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;SACb;QAED,gBAAS,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAC9H,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjD,MAAM,EAAE,GAAG,IAAI,oBAAa,EAAE,CAAC;QAC/B,qBAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;QACpD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QAExD,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,+BAAiB,CAAC,MAAM,GAAG,+BAAiB,CAAC,QAAQ,CAAC,CAAC;IACpF,CAAC;;AA7DsB,4BAAM,GAAG,4BAA4B,AAA/B,CAAgC;AADlD,sDAAqB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { Geometry, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { AccuDraw, AccuDrawFlags, CompassMode, ContextMode, ItemField, KeyinStatus, LockedStates, RotationMode, ThreeAxes } from \"../AccuDraw\";\r\nimport { TentativeOrAccuSnap } from \"../AccuSnap\";\r\nimport { ACSDisplayOptions, AuxCoordSystemState } from \"../AuxCoordSys\";\r\nimport { SnapDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { DecorateContext } from \"../ViewContext\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { BeButtonEvent, CoordinateLockOverrides, CoreTools, EventHandled, InputCollector, Tool } from \"./Tool\";\r\n\r\n// cSpell:ignore dont unlockedz\r\n\r\nfunction normalizedDifference(point1: Point3d, point2: Point3d, out: Vector3d): number {\r\n return point2.vectorTo(point1).normalizeWithLength(out).mag;\r\n}\r\n\r\nfunction normalizedCrossProduct(vec1: Vector3d, vec2: Vector3d, out: Vector3d): number {\r\n return vec1.crossProduct(vec2, out).normalizeWithLength(out).mag;\r\n}\r\n\r\n/**\r\n * A shortcut may require no user input (immediate) or it may install a tool to collect the needed input. AccuDrawShortcuts are how users control AccuDraw.\r\n * A tool implementor should not use this class to setup AccuDraw, instead use AccuDrawHintBuilder to provide hints.\r\n * @alpha\r\n */\r\nexport class AccuDrawShortcuts {\r\n public static rotateAxesByPoint(isSnapped: boolean, aboutCurrentZ: boolean): boolean {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return false;\r\n\r\n const vp = accudraw.currentView;\r\n if (!vp)\r\n return false;\r\n\r\n const point = accudraw.point;\r\n if (!vp.view.is3d())\r\n point.z = 0.0;\r\n\r\n if (aboutCurrentZ)\r\n accudraw.hardConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\r\n else\r\n accudraw.softConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\r\n\r\n // Snap point and compass origin coincide...\r\n const xVec = new Vector3d();\r\n if (normalizedDifference(point, accudraw.planePt, xVec) < Geometry.smallAngleRadians)\r\n return false;\r\n\r\n accudraw.axes.x.setFrom(xVec);\r\n\r\n if (RotationMode.Context !== accudraw.rotationMode)\r\n accudraw.setRotationMode(RotationMode.Context);\r\n\r\n accudraw.flags.contextRotMode = ContextMode.XAxis;\r\n accudraw.flags.lockedRotation = false;\r\n\r\n accudraw.updateRotation();\r\n\r\n // Always want index line to display for x-Axis...changing rotation clears this...so it flashes...\r\n accudraw.indexed |= LockedStates.X_BM;\r\n return true;\r\n }\r\n\r\n public static updateACSByPoints(acs: AuxCoordSystemState, vp: Viewport, points: Point3d[], isDynamics: boolean): boolean {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return false;\r\n\r\n let accept = false;\r\n const vec = [new Vector3d(), new Vector3d(), new Vector3d()];\r\n acs.setOrigin(points[0]);\r\n switch (points.length) {\r\n case 1:\r\n acs.setRotation(vp.rotation);\r\n if (!isDynamics) {\r\n accudraw.published.origin.setFrom(points[0]);\r\n accudraw.published.flags = AccuDrawFlags.SetOrigin;\r\n accudraw.flags.fixedOrg = true;\r\n }\r\n break;\r\n\r\n case 2:\r\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001) {\r\n accept = true;\r\n break;\r\n }\r\n\r\n if (vp.view.is3d()) {\r\n if (normalizedCrossProduct(accudraw.axes.y, vec[0], vec[1]) < 0.00001) {\r\n vec[2].set(0.0, 0.0, 1.0);\r\n\r\n if (normalizedCrossProduct(vec[2], vec[0], vec[1]) < 0.00001) {\r\n vec[2].set(0.0, 1.0, 0.0);\r\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\r\n }\r\n }\r\n\r\n normalizedCrossProduct(vec[0], vec[1], vec[2]);\r\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\r\n\r\n if (!isDynamics) {\r\n accudraw.published.origin.setFrom(points[0]);\r\n accudraw.published.flags = AccuDrawFlags.SetOrigin | AccuDrawFlags.SetNormal;\r\n accudraw.published.vector.setFrom(vec[0]);\r\n }\r\n break;\r\n }\r\n\r\n vec[2].set(0.0, 0.0, 1.0);\r\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\r\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\r\n accept = true;\r\n break;\r\n\r\n case 3:\r\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001 ||\r\n normalizedDifference(points[2], points[0], vec[1]) < 0.00001 ||\r\n normalizedCrossProduct(vec[0], vec[1], vec[2]) < 0.00001) {\r\n accept = true;\r\n break;\r\n }\r\n\r\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\r\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\r\n accept = true;\r\n break;\r\n }\r\n\r\n return accept;\r\n }\r\n\r\n public static processPendingHints() { IModelApp.accuDraw.processHints(); }\r\n\r\n public static requestInputFocus() {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n accudraw.grabInputFocus();\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n // Helper method for GUI implementation...\r\n public static async itemFieldNavigate(index: ItemField, str: string, forward: boolean): Promise<void> {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n if (accudraw.getFieldLock(index))\r\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\r\n\r\n if (!accudraw.isActive && KeyinStatus.Partial === accudraw.getKeyinStatus(index)) {\r\n await accudraw.processFieldInput(index, str, true);\r\n } else {\r\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\r\n accudraw.onFieldValueChange(index);\r\n }\r\n\r\n const vp = accudraw.currentView;\r\n const is3d = vp ? vp.view.is3d() : false;\r\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.ANGLE_Item);\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.DIST_Item);\r\n break;\r\n\r\n case ItemField.X_Item:\r\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.Y_Item);\r\n break;\r\n\r\n case ItemField.Y_Item:\r\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.X_Item);\r\n break;\r\n\r\n case ItemField.Z_Item:\r\n index = (forward ? (isPolar ? ItemField.DIST_Item : ItemField.X_Item) : (isPolar ? ItemField.ANGLE_Item : ItemField.Y_Item));\r\n break;\r\n }\r\n\r\n accudraw.setKeyinStatus(index, KeyinStatus.Partial);\r\n accudraw.setFocusItem(index);\r\n accudraw.dontMoveFocus = true;\r\n }\r\n\r\n public static itemFieldNewInput(index: ItemField): void { IModelApp.accuDraw.setKeyinStatus(index, KeyinStatus.Partial); }\r\n\r\n public static async itemFieldAcceptInput(index: ItemField, str: string): Promise<void> {\r\n const accudraw = IModelApp.accuDraw;\r\n await accudraw.processFieldInput(index, str, true);\r\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\r\n\r\n if (accudraw.getFieldLock(index))\r\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\r\n\r\n const vp = accudraw.currentView;\r\n if (accudraw.isActive) {\r\n if (!vp)\r\n return;\r\n\r\n if (CompassMode.Polar === accudraw.compassMode)\r\n accudraw.fixPointPolar(vp);\r\n else\r\n accudraw.fixPointRectangular(vp);\r\n\r\n accudraw.flags.dialogNeedsUpdate = true;\r\n return;\r\n }\r\n\r\n const is3d = vp ? vp.view.is3d() : false;\r\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n index = ItemField.ANGLE_Item;\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n index = (is3d ? ItemField.Z_Item : ItemField.DIST_Item);\r\n break;\r\n\r\n case ItemField.X_Item:\r\n index = ItemField.Y_Item;\r\n break;\r\n\r\n case ItemField.Y_Item:\r\n index = (is3d ? ItemField.Z_Item : ItemField.X_Item);\r\n break;\r\n\r\n case ItemField.Z_Item:\r\n index = (isPolar ? ItemField.DIST_Item : ItemField.X_Item);\r\n break;\r\n }\r\n accudraw.setFocusItem(index);\r\n }\r\n\r\n public static itemFieldLockToggle(index: ItemField): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n if (accudraw.getFieldLock(index)) {\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n accudraw.distanceLock(true, false);\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n accudraw.angleLock();\r\n break;\r\n\r\n case ItemField.X_Item:\r\n accudraw.clearTentative();\r\n accudraw.locked |= LockedStates.X_BM;\r\n break;\r\n\r\n case ItemField.Y_Item:\r\n accudraw.clearTentative();\r\n accudraw.locked |= LockedStates.Y_BM;\r\n break;\r\n\r\n case ItemField.Z_Item:\r\n accudraw.clearTentative();\r\n break;\r\n }\r\n\r\n return;\r\n }\r\n\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n accudraw.locked &= ~LockedStates.DIST_BM;\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n accudraw.locked &= ~LockedStates.ANGLE_BM;\r\n break;\r\n\r\n case ItemField.X_Item:\r\n accudraw.locked &= ~LockedStates.X_BM;\r\n break;\r\n\r\n case ItemField.Y_Item:\r\n accudraw.locked &= ~LockedStates.Y_BM;\r\n break;\r\n\r\n case ItemField.Z_Item:\r\n break;\r\n }\r\n\r\n accudraw.dontMoveFocus = false;\r\n accudraw.clearTentative();\r\n }\r\n\r\n public static itemRotationModeChange(rotation: RotationMode): void {\r\n const accudraw = IModelApp.accuDraw;\r\n const vp = accudraw.currentView;\r\n const is3d = vp ? vp.view.is3d() : true;\r\n\r\n if (!is3d && (RotationMode.Front === rotation || RotationMode.Side === rotation))\r\n accudraw.setRotationMode(RotationMode.Top);\r\n\r\n accudraw.flags.baseRotation = rotation;\r\n accudraw.updateRotation(true);\r\n }\r\n\r\n // Shortcut implementations for GUI entry points...\r\n public static setOrigin(explicitOrigin?: Point3d): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n if (explicitOrigin) {\r\n accudraw.published.origin.setFrom(explicitOrigin);\r\n accudraw.flags.haveValidOrigin = true;\r\n } else if (accudraw.isInactive || accudraw.isDeactivated) {\r\n // If AccuSnap is active use adjusted snap point, otherwise use last data point...\r\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\r\n if (undefined !== snap) {\r\n accudraw.published.origin.setFrom(snap.isPointAdjusted ? snap.adjustedPoint : snap.getPoint());\r\n accudraw.flags.haveValidOrigin = true;\r\n } else {\r\n const ev = new BeButtonEvent();\r\n IModelApp.toolAdmin.fillEventFromLastDataButton(ev);\r\n\r\n if (ev.viewport) {\r\n accudraw.published.origin.setFrom(ev.point);\r\n accudraw.flags.haveValidOrigin = true;\r\n } else {\r\n // NOTE: If current point isn't valid setDefaultOrigin will be called...\r\n accudraw.published.origin.setFrom(accudraw.point);\r\n }\r\n }\r\n } else {\r\n accudraw.published.origin.setFrom(accudraw.point);\r\n accudraw.flags.haveValidOrigin = true;\r\n accudraw.setLastPoint(accudraw.published.origin);\r\n }\r\n\r\n accudraw.clearTentative();\r\n const vp = accudraw.currentView;\r\n\r\n // NOTE: _AdjustPoint should have been called to have setup currentView...\r\n if (vp && !vp.view.is3d())\r\n accudraw.published.origin.z = 0.0;\r\n\r\n accudraw.origin.setFrom(accudraw.published.origin);\r\n accudraw.point.setFrom(accudraw.published.origin);\r\n accudraw.planePt.setFrom(accudraw.published.origin);\r\n accudraw.published.flags |= AccuDrawFlags.SetOrigin;\r\n accudraw.activate();\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static changeCompassMode(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n let axisLockStatus = accudraw.locked & LockedStates.XY_BM;\r\n\r\n if (axisLockStatus) {\r\n if (CompassMode.Rectangular === accudraw.compassMode) {\r\n if (axisLockStatus & LockedStates.X_BM && accudraw.delta.x !== 0.0)\r\n axisLockStatus &= ~LockedStates.X_BM;\r\n\r\n if (axisLockStatus & LockedStates.Y_BM && accudraw.delta.y !== 0.0)\r\n axisLockStatus &= ~LockedStates.Y_BM;\r\n }\r\n }\r\n\r\n accudraw.changeCompassMode(true);\r\n if (axisLockStatus) {\r\n if (CompassMode.Rectangular === accudraw.compassMode) {\r\n accudraw.delta.x = accudraw.delta.y = 0.0;\r\n\r\n if (axisLockStatus & LockedStates.X_BM)\r\n accudraw.setFieldLock(ItemField.X_Item, true);\r\n else if (axisLockStatus & LockedStates.Y_BM)\r\n accudraw.setFieldLock(ItemField.Y_Item, true);\r\n } else {\r\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\r\n }\r\n accudraw.locked = axisLockStatus;\r\n }\r\n accudraw.flags.baseMode = accudraw.compassMode;\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static lockSmart(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n const accuSnap = IModelApp.accuSnap;\r\n\r\n // Don't want AccuSnap to influence axis or Z...\r\n if (accuSnap.isHot) {\r\n accuSnap.clear();\r\n\r\n const vp = accudraw.currentView;\r\n if (vp) {\r\n if (CompassMode.Polar === accudraw.compassMode)\r\n accudraw.fixPointPolar(vp);\r\n else\r\n accudraw.fixPointRectangular(vp);\r\n }\r\n }\r\n\r\n if (CompassMode.Polar === accudraw.compassMode) {\r\n const isSnapped = accudraw.clearTentative();\r\n if (accudraw.locked & LockedStates.ANGLE_BM) { // angle locked (unlock it)\r\n accudraw.setFieldLock(ItemField.ANGLE_Item, false);\r\n accudraw.locked &= ~LockedStates.ANGLE_BM;\r\n } else if (accudraw.getFieldLock(ItemField.DIST_Item)) { // distance locked (unlock it)\r\n accudraw.setFieldLock(ItemField.DIST_Item, false);\r\n accudraw.locked &= ~LockedStates.DIST_BM;\r\n } else if (isSnapped) {\r\n accudraw.doLockAngle(isSnapped);\r\n } else if (accudraw.indexed & LockedStates.ANGLE_BM) { // angle indexed (lock it)\r\n accudraw.angleLock();\r\n } else {\r\n if (Math.abs(accudraw.vector.dotProduct(accudraw.axes.x)) > Math.abs(accudraw.vector.dotProduct(accudraw.axes.y)))\r\n accudraw.indexed |= LockedStates.Y_BM;\r\n else\r\n accudraw.indexed |= LockedStates.X_BM;\r\n accudraw.angleLock();\r\n }\r\n accudraw.refreshDecorationsAndDynamics();\r\n return;\r\n }\r\n\r\n if (accudraw.locked) { // if locked, unlock\r\n accudraw.clearTentative();\r\n accudraw.locked &= ~LockedStates.XY_BM;\r\n accudraw.setFieldLock(ItemField.X_Item, false);\r\n accudraw.setFieldLock(ItemField.Y_Item, false);\r\n if (accudraw.getFieldLock(ItemField.Z_Item) && accudraw.delta.z === 0.0 && !accudraw.stickyZLock)\r\n accudraw.setFieldLock(ItemField.Z_Item, false);\r\n } else { // lock to nearest axis\r\n if (accudraw.clearTentative()) {\r\n if (Math.abs(accudraw.delta.x) >= Geometry.smallAngleRadians && Math.abs(accudraw.delta.y) >= Geometry.smallAngleRadians) {\r\n accudraw.doLockAngle(false);\r\n return;\r\n }\r\n }\r\n\r\n const vp = accudraw.currentView;\r\n if (Math.abs(accudraw.delta.x) > Math.abs(accudraw.delta.y)) {\r\n accudraw.delta.y = 0.0;\r\n accudraw.onFieldValueChange(ItemField.Y_Item);\r\n accudraw.locked |= LockedStates.Y_BM;\r\n accudraw.locked &= ~LockedStates.X_BM;\r\n accudraw.setFieldLock(ItemField.X_Item, false);\r\n accudraw.setFieldLock(ItemField.Y_Item, true);\r\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\r\n } else {\r\n accudraw.delta.x = 0.0;\r\n accudraw.onFieldValueChange(ItemField.X_Item);\r\n accudraw.locked |= LockedStates.X_BM;\r\n accudraw.locked &= ~LockedStates.Y_BM;\r\n accudraw.setFieldLock(ItemField.Y_Item, false);\r\n accudraw.setFieldLock(ItemField.X_Item, true);\r\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\r\n }\r\n\r\n if (!accudraw.flags.lockedRotation) {\r\n accudraw.flags.lockedRotation = true;\r\n accudraw.flags.contextRotMode = ContextMode.Locked;\r\n accudraw.setRotationMode(RotationMode.Context);\r\n }\r\n }\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static lockX(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n accudraw.clearTentative();\r\n\r\n if (CompassMode.Rectangular !== accudraw.compassMode) {\r\n const vp = accudraw.currentView;\r\n if (!vp)\r\n return;\r\n\r\n accudraw.fixPointRectangular(vp);\r\n accudraw.changeCompassMode(true);\r\n }\r\n\r\n if (accudraw.getFieldLock(ItemField.X_Item)) {\r\n accudraw.setFieldLock(ItemField.X_Item, false);\r\n accudraw.locked = accudraw.locked & ~LockedStates.X_BM;\r\n } else {\r\n accudraw.saveCoordinate(ItemField.X_Item, accudraw.delta.x);\r\n accudraw.setFieldLock(ItemField.X_Item, true);\r\n accudraw.locked = accudraw.locked | LockedStates.X_BM;\r\n }\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static lockY(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n accudraw.clearTentative();\r\n\r\n if (CompassMode.Rectangular !== accudraw.compassMode) {\r\n const vp = accudraw.currentView;\r\n if (!vp)\r\n return;\r\n\r\n accudraw.fixPointRectangular(vp);\r\n accudraw.changeCompassMode(true);\r\n }\r\n\r\n if (accudraw.getFieldLock(ItemField.Y_Item)) {\r\n accudraw.setFieldLock(ItemField.Y_Item, false);\r\n accudraw.locked = accudraw.locked & ~LockedStates.Y_BM;\r\n } else {\r\n accudraw.saveCoordinate(ItemField.Y_Item, accudraw.delta.y);\r\n accudraw.setFieldLock(ItemField.Y_Item, true);\r\n accudraw.locked = accudraw.locked | LockedStates.Y_BM;\r\n }\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static lockZ(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n const vp = accudraw.currentView;\r\n if (!vp || !vp.view.is3d())\r\n return;\r\n\r\n const isSnapped = accudraw.clearTentative();\r\n\r\n if (accudraw.getFieldLock(ItemField.Z_Item)) {\r\n accudraw.setFieldLock(ItemField.Z_Item, false);\r\n } else {\r\n // Move focus to Z field...\r\n if (!isSnapped && accudraw.autoFocusFields) {\r\n accudraw.setFocusItem(ItemField.Z_Item);\r\n accudraw.dontMoveFocus = true;\r\n }\r\n accudraw.setFieldLock(ItemField.Z_Item, true);\r\n }\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static lockDistance(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n const isSnapped = accudraw.clearTentative();\r\n\r\n if (CompassMode.Polar !== accudraw.compassMode) {\r\n const vp = accudraw.currentView;\r\n if (!vp)\r\n return;\r\n\r\n accudraw.locked = 0;\r\n accudraw.fixPointPolar(vp);\r\n accudraw.changeCompassMode(true);\r\n }\r\n\r\n if (accudraw.getFieldLock(ItemField.DIST_Item)) {\r\n accudraw.setFieldLock(ItemField.DIST_Item, false);\r\n accudraw.locked &= ~LockedStates.DIST_BM;\r\n\r\n accudraw.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic); // Need to clear partial status if locked by entering distance since focus stays in distance field...\r\n } else {\r\n // Move focus to distance field...\r\n if (!isSnapped && accudraw.autoFocusFields)\r\n accudraw.setFocusItem(ItemField.DIST_Item);\r\n accudraw.distanceLock(true, true);\r\n }\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static lockAngle(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n accudraw.doLockAngle(accudraw.clearTentative());\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public lockIndex(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n if (accudraw.flags.indexLocked) {\r\n if (accudraw.locked)\r\n AccuDrawShortcuts.lockSmart();\r\n\r\n accudraw.flags.indexLocked = false;\r\n } else {\r\n if (CompassMode.Polar === accudraw.compassMode) {\r\n if (accudraw.indexed & LockedStates.XY_BM) {\r\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\r\n accudraw.angleLock();\r\n }\r\n\r\n if (accudraw.indexed & LockedStates.DIST_BM)\r\n AccuDrawShortcuts.lockDistance();\r\n } else {\r\n if (accudraw.indexed & LockedStates.X_BM) {\r\n AccuDrawShortcuts.lockX();\r\n\r\n if (accudraw.indexed & LockedStates.DIST_BM)\r\n AccuDrawShortcuts.lockY();\r\n }\r\n\r\n if (accudraw.indexed & LockedStates.Y_BM) {\r\n AccuDrawShortcuts.lockY();\r\n\r\n if (accudraw.indexed & LockedStates.DIST_BM)\r\n AccuDrawShortcuts.lockX();\r\n }\r\n\r\n if (accudraw.indexed & LockedStates.DIST_BM && !(accudraw.indexed & LockedStates.XY_BM)) {\r\n if (accudraw.locked & LockedStates.X_BM)\r\n AccuDrawShortcuts.lockY();\r\n else\r\n AccuDrawShortcuts.lockX();\r\n }\r\n }\r\n\r\n accudraw.flags.indexLocked = true;\r\n }\r\n\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static setStandardRotation(rotation: RotationMode): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n if (RotationMode.Context === rotation) {\r\n const axes = accudraw.baseAxes.clone();\r\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\r\n accudraw.setContextRotation(axes.toMatrix3d(), false, true);\r\n accudraw.refreshDecorationsAndDynamics();\r\n return;\r\n } else {\r\n accudraw.flags.baseRotation = rotation;\r\n accudraw.setRotationMode(rotation);\r\n }\r\n accudraw.updateRotation(true);\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static alignView(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n const vp = accudraw.currentView;\r\n if (!vp)\r\n return;\r\n\r\n const newMatrix = accudraw.getRotation();\r\n if (newMatrix.isExactEqual(vp.rotation))\r\n return;\r\n\r\n const targetMatrix = newMatrix.multiplyMatrixMatrix(vp.rotation);\r\n const rotateTransform = Transform.createFixedPointAndMatrix(vp.view.getTargetPoint(), targetMatrix);\r\n const newFrustum = vp.getFrustum();\r\n newFrustum.multiply(rotateTransform);\r\n\r\n vp.view.setupFromFrustum(newFrustum);\r\n vp.synchWithView();\r\n vp.animateFrustumChange();\r\n\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static rotateToBase(): void { this.setStandardRotation(IModelApp.accuDraw.flags.baseRotation); }\r\n\r\n public static rotateToACS(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n // NOTE: Match current ACS orientation..reset auxRotationPlane to top!\r\n accudraw.flags.auxRotationPlane = RotationMode.Top;\r\n this.setStandardRotation(RotationMode.ACS);\r\n }\r\n\r\n public static rotateCycle(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n const vp = accudraw.currentView;\r\n if (!vp || !vp.view.is3d())\r\n return;\r\n\r\n let rotation: RotationMode;\r\n switch (accudraw.rotationMode) {\r\n case RotationMode.View:\r\n case RotationMode.Side:\r\n rotation = RotationMode.Top;\r\n break;\r\n\r\n case RotationMode.Top:\r\n rotation = RotationMode.Front;\r\n break;\r\n\r\n case RotationMode.Front:\r\n rotation = RotationMode.Side;\r\n break;\r\n\r\n case RotationMode.Context:\r\n rotation = RotationMode.Context;\r\n\r\n if (rotation !== accudraw.flags.baseRotation) {\r\n accudraw.baseAxes.setFrom(accudraw.axes);\r\n accudraw.flags.auxRotationPlane = RotationMode.Top;\r\n accudraw.flags.baseRotation = rotation;\r\n } else {\r\n const axes = accudraw.baseAxes.clone();\r\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\r\n if (!accudraw.axes.equals(axes))\r\n accudraw.changeBaseRotationMode(rotation);\r\n }\r\n\r\n switch (accudraw.flags.auxRotationPlane) {\r\n case RotationMode.Front:\r\n accudraw.flags.auxRotationPlane = RotationMode.Side;\r\n break;\r\n\r\n case RotationMode.Side:\r\n accudraw.flags.auxRotationPlane = RotationMode.Top;\r\n break;\r\n\r\n case RotationMode.Top:\r\n accudraw.flags.auxRotationPlane = RotationMode.Front;\r\n break;\r\n }\r\n break;\r\n\r\n case RotationMode.ACS:\r\n rotation = RotationMode.ACS;\r\n switch (accudraw.flags.auxRotationPlane) {\r\n case RotationMode.Front:\r\n accudraw.flags.auxRotationPlane = RotationMode.Side;\r\n break;\r\n case RotationMode.Side:\r\n accudraw.flags.auxRotationPlane = RotationMode.Top;\r\n break;\r\n case RotationMode.Top:\r\n accudraw.flags.auxRotationPlane = RotationMode.Front;\r\n break;\r\n }\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n this.setStandardRotation(rotation);\r\n }\r\n\r\n public static rotate90(axis: number): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return;\r\n\r\n const newRotation = new ThreeAxes();\r\n\r\n accudraw.locked = accudraw.indexed = 0;\r\n accudraw.unlockAllFields();\r\n\r\n switch (axis) {\r\n case 0:\r\n newRotation.x.setFrom(accudraw.axes.x);\r\n newRotation.z.setFrom(accudraw.axes.y);\r\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\r\n break;\r\n\r\n case 1:\r\n newRotation.x.setFrom(accudraw.axes.z);\r\n newRotation.y.setFrom(accudraw.axes.y);\r\n newRotation.x.crossProduct(newRotation.y, newRotation.z);\r\n break;\r\n\r\n case 2:\r\n newRotation.x.setFrom(accudraw.axes.y);\r\n newRotation.z.setFrom(accudraw.axes.z);\r\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\r\n break;\r\n }\r\n\r\n accudraw.setContextRotation(newRotation.toMatrix3d(), true, true);\r\n accudraw.refreshDecorationsAndDynamics();\r\n }\r\n\r\n public static async rotateAxes(aboutCurrentZ: boolean) {\r\n return IModelApp.tools.run(\"AccuDraw.RotateAxes\", aboutCurrentZ);\r\n }\r\n\r\n public static async rotateToElement() {\r\n return IModelApp.tools.run(\"AccuDraw.RotateElement\");\r\n }\r\n\r\n public static async defineACSByElement() {\r\n return IModelApp.tools.run(\"AccuDraw.DefineACSByElement\");\r\n }\r\n\r\n public static async defineACSByPoints() {\r\n return IModelApp.tools.run(\"AccuDraw.DefineACSByPoints\");\r\n }\r\n\r\n public static getACS(acsName: string | undefined, useOrigin: boolean, useRotation: boolean): BentleyStatus {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return BentleyStatus.ERROR;\r\n\r\n const vp = accudraw.currentView;\r\n if (!vp)\r\n return BentleyStatus.ERROR;\r\n\r\n let currRotation = 0, currBaseRotation = 0;\r\n const axes = new ThreeAxes();\r\n\r\n if (!useRotation) {\r\n // Save current rotation, event listener on ACS change will orient AccuDraw to ACS...\r\n currRotation = accudraw.rotationMode;\r\n currBaseRotation = accudraw.flags.baseRotation;\r\n axes.setFrom(accudraw.axes);\r\n }\r\n\r\n if (acsName && \"\" !== acsName) {\r\n // // See if this ACS already exists...\r\n // DgnCode acsCode = AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), acsName);\r\n // DgnElementId acsId = vp -> GetViewController().GetDgnDb().Elements().QueryElementIdByCode(acsCode);\r\n\r\n // if (!acsId.IsValid())\r\n // return ERROR;\r\n\r\n // AuxCoordSystemCPtr auxElm = vp -> GetViewController().GetDgnDb().Elements().Get<AuxCoordSystem>(acsId);\r\n\r\n // if (!auxElm.IsValid())\r\n // return ERROR;\r\n\r\n // AuxCoordSystemPtr acsPtr = auxElm -> MakeCopy<AuxCoordSystem>();\r\n\r\n // if (!acsPtr.IsValid())\r\n // return ERROR;\r\n\r\n // AuxCoordSystemCR oldACS = vp -> GetViewController().GetAuxCoordinateSystem();\r\n\r\n // if (!useOrigin)\r\n // acsPtr -> SetOrigin(oldACS.GetOrigin());\r\n\r\n // if (!useRotation)\r\n // acsPtr -> SetRotation(oldACS.GetRotation());\r\n\r\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\r\n }\r\n\r\n const currentACS = vp.view.auxiliaryCoordinateSystem;\r\n\r\n if (useOrigin) {\r\n accudraw.origin.setFrom(currentACS.getOrigin());\r\n accudraw.point.setFrom(accudraw.origin);\r\n accudraw.planePt.setFrom(accudraw.origin);\r\n }\r\n\r\n if (useRotation) {\r\n accudraw.flags.auxRotationPlane = RotationMode.Top;\r\n this.setStandardRotation(RotationMode.ACS);\r\n } else {\r\n this.itemFieldUnlockAll();\r\n\r\n accudraw.setRotationMode(currRotation);\r\n accudraw.flags.baseRotation = currBaseRotation;\r\n accudraw.axes.setFrom(axes);\r\n\r\n if (RotationMode.ACS === accudraw.flags.baseRotation) {\r\n const acs = currentACS.clone();\r\n\r\n const rMatrix = accudraw.getRotation();\r\n acs.setRotation(rMatrix);\r\n\r\n AccuDraw.updateAuxCoordinateSystem(acs, vp);\r\n }\r\n\r\n accudraw.published.flags &= ~AccuDrawFlags.OrientACS;\r\n }\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n public static writeACS(_acsName: string): BentleyStatus {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isEnabled)\r\n return BentleyStatus.ERROR;\r\n\r\n const vp = accudraw.currentView;\r\n if (!vp)\r\n return BentleyStatus.ERROR;\r\n\r\n // const origin = accudraw.origin;\r\n // const rMatrix = accudraw.getRotation();\r\n // AuxCoordSystemPtr acsPtr = AuxCoordSystem:: CreateFrom(vp -> GetViewController().GetAuxCoordinateSystem());\r\n // acsPtr -> SetOrigin(origin);\r\n // acsPtr -> SetRotation(rMatrix);\r\n // acsPtr -> SetType(CompassMode.Polar == accudraw.getCompassMode() ? ACSType :: Cylindrical : ACSType:: Rectangular);\r\n // acsPtr -> SetCode(AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), nullptr != acsName ? acsName : \"\"));\r\n // acsPtr -> SetDescription(\"\");\r\n\r\n // if (acsName && '\\0' != acsName[0]) {\r\n // DgnDbStatus status;\r\n // acsPtr -> Insert(& status);\r\n\r\n // if (DgnDbStatus:: Success != status)\r\n // return BentleyStatus.ERROR;\r\n // }\r\n\r\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\r\n\r\n // accudraw.flags.baseRotation = RotationMode.ACS;\r\n // accudraw.SetRotationMode(RotationMode.ACS);\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n public static itemFieldUnlockAll(): void {\r\n const accudraw = IModelApp.accuDraw;\r\n if (accudraw.isEnabled)\r\n accudraw.unlockAllFields();\r\n }\r\n\r\n /** @internal Temporary keyboard shortcuts. */\r\n public static async processShortcutKey(keyEvent: KeyboardEvent) {\r\n switch (keyEvent.key.toLowerCase()) {\r\n case \"enter\":\r\n AccuDrawShortcuts.lockSmart();\r\n return true;\r\n case \"x\":\r\n AccuDrawShortcuts.lockX();\r\n return true;\r\n case \"y\":\r\n AccuDrawShortcuts.lockY();\r\n return true;\r\n case \"z\":\r\n AccuDrawShortcuts.lockZ();\r\n return true;\r\n case \"a\":\r\n AccuDrawShortcuts.lockAngle();\r\n return true;\r\n case \"d\":\r\n AccuDrawShortcuts.lockDistance();\r\n return true;\r\n case \"m\":\r\n AccuDrawShortcuts.changeCompassMode();\r\n return true;\r\n case \"t\":\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.Top);\r\n return true;\r\n case \"f\":\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.Front);\r\n return true;\r\n case \"s\":\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.Side);\r\n return true;\r\n case \"v\":\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.View);\r\n return true;\r\n case \"o\":\r\n AccuDrawShortcuts.setOrigin();\r\n return true;\r\n case \"c\":\r\n AccuDrawShortcuts.rotateCycle();\r\n return true;\r\n case \"q\":\r\n return AccuDrawShortcuts.rotateAxes(true);\r\n case \"e\":\r\n return AccuDrawShortcuts.rotateToElement();\r\n case \"r\":\r\n return AccuDrawShortcuts.defineACSByPoints();\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawSetOriginTool extends Tool {\r\n public static override toolId = \"AccuDraw.SetOrigin\";\r\n public override async run() {\r\n AccuDrawShortcuts.setOrigin();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawSetLockSmartTool extends Tool {\r\n public static override toolId = \"AccuDraw.LockSmart\";\r\n public override async run() {\r\n AccuDrawShortcuts.lockSmart();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawSetLockXTool extends Tool {\r\n public static override toolId = \"AccuDraw.LockX\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.lockX();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawSetLockYTool extends Tool {\r\n public static override toolId = \"AccuDraw.LockY\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.lockY();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawSetLockZTool extends Tool {\r\n public static override toolId = \"AccuDraw.LockZ\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.lockZ();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawSetLockDistanceTool extends Tool {\r\n public static override toolId = \"AccuDraw.LockDistance\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.lockDistance();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawSetLockAngleTool extends Tool {\r\n public static override toolId = \"AccuDraw.LockAngle\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.lockAngle();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawChangeModeTool extends Tool {\r\n public static override toolId = \"AccuDraw.ChangeMode\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.changeCompassMode();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawRotateCycleTool extends Tool {\r\n public static override toolId = \"AccuDraw.RotateCycle\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.rotateCycle();\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawRotateTopTool extends Tool {\r\n public static override toolId = \"AccuDraw.RotateTop\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.Top);\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawRotateFrontTool extends Tool {\r\n public static override toolId = \"AccuDraw.RotateFront\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.Front);\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawRotateSideTool extends Tool {\r\n public static override toolId = \"AccuDraw.RotateSide\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.Side);\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawRotateViewTool extends Tool {\r\n public static override toolId = \"AccuDraw.RotateView\";\r\n public override async run(): Promise<boolean> {\r\n AccuDrawShortcuts.setStandardRotation(RotationMode.View);\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nabstract class AccuDrawShortcutsTool extends InputCollector {\r\n private _cancel: boolean;\r\n public constructor() {\r\n super();\r\n this._cancel = true;\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None);\r\n this.doManipulationStart();\r\n } // NOTE: InputCollector inherits suspended primitive's state, set everything...\r\n\r\n public override async onCleanup() { this.doManipulationStop(this._cancel); }\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (this.doManipulation(ev, false)) {\r\n this._cancel = false;\r\n await this.exitTool();\r\n }\r\n\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> { this.doManipulation(ev, true); }\r\n public override async exitTool() {\r\n await super.exitTool();\r\n AccuDrawShortcuts.requestInputFocus();\r\n } // re-grab focus when auto-focus tool setting set...\r\n\r\n public activateAccuDrawOnStart() { return true; }\r\n public doManipulationStart() {\r\n if (this.activateAccuDrawOnStart())\r\n IModelApp.accuDraw.activate();\r\n\r\n this.doManipulation(undefined, true);\r\n }\r\n\r\n public doManipulationStop(cancel: boolean) {\r\n if (!cancel)\r\n IModelApp.accuDraw.savedStateInputCollector.ignoreFlags = this.onManipulationComplete();\r\n }\r\n\r\n public onManipulationComplete(): AccuDrawFlags { return 0; }\r\n public abstract doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {\r\n public static override toolId = \"AccuDraw.RotateAxes\";\r\n public static override get maxArgs(): number { return 1; }\r\n protected _immediateMode: boolean = false;\r\n public constructor(public aboutCurrentZ: boolean = true) { super(); }\r\n\r\n public override async onInstall(): Promise<boolean> {\r\n const accudraw = IModelApp.accuDraw;\r\n if (!accudraw.isActive)\r\n return false; // Require compass to already be active for this shortcut...\r\n\r\n if (this.aboutCurrentZ)\r\n accudraw.changeBaseRotationMode(RotationMode.Context); // Establish current orientation as base; base Z is used when defining compass rotation by x axis...\r\n\r\n if (accudraw.clearTentative() || IModelApp.accuSnap.isHot ||\r\n (CompassMode.Polar === accudraw.compassMode && accudraw.getFieldLock(ItemField.ANGLE_Item)) ||\r\n (CompassMode.Polar !== accudraw.compassMode && accudraw.getFieldLock(ItemField.X_Item) && accudraw.getFieldLock(ItemField.Y_Item))) {\r\n if (AccuDrawShortcuts.rotateAxesByPoint(true, this.aboutCurrentZ)) {\r\n AccuDrawShortcuts.itemFieldUnlockAll();\r\n accudraw.refreshDecorationsAndDynamics();\r\n this._immediateMode = true;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public override async onPostInstall() {\r\n if (this._immediateMode) {\r\n await this.exitTool();\r\n return;\r\n }\r\n return super.onPostInstall();\r\n }\r\n\r\n public override onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\r\n public override doManipulationStart(): void {\r\n super.doManipulationStart();\r\n CoreTools.outputPromptByKey(\"AccuDraw.RotateAxes.Prompts.FirstPoint\");\r\n }\r\n\r\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\r\n const vp = ev ? ev.viewport : IModelApp.accuDraw.currentView;\r\n if (!vp)\r\n return true;\r\n AccuDrawShortcuts.rotateAxesByPoint(TentativeOrAccuSnap.isHot, this.aboutCurrentZ);\r\n vp.invalidateDecorations();\r\n if (!isMotion)\r\n AccuDrawShortcuts.itemFieldUnlockAll();\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: any[]): Promise<boolean> {\r\n for (const arg of args) {\r\n if (arg.toLowerCase() === \"unlockedz\")\r\n this.aboutCurrentZ = false;\r\n }\r\n return this.run(args);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {\r\n public static override toolId = \"AccuDraw.RotateElement\";\r\n public moveOrigin: boolean = !IModelApp.accuDraw.isActive; // By default use current origin if AccuDraw is already enabled...\r\n public override async onInstall(): Promise<boolean> { return IModelApp.accuDraw.isEnabled; } // Require compass to be enabled for this session...\r\n\r\n public override onManipulationComplete(): AccuDrawFlags {\r\n let ignoreFlags = AccuDrawFlags.SetRMatrix | AccuDrawFlags.Disable; // If AccuDraw wasn't active when the shortcut started, let it remain active for suspended tool when shortcut completes...\r\n if (this.moveOrigin)\r\n ignoreFlags |= AccuDrawFlags.SetOrigin;\r\n return ignoreFlags;\r\n }\r\n\r\n public override doManipulationStart(): void {\r\n super.doManipulationStart();\r\n CoreTools.outputPromptByKey(\"AccuDraw.RotateElement.Prompts.FirstPoint\");\r\n }\r\n\r\n public updateOrientation(snap: SnapDetail, vp: Viewport): boolean {\r\n const accudraw = IModelApp.accuDraw;\r\n const rMatrix = AccuDraw.getSnapRotation(snap, vp);\r\n if (undefined === rMatrix)\r\n return false;\r\n const origin = this.moveOrigin ? snap.snapPoint : accudraw.origin;\r\n accudraw.setContext(AccuDrawFlags.AlwaysSetOrigin | AccuDrawFlags.SetRMatrix, origin, rMatrix);\r\n return true;\r\n }\r\n\r\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\r\n const vp = ev ? ev.viewport : IModelApp.accuDraw.currentView;\r\n if (!vp)\r\n return true;\r\n\r\n const snapDetail = TentativeOrAccuSnap.getCurrentSnap(false);\r\n if (undefined === snapDetail || !this.updateOrientation(snapDetail, vp))\r\n return true;\r\n\r\n if (undefined === ev)\r\n AccuDrawShortcuts.processPendingHints();\r\n if (!isMotion)\r\n IModelApp.accuDraw.changeBaseRotationMode(RotationMode.Context); // Hold temporary rotation for tool duration when not updating ACS...\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DefineACSByElementTool extends AccuDrawShortcutsTool {\r\n public static override toolId = \"AccuDraw.DefineACSByElement\";\r\n private _origin = Point3d.create();\r\n private _rMatrix = Matrix3d.createIdentity();\r\n private _acs?: AuxCoordSystemState;\r\n\r\n public override activateAccuDrawOnStart(): boolean { return false; }\r\n public override onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\r\n\r\n public override doManipulationStart(): void {\r\n super.doManipulationStart();\r\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByElement.Prompts.FirstPoint\");\r\n }\r\n\r\n public updateOrientation(snap: SnapDetail, vp: Viewport): boolean {\r\n const rMatrix = AccuDraw.getSnapRotation(snap, vp);\r\n if (undefined === rMatrix)\r\n return false;\r\n this._origin = snap.snapPoint;\r\n this._rMatrix = rMatrix;\r\n return true;\r\n }\r\n\r\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\r\n const vp = ev ? ev.viewport : undefined;\r\n if (!vp)\r\n return true;\r\n\r\n const snapDetail = TentativeOrAccuSnap.getCurrentSnap(false);\r\n if (undefined === snapDetail || !this.updateOrientation(snapDetail, vp))\r\n return true;\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n if (isMotion)\r\n return true;\r\n\r\n if (!this._acs)\r\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\r\n this._acs.setOrigin(this._origin);\r\n this._acs.setRotation(this._rMatrix);\r\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\r\n AccuDrawShortcuts.rotateToACS();\r\n return true;\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n const vp = context.viewport;\r\n if (!this._acs)\r\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\r\n this._acs.setOrigin(this._origin);\r\n this._acs.setRotation(this._rMatrix);\r\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DefineACSByPointsTool extends AccuDrawShortcutsTool {\r\n public static override toolId = \"AccuDraw.DefineACSByPoints\";\r\n private readonly _points: Point3d[] = [];\r\n private _acs?: AuxCoordSystemState;\r\n\r\n public override activateAccuDrawOnStart(): boolean { return false; }\r\n public override onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\r\n\r\n public override doManipulationStart(): void {\r\n super.doManipulationStart();\r\n const tentativePoint = IModelApp.tentativePoint;\r\n if (!tentativePoint.isActive) {\r\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.FirstPoint\");\r\n return;\r\n }\r\n\r\n const origin = tentativePoint.getPoint().clone();\r\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.SecondPoint\");\r\n IModelApp.accuDraw.setContext(AccuDrawFlags.SetOrigin | AccuDrawFlags.FixedOrigin, origin);\r\n this._points.push(origin);\r\n tentativePoint.clear(true);\r\n }\r\n\r\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\r\n if (!ev || !ev.viewport)\r\n return true;\r\n\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n if (isMotion)\r\n return false;\r\n\r\n IModelApp.accuDraw.activate();\r\n this._points.push(ev.point.clone());\r\n\r\n const vp = ev.viewport;\r\n if (!this._acs)\r\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\r\n\r\n if (AccuDrawShortcuts.updateACSByPoints(this._acs, vp, this._points, false)) {\r\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\r\n AccuDrawShortcuts.rotateToACS();\r\n return true;\r\n }\r\n\r\n CoreTools.outputPromptByKey(`AccuDraw.DefineACSByPoints.Prompts${1 === this._points.length ? \".SecondPoint\" : \".NextPoint\"}`);\r\n return false;\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n const tmpPoints: Point3d[] = [];\r\n this._points.forEach((pt) => tmpPoints.push(pt));\r\n\r\n const ev = new BeButtonEvent();\r\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\r\n tmpPoints.push(ev.point);\r\n\r\n const vp = context.viewport;\r\n if (!this._acs)\r\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\r\n\r\n AccuDrawShortcuts.updateACSByPoints(this._acs, vp, tmpPoints, true);\r\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AccuDrawTool.js","sourceRoot":"","sources":["../../../src/tools/AccuDrawTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport { Geometry, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { AccuDraw, AccuDrawFlags, CompassMode, ContextMode, ItemField, KeyinStatus, LockedStates, RotationMode, ThreeAxes } from \"../AccuDraw\";\nimport { TentativeOrAccuSnap } from \"../AccuSnap\";\nimport { ACSDisplayOptions, AuxCoordSystemState } from \"../AuxCoordSys\";\nimport { SnapDetail } from \"../HitDetail\";\nimport { IModelApp } from \"../IModelApp\";\nimport { DecorateContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport { BeButtonEvent, CoordinateLockOverrides, CoreTools, EventHandled, InputCollector, Tool } from \"./Tool\";\n\n// cSpell:ignore dont unlockedz\n\nfunction normalizedDifference(point1: Point3d, point2: Point3d, out: Vector3d): number {\n return point2.vectorTo(point1).normalizeWithLength(out).mag;\n}\n\nfunction normalizedCrossProduct(vec1: Vector3d, vec2: Vector3d, out: Vector3d): number {\n return vec1.crossProduct(vec2, out).normalizeWithLength(out).mag;\n}\n\n/**\n * A shortcut may require no user input (immediate) or it may install a tool to collect the needed input. AccuDrawShortcuts are how users control AccuDraw.\n * A tool implementor should not use this class to setup AccuDraw, instead use AccuDrawHintBuilder to provide hints.\n * @alpha\n */\nexport class AccuDrawShortcuts {\n public static rotateAxesByPoint(isSnapped: boolean, aboutCurrentZ: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return false;\n\n const vp = accudraw.currentView;\n if (!vp)\n return false;\n\n const point = accudraw.point;\n if (!vp.view.is3d())\n point.z = 0.0;\n\n if (aboutCurrentZ)\n accudraw.hardConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\n else\n accudraw.softConstructionPlane(point, point, accudraw.planePt, accudraw.axes.z, vp, isSnapped);\n\n // Snap point and compass origin coincide...\n const xVec = new Vector3d();\n if (normalizedDifference(point, accudraw.planePt, xVec) < Geometry.smallAngleRadians)\n return false;\n\n accudraw.axes.x.setFrom(xVec);\n\n if (RotationMode.Context !== accudraw.rotationMode)\n accudraw.setRotationMode(RotationMode.Context);\n\n accudraw.flags.contextRotMode = ContextMode.XAxis;\n accudraw.flags.lockedRotation = false;\n\n accudraw.updateRotation();\n\n // Always want index line to display for x-Axis...changing rotation clears this...so it flashes...\n accudraw.indexed |= LockedStates.X_BM;\n return true;\n }\n\n public static updateACSByPoints(acs: AuxCoordSystemState, vp: Viewport, points: Point3d[], isDynamics: boolean): boolean {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return false;\n\n let accept = false;\n const vec = [new Vector3d(), new Vector3d(), new Vector3d()];\n acs.setOrigin(points[0]);\n switch (points.length) {\n case 1:\n acs.setRotation(vp.rotation);\n if (!isDynamics) {\n accudraw.published.origin.setFrom(points[0]);\n accudraw.published.flags = AccuDrawFlags.SetOrigin;\n accudraw.flags.fixedOrg = true;\n }\n break;\n\n case 2:\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001) {\n accept = true;\n break;\n }\n\n if (vp.view.is3d()) {\n if (normalizedCrossProduct(accudraw.axes.y, vec[0], vec[1]) < 0.00001) {\n vec[2].set(0.0, 0.0, 1.0);\n\n if (normalizedCrossProduct(vec[2], vec[0], vec[1]) < 0.00001) {\n vec[2].set(0.0, 1.0, 0.0);\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n }\n }\n\n normalizedCrossProduct(vec[0], vec[1], vec[2]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n\n if (!isDynamics) {\n accudraw.published.origin.setFrom(points[0]);\n accudraw.published.flags = AccuDrawFlags.SetOrigin | AccuDrawFlags.SetNormal;\n accudraw.published.vector.setFrom(vec[0]);\n }\n break;\n }\n\n vec[2].set(0.0, 0.0, 1.0);\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n accept = true;\n break;\n\n case 3:\n if (normalizedDifference(points[1], points[0], vec[0]) < 0.00001 ||\n normalizedDifference(points[2], points[0], vec[1]) < 0.00001 ||\n normalizedCrossProduct(vec[0], vec[1], vec[2]) < 0.00001) {\n accept = true;\n break;\n }\n\n normalizedCrossProduct(vec[2], vec[0], vec[1]);\n acs.setRotation(Matrix3d.createRows(vec[0], vec[1], vec[2]));\n accept = true;\n break;\n }\n\n return accept;\n }\n\n public static processPendingHints() { IModelApp.accuDraw.processHints(); }\n\n public static requestInputFocus() {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.grabInputFocus();\n accudraw.refreshDecorationsAndDynamics();\n }\n\n // Helper method for GUI implementation...\n public static async itemFieldNavigate(index: ItemField, str: string, forward: boolean): Promise<void> {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.getFieldLock(index))\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\n\n if (!accudraw.isActive && KeyinStatus.Partial === accudraw.getKeyinStatus(index)) {\n await accudraw.processFieldInput(index, str, true);\n } else {\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\n accudraw.onFieldValueChange(index);\n }\n\n const vp = accudraw.currentView;\n const is3d = vp ? vp.view.is3d() : false;\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\n switch (index) {\n case ItemField.DIST_Item:\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.ANGLE_Item);\n break;\n\n case ItemField.ANGLE_Item:\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.DIST_Item);\n break;\n\n case ItemField.X_Item:\n index = ((is3d && !forward) ? ItemField.Z_Item : ItemField.Y_Item);\n break;\n\n case ItemField.Y_Item:\n index = ((is3d && forward) ? ItemField.Z_Item : ItemField.X_Item);\n break;\n\n case ItemField.Z_Item:\n index = (forward ? (isPolar ? ItemField.DIST_Item : ItemField.X_Item) : (isPolar ? ItemField.ANGLE_Item : ItemField.Y_Item));\n break;\n }\n\n accudraw.setKeyinStatus(index, KeyinStatus.Partial);\n accudraw.setFocusItem(index);\n accudraw.dontMoveFocus = true;\n }\n\n public static itemFieldNewInput(index: ItemField): void { IModelApp.accuDraw.setKeyinStatus(index, KeyinStatus.Partial); }\n\n public static async itemFieldAcceptInput(index: ItemField, str: string): Promise<void> {\n const accudraw = IModelApp.accuDraw;\n await accudraw.processFieldInput(index, str, true);\n accudraw.setKeyinStatus(index, KeyinStatus.Dynamic);\n\n if (accudraw.getFieldLock(index))\n accudraw.saveCoordinate(index, accudraw.getValueByIndex(index));\n\n const vp = accudraw.currentView;\n if (accudraw.isActive) {\n if (!vp)\n return;\n\n if (CompassMode.Polar === accudraw.compassMode)\n accudraw.fixPointPolar(vp);\n else\n accudraw.fixPointRectangular(vp);\n\n accudraw.flags.dialogNeedsUpdate = true;\n return;\n }\n\n const is3d = vp ? vp.view.is3d() : false;\n const isPolar = (CompassMode.Polar === accudraw.compassMode);\n switch (index) {\n case ItemField.DIST_Item:\n index = ItemField.ANGLE_Item;\n break;\n\n case ItemField.ANGLE_Item:\n index = (is3d ? ItemField.Z_Item : ItemField.DIST_Item);\n break;\n\n case ItemField.X_Item:\n index = ItemField.Y_Item;\n break;\n\n case ItemField.Y_Item:\n index = (is3d ? ItemField.Z_Item : ItemField.X_Item);\n break;\n\n case ItemField.Z_Item:\n index = (isPolar ? ItemField.DIST_Item : ItemField.X_Item);\n break;\n }\n accudraw.setFocusItem(index);\n }\n\n public static itemFieldLockToggle(index: ItemField): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.getFieldLock(index)) {\n switch (index) {\n case ItemField.DIST_Item:\n accudraw.distanceLock(true, false);\n break;\n\n case ItemField.ANGLE_Item:\n accudraw.angleLock();\n break;\n\n case ItemField.X_Item:\n accudraw.clearTentative();\n accudraw.locked |= LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n accudraw.clearTentative();\n accudraw.locked |= LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n accudraw.clearTentative();\n break;\n }\n\n return;\n }\n\n switch (index) {\n case ItemField.DIST_Item:\n accudraw.locked &= ~LockedStates.DIST_BM;\n break;\n\n case ItemField.ANGLE_Item:\n accudraw.locked &= ~LockedStates.ANGLE_BM;\n break;\n\n case ItemField.X_Item:\n accudraw.locked &= ~LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n accudraw.locked &= ~LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n break;\n }\n\n accudraw.dontMoveFocus = false;\n accudraw.clearTentative();\n }\n\n public static itemRotationModeChange(rotation: RotationMode): void {\n const accudraw = IModelApp.accuDraw;\n const vp = accudraw.currentView;\n const is3d = vp ? vp.view.is3d() : true;\n\n if (!is3d && (RotationMode.Front === rotation || RotationMode.Side === rotation))\n accudraw.setRotationMode(RotationMode.Top);\n\n accudraw.flags.baseRotation = rotation;\n accudraw.updateRotation(true);\n }\n\n // Shortcut implementations for GUI entry points...\n public static setOrigin(explicitOrigin?: Point3d): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (explicitOrigin) {\n accudraw.published.origin.setFrom(explicitOrigin);\n accudraw.flags.haveValidOrigin = true;\n } else if (accudraw.isInactive || accudraw.isDeactivated) {\n // If AccuSnap is active use adjusted snap point, otherwise use last data point...\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined !== snap) {\n accudraw.published.origin.setFrom(snap.isPointAdjusted ? snap.adjustedPoint : snap.getPoint());\n accudraw.flags.haveValidOrigin = true;\n } else {\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromLastDataButton(ev);\n\n if (ev.viewport) {\n accudraw.published.origin.setFrom(ev.point);\n accudraw.flags.haveValidOrigin = true;\n } else {\n // NOTE: If current point isn't valid setDefaultOrigin will be called...\n accudraw.published.origin.setFrom(accudraw.point);\n }\n }\n } else {\n accudraw.published.origin.setFrom(accudraw.point);\n accudraw.flags.haveValidOrigin = true;\n accudraw.setLastPoint(accudraw.published.origin);\n }\n\n accudraw.clearTentative();\n const vp = accudraw.currentView;\n\n // NOTE: _AdjustPoint should have been called to have setup currentView...\n if (vp && !vp.view.is3d())\n accudraw.published.origin.z = 0.0;\n\n accudraw.origin.setFrom(accudraw.published.origin);\n accudraw.point.setFrom(accudraw.published.origin);\n accudraw.planePt.setFrom(accudraw.published.origin);\n accudraw.published.flags |= AccuDrawFlags.SetOrigin;\n accudraw.activate();\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static changeCompassMode(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n let axisLockStatus = accudraw.locked & LockedStates.XY_BM;\n\n if (axisLockStatus) {\n if (CompassMode.Rectangular === accudraw.compassMode) {\n if (axisLockStatus & LockedStates.X_BM && accudraw.delta.x !== 0.0)\n axisLockStatus &= ~LockedStates.X_BM;\n\n if (axisLockStatus & LockedStates.Y_BM && accudraw.delta.y !== 0.0)\n axisLockStatus &= ~LockedStates.Y_BM;\n }\n }\n\n accudraw.changeCompassMode(true);\n if (axisLockStatus) {\n if (CompassMode.Rectangular === accudraw.compassMode) {\n accudraw.delta.x = accudraw.delta.y = 0.0;\n\n if (axisLockStatus & LockedStates.X_BM)\n accudraw.setFieldLock(ItemField.X_Item, true);\n else if (axisLockStatus & LockedStates.Y_BM)\n accudraw.setFieldLock(ItemField.Y_Item, true);\n } else {\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\n }\n accudraw.locked = axisLockStatus;\n }\n accudraw.flags.baseMode = accudraw.compassMode;\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static lockSmart(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const accuSnap = IModelApp.accuSnap;\n\n // Don't want AccuSnap to influence axis or Z...\n if (accuSnap.isHot) {\n accuSnap.clear();\n\n const vp = accudraw.currentView;\n if (vp) {\n if (CompassMode.Polar === accudraw.compassMode)\n accudraw.fixPointPolar(vp);\n else\n accudraw.fixPointRectangular(vp);\n }\n }\n\n if (CompassMode.Polar === accudraw.compassMode) {\n const isSnapped = accudraw.clearTentative();\n if (accudraw.locked & LockedStates.ANGLE_BM) { // angle locked (unlock it)\n accudraw.setFieldLock(ItemField.ANGLE_Item, false);\n accudraw.locked &= ~LockedStates.ANGLE_BM;\n } else if (accudraw.getFieldLock(ItemField.DIST_Item)) { // distance locked (unlock it)\n accudraw.setFieldLock(ItemField.DIST_Item, false);\n accudraw.locked &= ~LockedStates.DIST_BM;\n } else if (isSnapped) {\n accudraw.doLockAngle(isSnapped);\n } else if (accudraw.indexed & LockedStates.ANGLE_BM) { // angle indexed (lock it)\n accudraw.angleLock();\n } else {\n if (Math.abs(accudraw.vector.dotProduct(accudraw.axes.x)) > Math.abs(accudraw.vector.dotProduct(accudraw.axes.y)))\n accudraw.indexed |= LockedStates.Y_BM;\n else\n accudraw.indexed |= LockedStates.X_BM;\n accudraw.angleLock();\n }\n accudraw.refreshDecorationsAndDynamics();\n return;\n }\n\n if (accudraw.locked) { // if locked, unlock\n accudraw.clearTentative();\n accudraw.locked &= ~LockedStates.XY_BM;\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.setFieldLock(ItemField.Y_Item, false);\n if (accudraw.getFieldLock(ItemField.Z_Item) && accudraw.delta.z === 0.0 && !accudraw.stickyZLock)\n accudraw.setFieldLock(ItemField.Z_Item, false);\n } else { // lock to nearest axis\n if (accudraw.clearTentative()) {\n if (Math.abs(accudraw.delta.x) >= Geometry.smallAngleRadians && Math.abs(accudraw.delta.y) >= Geometry.smallAngleRadians) {\n accudraw.doLockAngle(false);\n return;\n }\n }\n\n const vp = accudraw.currentView;\n if (Math.abs(accudraw.delta.x) > Math.abs(accudraw.delta.y)) {\n accudraw.delta.y = 0.0;\n accudraw.onFieldValueChange(ItemField.Y_Item);\n accudraw.locked |= LockedStates.Y_BM;\n accudraw.locked &= ~LockedStates.X_BM;\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.setFieldLock(ItemField.Y_Item, true);\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\n } else {\n accudraw.delta.x = 0.0;\n accudraw.onFieldValueChange(ItemField.X_Item);\n accudraw.locked |= LockedStates.X_BM;\n accudraw.locked &= ~LockedStates.Y_BM;\n accudraw.setFieldLock(ItemField.Y_Item, false);\n accudraw.setFieldLock(ItemField.X_Item, true);\n accudraw.setFieldLock(ItemField.Z_Item, vp ? vp.view.is3d() : false);\n }\n\n if (!accudraw.flags.lockedRotation) {\n accudraw.flags.lockedRotation = true;\n accudraw.flags.contextRotMode = ContextMode.Locked;\n accudraw.setRotationMode(RotationMode.Context);\n }\n }\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static lockX(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.clearTentative();\n\n if (CompassMode.Rectangular !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.fixPointRectangular(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.X_Item)) {\n accudraw.setFieldLock(ItemField.X_Item, false);\n accudraw.locked = accudraw.locked & ~LockedStates.X_BM;\n } else {\n accudraw.saveCoordinate(ItemField.X_Item, accudraw.delta.x);\n accudraw.setFieldLock(ItemField.X_Item, true);\n accudraw.locked = accudraw.locked | LockedStates.X_BM;\n }\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static lockY(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n accudraw.clearTentative();\n\n if (CompassMode.Rectangular !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.fixPointRectangular(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.Y_Item)) {\n accudraw.setFieldLock(ItemField.Y_Item, false);\n accudraw.locked = accudraw.locked & ~LockedStates.Y_BM;\n } else {\n accudraw.saveCoordinate(ItemField.Y_Item, accudraw.delta.y);\n accudraw.setFieldLock(ItemField.Y_Item, true);\n accudraw.locked = accudraw.locked | LockedStates.Y_BM;\n }\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static lockZ(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp || !vp.view.is3d())\n return;\n\n const isSnapped = accudraw.clearTentative();\n\n if (accudraw.getFieldLock(ItemField.Z_Item)) {\n accudraw.setFieldLock(ItemField.Z_Item, false);\n } else {\n // Move focus to Z field...\n if (!isSnapped && accudraw.autoFocusFields) {\n accudraw.setFocusItem(ItemField.Z_Item);\n accudraw.dontMoveFocus = true;\n }\n accudraw.setFieldLock(ItemField.Z_Item, true);\n }\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static lockDistance(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const isSnapped = accudraw.clearTentative();\n\n if (CompassMode.Polar !== accudraw.compassMode) {\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n accudraw.locked = 0;\n accudraw.fixPointPolar(vp);\n accudraw.changeCompassMode(true);\n }\n\n if (accudraw.getFieldLock(ItemField.DIST_Item)) {\n accudraw.setFieldLock(ItemField.DIST_Item, false);\n accudraw.locked &= ~LockedStates.DIST_BM;\n\n accudraw.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic); // Need to clear partial status if locked by entering distance since focus stays in distance field...\n } else {\n // Move focus to distance field...\n if (!isSnapped && accudraw.autoFocusFields)\n accudraw.setFocusItem(ItemField.DIST_Item);\n accudraw.distanceLock(true, true);\n }\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static lockAngle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n accudraw.doLockAngle(accudraw.clearTentative());\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public lockIndex(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (accudraw.flags.indexLocked) {\n if (accudraw.locked)\n AccuDrawShortcuts.lockSmart();\n\n accudraw.flags.indexLocked = false;\n } else {\n if (CompassMode.Polar === accudraw.compassMode) {\n if (accudraw.indexed & LockedStates.XY_BM) {\n accudraw.setFieldLock(ItemField.ANGLE_Item, true);\n accudraw.angleLock();\n }\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n AccuDrawShortcuts.lockDistance();\n } else {\n if (accudraw.indexed & LockedStates.X_BM) {\n AccuDrawShortcuts.lockX();\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n AccuDrawShortcuts.lockY();\n }\n\n if (accudraw.indexed & LockedStates.Y_BM) {\n AccuDrawShortcuts.lockY();\n\n if (accudraw.indexed & LockedStates.DIST_BM)\n AccuDrawShortcuts.lockX();\n }\n\n if (accudraw.indexed & LockedStates.DIST_BM && !(accudraw.indexed & LockedStates.XY_BM)) {\n if (accudraw.locked & LockedStates.X_BM)\n AccuDrawShortcuts.lockY();\n else\n AccuDrawShortcuts.lockX();\n }\n }\n\n accudraw.flags.indexLocked = true;\n }\n\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static setStandardRotation(rotation: RotationMode): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n if (RotationMode.Context === rotation) {\n const axes = accudraw.baseAxes.clone();\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\n accudraw.setContextRotation(axes.toMatrix3d(), false, true);\n accudraw.refreshDecorationsAndDynamics();\n return;\n } else {\n accudraw.flags.baseRotation = rotation;\n accudraw.setRotationMode(rotation);\n }\n accudraw.updateRotation(true);\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static alignView(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp)\n return;\n\n const newMatrix = accudraw.getRotation();\n if (newMatrix.isExactEqual(vp.rotation))\n return;\n\n const targetMatrix = newMatrix.multiplyMatrixMatrix(vp.rotation);\n const rotateTransform = Transform.createFixedPointAndMatrix(vp.view.getTargetPoint(), targetMatrix);\n const newFrustum = vp.getFrustum();\n newFrustum.multiply(rotateTransform);\n\n vp.view.setupFromFrustum(newFrustum);\n vp.synchWithView();\n vp.animateFrustumChange();\n\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static rotateToBase(): void { this.setStandardRotation(IModelApp.accuDraw.flags.baseRotation); }\n\n public static rotateToACS(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n // NOTE: Match current ACS orientation..reset auxRotationPlane to top!\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n this.setStandardRotation(RotationMode.ACS);\n }\n\n public static rotateCycle(): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const vp = accudraw.currentView;\n if (!vp || !vp.view.is3d())\n return;\n\n let rotation: RotationMode;\n switch (accudraw.rotationMode) {\n case RotationMode.View:\n case RotationMode.Side:\n rotation = RotationMode.Top;\n break;\n\n case RotationMode.Top:\n rotation = RotationMode.Front;\n break;\n\n case RotationMode.Front:\n rotation = RotationMode.Side;\n break;\n\n case RotationMode.Context:\n rotation = RotationMode.Context;\n\n if (rotation !== accudraw.flags.baseRotation) {\n accudraw.baseAxes.setFrom(accudraw.axes);\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n accudraw.flags.baseRotation = rotation;\n } else {\n const axes = accudraw.baseAxes.clone();\n accudraw.accountForAuxRotationPlane(axes, accudraw.flags.auxRotationPlane);\n if (!accudraw.axes.equals(axes))\n accudraw.changeBaseRotationMode(rotation);\n }\n\n switch (accudraw.flags.auxRotationPlane) {\n case RotationMode.Front:\n accudraw.flags.auxRotationPlane = RotationMode.Side;\n break;\n\n case RotationMode.Side:\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n break;\n\n case RotationMode.Top:\n accudraw.flags.auxRotationPlane = RotationMode.Front;\n break;\n }\n break;\n\n case RotationMode.ACS:\n rotation = RotationMode.ACS;\n switch (accudraw.flags.auxRotationPlane) {\n case RotationMode.Front:\n accudraw.flags.auxRotationPlane = RotationMode.Side;\n break;\n case RotationMode.Side:\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n break;\n case RotationMode.Top:\n accudraw.flags.auxRotationPlane = RotationMode.Front;\n break;\n }\n break;\n\n default:\n return;\n }\n\n this.setStandardRotation(rotation);\n }\n\n public static rotate90(axis: number): void {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return;\n\n const newRotation = new ThreeAxes();\n\n accudraw.locked = accudraw.indexed = 0;\n accudraw.unlockAllFields();\n\n switch (axis) {\n case 0:\n newRotation.x.setFrom(accudraw.axes.x);\n newRotation.z.setFrom(accudraw.axes.y);\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\n break;\n\n case 1:\n newRotation.x.setFrom(accudraw.axes.z);\n newRotation.y.setFrom(accudraw.axes.y);\n newRotation.x.crossProduct(newRotation.y, newRotation.z);\n break;\n\n case 2:\n newRotation.x.setFrom(accudraw.axes.y);\n newRotation.z.setFrom(accudraw.axes.z);\n newRotation.z.crossProduct(newRotation.x, newRotation.y);\n break;\n }\n\n accudraw.setContextRotation(newRotation.toMatrix3d(), true, true);\n accudraw.refreshDecorationsAndDynamics();\n }\n\n public static async rotateAxes(aboutCurrentZ: boolean) {\n return IModelApp.tools.run(\"AccuDraw.RotateAxes\", aboutCurrentZ);\n }\n\n public static async rotateToElement() {\n return IModelApp.tools.run(\"AccuDraw.RotateElement\");\n }\n\n public static async defineACSByElement() {\n return IModelApp.tools.run(\"AccuDraw.DefineACSByElement\");\n }\n\n public static async defineACSByPoints() {\n return IModelApp.tools.run(\"AccuDraw.DefineACSByPoints\");\n }\n\n public static getACS(acsName: string | undefined, useOrigin: boolean, useRotation: boolean): BentleyStatus {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return BentleyStatus.ERROR;\n\n const vp = accudraw.currentView;\n if (!vp)\n return BentleyStatus.ERROR;\n\n let currRotation = 0, currBaseRotation = 0;\n const axes = new ThreeAxes();\n\n if (!useRotation) {\n // Save current rotation, event listener on ACS change will orient AccuDraw to ACS...\n currRotation = accudraw.rotationMode;\n currBaseRotation = accudraw.flags.baseRotation;\n axes.setFrom(accudraw.axes);\n }\n\n if (acsName && \"\" !== acsName) {\n // // See if this ACS already exists...\n // DgnCode acsCode = AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), acsName);\n // DgnElementId acsId = vp -> GetViewController().GetDgnDb().Elements().QueryElementIdByCode(acsCode);\n\n // if (!acsId.IsValid())\n // return ERROR;\n\n // AuxCoordSystemCPtr auxElm = vp -> GetViewController().GetDgnDb().Elements().Get<AuxCoordSystem>(acsId);\n\n // if (!auxElm.IsValid())\n // return ERROR;\n\n // AuxCoordSystemPtr acsPtr = auxElm -> MakeCopy<AuxCoordSystem>();\n\n // if (!acsPtr.IsValid())\n // return ERROR;\n\n // AuxCoordSystemCR oldACS = vp -> GetViewController().GetAuxCoordinateSystem();\n\n // if (!useOrigin)\n // acsPtr -> SetOrigin(oldACS.GetOrigin());\n\n // if (!useRotation)\n // acsPtr -> SetRotation(oldACS.GetRotation());\n\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\n }\n\n const currentACS = vp.view.auxiliaryCoordinateSystem;\n\n if (useOrigin) {\n accudraw.origin.setFrom(currentACS.getOrigin());\n accudraw.point.setFrom(accudraw.origin);\n accudraw.planePt.setFrom(accudraw.origin);\n }\n\n if (useRotation) {\n accudraw.flags.auxRotationPlane = RotationMode.Top;\n this.setStandardRotation(RotationMode.ACS);\n } else {\n this.itemFieldUnlockAll();\n\n accudraw.setRotationMode(currRotation);\n accudraw.flags.baseRotation = currBaseRotation;\n accudraw.axes.setFrom(axes);\n\n if (RotationMode.ACS === accudraw.flags.baseRotation) {\n const acs = currentACS.clone();\n\n const rMatrix = accudraw.getRotation();\n acs.setRotation(rMatrix);\n\n AccuDraw.updateAuxCoordinateSystem(acs, vp);\n }\n\n accudraw.published.flags &= ~AccuDrawFlags.OrientACS;\n }\n\n return BentleyStatus.SUCCESS;\n }\n\n public static writeACS(_acsName: string): BentleyStatus {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isEnabled)\n return BentleyStatus.ERROR;\n\n const vp = accudraw.currentView;\n if (!vp)\n return BentleyStatus.ERROR;\n\n // const origin = accudraw.origin;\n // const rMatrix = accudraw.getRotation();\n // AuxCoordSystemPtr acsPtr = AuxCoordSystem:: CreateFrom(vp -> GetViewController().GetAuxCoordinateSystem());\n // acsPtr -> SetOrigin(origin);\n // acsPtr -> SetRotation(rMatrix);\n // acsPtr -> SetType(CompassMode.Polar == accudraw.getCompassMode() ? ACSType :: Cylindrical : ACSType:: Rectangular);\n // acsPtr -> SetCode(AuxCoordSystem:: CreateCode(vp -> GetViewControllerR().GetViewDefinition(), nullptr != acsName ? acsName : \"\"));\n // acsPtr -> SetDescription(\"\");\n\n // if (acsName && '\\0' != acsName[0]) {\n // DgnDbStatus status;\n // acsPtr -> Insert(& status);\n\n // if (DgnDbStatus:: Success != status)\n // return BentleyStatus.ERROR;\n // }\n\n // AccuDraw:: UpdateAuxCoordinateSystem(* acsPtr, * vp);\n\n // accudraw.flags.baseRotation = RotationMode.ACS;\n // accudraw.SetRotationMode(RotationMode.ACS);\n\n return BentleyStatus.SUCCESS;\n }\n\n public static itemFieldUnlockAll(): void {\n const accudraw = IModelApp.accuDraw;\n if (accudraw.isEnabled)\n accudraw.unlockAllFields();\n }\n\n /** @internal Temporary keyboard shortcuts. */\n public static async processShortcutKey(keyEvent: KeyboardEvent) {\n switch (keyEvent.key.toLowerCase()) {\n case \"enter\":\n AccuDrawShortcuts.lockSmart();\n return true;\n case \"x\":\n AccuDrawShortcuts.lockX();\n return true;\n case \"y\":\n AccuDrawShortcuts.lockY();\n return true;\n case \"z\":\n AccuDrawShortcuts.lockZ();\n return true;\n case \"a\":\n AccuDrawShortcuts.lockAngle();\n return true;\n case \"d\":\n AccuDrawShortcuts.lockDistance();\n return true;\n case \"m\":\n AccuDrawShortcuts.changeCompassMode();\n return true;\n case \"t\":\n AccuDrawShortcuts.setStandardRotation(RotationMode.Top);\n return true;\n case \"f\":\n AccuDrawShortcuts.setStandardRotation(RotationMode.Front);\n return true;\n case \"s\":\n AccuDrawShortcuts.setStandardRotation(RotationMode.Side);\n return true;\n case \"v\":\n AccuDrawShortcuts.setStandardRotation(RotationMode.View);\n return true;\n case \"o\":\n AccuDrawShortcuts.setOrigin();\n return true;\n case \"c\":\n AccuDrawShortcuts.rotateCycle();\n return true;\n case \"q\":\n return AccuDrawShortcuts.rotateAxes(true);\n case \"e\":\n return AccuDrawShortcuts.rotateToElement();\n case \"r\":\n return AccuDrawShortcuts.defineACSByPoints();\n }\n\n return false;\n }\n}\n\n/** @internal */\nexport class AccuDrawSetOriginTool extends Tool {\n public static override toolId = \"AccuDraw.SetOrigin\";\n public override async run() {\n AccuDrawShortcuts.setOrigin();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawSetLockSmartTool extends Tool {\n public static override toolId = \"AccuDraw.LockSmart\";\n public override async run() {\n AccuDrawShortcuts.lockSmart();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawSetLockXTool extends Tool {\n public static override toolId = \"AccuDraw.LockX\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockX();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawSetLockYTool extends Tool {\n public static override toolId = \"AccuDraw.LockY\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockY();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawSetLockZTool extends Tool {\n public static override toolId = \"AccuDraw.LockZ\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockZ();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawSetLockDistanceTool extends Tool {\n public static override toolId = \"AccuDraw.LockDistance\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockDistance();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawSetLockAngleTool extends Tool {\n public static override toolId = \"AccuDraw.LockAngle\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.lockAngle();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawChangeModeTool extends Tool {\n public static override toolId = \"AccuDraw.ChangeMode\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.changeCompassMode();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawRotateCycleTool extends Tool {\n public static override toolId = \"AccuDraw.RotateCycle\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.rotateCycle();\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawRotateTopTool extends Tool {\n public static override toolId = \"AccuDraw.RotateTop\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Top);\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawRotateFrontTool extends Tool {\n public static override toolId = \"AccuDraw.RotateFront\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Front);\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawRotateSideTool extends Tool {\n public static override toolId = \"AccuDraw.RotateSide\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.Side);\n return true;\n }\n}\n\n/** @internal */\nexport class AccuDrawRotateViewTool extends Tool {\n public static override toolId = \"AccuDraw.RotateView\";\n public override async run(): Promise<boolean> {\n AccuDrawShortcuts.setStandardRotation(RotationMode.View);\n return true;\n }\n}\n\n/** @internal */\nabstract class AccuDrawShortcutsTool extends InputCollector {\n private _cancel: boolean;\n public constructor() {\n super();\n this._cancel = true;\n }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None);\n this.doManipulationStart();\n } // NOTE: InputCollector inherits suspended primitive's state, set everything...\n\n public override async onCleanup() { this.doManipulationStop(this._cancel); }\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (this.doManipulation(ev, false)) {\n this._cancel = false;\n await this.exitTool();\n }\n\n return EventHandled.No;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> { this.doManipulation(ev, true); }\n public override async exitTool() {\n await super.exitTool();\n AccuDrawShortcuts.requestInputFocus();\n } // re-grab focus when auto-focus tool setting set...\n\n public activateAccuDrawOnStart() { return true; }\n public doManipulationStart() {\n if (this.activateAccuDrawOnStart())\n IModelApp.accuDraw.activate();\n\n this.doManipulation(undefined, true);\n }\n\n public doManipulationStop(cancel: boolean) {\n if (!cancel)\n IModelApp.accuDraw.savedStateInputCollector.ignoreFlags = this.onManipulationComplete();\n }\n\n public onManipulationComplete(): AccuDrawFlags { return 0; }\n public abstract doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean;\n}\n\n/** @internal */\nexport class AccuDrawRotateAxesTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.RotateAxes\";\n public static override get maxArgs(): number { return 1; }\n protected _immediateMode: boolean = false;\n public constructor(public aboutCurrentZ: boolean = true) { super(); }\n\n public override async onInstall(): Promise<boolean> {\n const accudraw = IModelApp.accuDraw;\n if (!accudraw.isActive)\n return false; // Require compass to already be active for this shortcut...\n\n if (this.aboutCurrentZ)\n accudraw.changeBaseRotationMode(RotationMode.Context); // Establish current orientation as base; base Z is used when defining compass rotation by x axis...\n\n if (accudraw.clearTentative() || IModelApp.accuSnap.isHot ||\n (CompassMode.Polar === accudraw.compassMode && accudraw.getFieldLock(ItemField.ANGLE_Item)) ||\n (CompassMode.Polar !== accudraw.compassMode && accudraw.getFieldLock(ItemField.X_Item) && accudraw.getFieldLock(ItemField.Y_Item))) {\n if (AccuDrawShortcuts.rotateAxesByPoint(true, this.aboutCurrentZ)) {\n AccuDrawShortcuts.itemFieldUnlockAll();\n accudraw.refreshDecorationsAndDynamics();\n this._immediateMode = true;\n }\n }\n return true;\n }\n\n public override async onPostInstall() {\n if (this._immediateMode) {\n await this.exitTool();\n return;\n }\n return super.onPostInstall();\n }\n\n public override onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\n public override doManipulationStart(): void {\n super.doManipulationStart();\n CoreTools.outputPromptByKey(\"AccuDraw.RotateAxes.Prompts.FirstPoint\");\n }\n\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const vp = ev ? ev.viewport : IModelApp.accuDraw.currentView;\n if (!vp)\n return true;\n AccuDrawShortcuts.rotateAxesByPoint(TentativeOrAccuSnap.isHot, this.aboutCurrentZ);\n vp.invalidateDecorations();\n if (!isMotion)\n AccuDrawShortcuts.itemFieldUnlockAll();\n return true;\n }\n\n public override async parseAndRun(...args: any[]): Promise<boolean> {\n for (const arg of args) {\n if (arg.toLowerCase() === \"unlockedz\")\n this.aboutCurrentZ = false;\n }\n return this.run(args);\n }\n}\n\n/** @internal */\nexport class AccuDrawRotateElementTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.RotateElement\";\n public moveOrigin: boolean = !IModelApp.accuDraw.isActive; // By default use current origin if AccuDraw is already enabled...\n public override async onInstall(): Promise<boolean> { return IModelApp.accuDraw.isEnabled; } // Require compass to be enabled for this session...\n\n public override onManipulationComplete(): AccuDrawFlags {\n let ignoreFlags = AccuDrawFlags.SetRMatrix | AccuDrawFlags.Disable; // If AccuDraw wasn't active when the shortcut started, let it remain active for suspended tool when shortcut completes...\n if (this.moveOrigin)\n ignoreFlags |= AccuDrawFlags.SetOrigin;\n return ignoreFlags;\n }\n\n public override doManipulationStart(): void {\n super.doManipulationStart();\n CoreTools.outputPromptByKey(\"AccuDraw.RotateElement.Prompts.FirstPoint\");\n }\n\n public updateOrientation(snap: SnapDetail, vp: Viewport): boolean {\n const accudraw = IModelApp.accuDraw;\n const rMatrix = AccuDraw.getSnapRotation(snap, vp);\n if (undefined === rMatrix)\n return false;\n const origin = this.moveOrigin ? snap.snapPoint : accudraw.origin;\n accudraw.setContext(AccuDrawFlags.AlwaysSetOrigin | AccuDrawFlags.SetRMatrix, origin, rMatrix);\n return true;\n }\n\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const vp = ev ? ev.viewport : IModelApp.accuDraw.currentView;\n if (!vp)\n return true;\n\n const snapDetail = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined === snapDetail || !this.updateOrientation(snapDetail, vp))\n return true;\n\n if (undefined === ev)\n AccuDrawShortcuts.processPendingHints();\n if (!isMotion)\n IModelApp.accuDraw.changeBaseRotationMode(RotationMode.Context); // Hold temporary rotation for tool duration when not updating ACS...\n return true;\n }\n}\n\n/** @internal */\nexport class DefineACSByElementTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.DefineACSByElement\";\n private _origin = Point3d.create();\n private _rMatrix = Matrix3d.createIdentity();\n private _acs?: AuxCoordSystemState;\n\n public override activateAccuDrawOnStart(): boolean { return false; }\n public override onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\n\n public override doManipulationStart(): void {\n super.doManipulationStart();\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByElement.Prompts.FirstPoint\");\n }\n\n public updateOrientation(snap: SnapDetail, vp: Viewport): boolean {\n const rMatrix = AccuDraw.getSnapRotation(snap, vp);\n if (undefined === rMatrix)\n return false;\n this._origin = snap.snapPoint;\n this._rMatrix = rMatrix;\n return true;\n }\n\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n const vp = ev ? ev.viewport : undefined;\n if (!vp)\n return true;\n\n const snapDetail = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined === snapDetail || !this.updateOrientation(snapDetail, vp))\n return true;\n IModelApp.viewManager.invalidateDecorationsAllViews();\n if (isMotion)\n return true;\n\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n this._acs.setOrigin(this._origin);\n this._acs.setRotation(this._rMatrix);\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\n AccuDrawShortcuts.rotateToACS();\n return true;\n }\n\n public override decorate(context: DecorateContext): void {\n const vp = context.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n this._acs.setOrigin(this._origin);\n this._acs.setRotation(this._rMatrix);\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\n }\n}\n\n/** @internal */\nexport class DefineACSByPointsTool extends AccuDrawShortcutsTool {\n public static override toolId = \"AccuDraw.DefineACSByPoints\";\n private readonly _points: Point3d[] = [];\n private _acs?: AuxCoordSystemState;\n\n public override activateAccuDrawOnStart(): boolean { return false; }\n public override onManipulationComplete(): AccuDrawFlags { return AccuDrawFlags.SetRMatrix; }\n\n public override doManipulationStart(): void {\n super.doManipulationStart();\n const tentativePoint = IModelApp.tentativePoint;\n if (!tentativePoint.isActive) {\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.FirstPoint\");\n return;\n }\n\n const origin = tentativePoint.getPoint().clone();\n CoreTools.outputPromptByKey(\"AccuDraw.DefineACSByPoints.Prompts.SecondPoint\");\n IModelApp.accuDraw.setContext(AccuDrawFlags.SetOrigin | AccuDrawFlags.FixedOrigin, origin);\n this._points.push(origin);\n tentativePoint.clear(true);\n }\n\n public doManipulation(ev: BeButtonEvent | undefined, isMotion: boolean): boolean {\n if (!ev || !ev.viewport)\n return true;\n\n IModelApp.viewManager.invalidateDecorationsAllViews();\n if (isMotion)\n return false;\n\n IModelApp.accuDraw.activate();\n this._points.push(ev.point.clone());\n\n const vp = ev.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n if (AccuDrawShortcuts.updateACSByPoints(this._acs, vp, this._points, false)) {\n AccuDraw.updateAuxCoordinateSystem(this._acs, vp);\n AccuDrawShortcuts.rotateToACS();\n return true;\n }\n\n CoreTools.outputPromptByKey(`AccuDraw.DefineACSByPoints.Prompts${1 === this._points.length ? \".SecondPoint\" : \".NextPoint\"}`);\n return false;\n }\n\n public override decorate(context: DecorateContext): void {\n const tmpPoints: Point3d[] = [];\n this._points.forEach((pt) => tmpPoints.push(pt));\n\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\n tmpPoints.push(ev.point);\n\n const vp = context.viewport;\n if (!this._acs)\n this._acs = vp.view.auxiliaryCoordinateSystem.clone();\n\n AccuDrawShortcuts.updateACSByPoints(this._acs, vp, tmpPoints, true);\n this._acs.display(context, ACSDisplayOptions.Active | ACSDisplayOptions.Dynamics);\n }\n}\n"]}