bruce-cesium 5.7.9 → 5.8.1

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 (230) hide show
  1. package/dist/bruce-cesium.es5.js +32308 -0
  2. package/dist/bruce-cesium.es5.js.map +1 -0
  3. package/dist/bruce-cesium.umd.js +32232 -0
  4. package/dist/bruce-cesium.umd.js.map +1 -0
  5. package/dist/lib/bruce-cesium.js +76 -0
  6. package/dist/lib/bruce-cesium.js.map +1 -0
  7. package/dist/lib/internal/cesium-utils.js +109 -0
  8. package/dist/lib/internal/cesium-utils.js.map +1 -0
  9. package/dist/lib/internal/js-utils.js +22 -0
  10. package/dist/lib/internal/js-utils.js.map +1 -0
  11. package/dist/lib/internal/limited-log.js +17 -0
  12. package/dist/lib/internal/limited-log.js.map +1 -0
  13. package/dist/lib/rendering/cesium-animated-in-out.js +166 -0
  14. package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -0
  15. package/dist/lib/rendering/cesium-animated-property.js +1111 -0
  16. package/dist/lib/rendering/cesium-animated-property.js.map +1 -0
  17. package/dist/lib/rendering/entity-gatherer.js +327 -0
  18. package/dist/lib/rendering/entity-gatherer.js.map +1 -0
  19. package/dist/lib/rendering/entity-render-engine-model3d.js +689 -0
  20. package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -0
  21. package/dist/lib/rendering/entity-render-engine-point.js +984 -0
  22. package/dist/lib/rendering/entity-render-engine-point.js.map +1 -0
  23. package/dist/lib/rendering/entity-render-engine-polygon.js +669 -0
  24. package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -0
  25. package/dist/lib/rendering/entity-render-engine-polyline.js +415 -0
  26. package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -0
  27. package/dist/lib/rendering/entity-render-engine.js +442 -0
  28. package/dist/lib/rendering/entity-render-engine.js.map +1 -0
  29. package/dist/lib/rendering/getters/batched-data-getter.js +91 -0
  30. package/dist/lib/rendering/getters/batched-data-getter.js.map +1 -0
  31. package/dist/lib/rendering/getters/entity-filter-getter.js +634 -0
  32. package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -0
  33. package/dist/lib/rendering/getters/entity-globe.js +172 -0
  34. package/dist/lib/rendering/getters/entity-globe.js.map +1 -0
  35. package/dist/lib/rendering/menu-item-creator.js +354 -0
  36. package/dist/lib/rendering/menu-item-creator.js.map +1 -0
  37. package/dist/lib/rendering/menu-item-manager.js +464 -0
  38. package/dist/lib/rendering/menu-item-manager.js.map +1 -0
  39. package/dist/lib/rendering/relation-render-engine.js +235 -0
  40. package/dist/lib/rendering/relation-render-engine.js.map +1 -0
  41. package/dist/lib/rendering/render-managers/common/cesium-parabola.js +368 -0
  42. package/dist/lib/rendering/render-managers/common/cesium-parabola.js.map +1 -0
  43. package/dist/lib/rendering/render-managers/common/entity-label.js +703 -0
  44. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -0
  45. package/dist/lib/rendering/render-managers/common/point-clustering.js +826 -0
  46. package/dist/lib/rendering/render-managers/common/point-clustering.js.map +1 -0
  47. package/dist/lib/rendering/render-managers/common/shared-getters.js +187 -0
  48. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -0
  49. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js +668 -0
  50. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js.map +1 -0
  51. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js +92 -0
  52. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js.map +1 -0
  53. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +143 -0
  54. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -0
  55. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +510 -0
  56. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -0
  57. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +717 -0
  58. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -0
  59. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +999 -0
  60. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -0
  61. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +186 -0
  62. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -0
  63. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +226 -0
  64. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +1 -0
  65. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js +430 -0
  66. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js.map +1 -0
  67. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +290 -0
  68. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -0
  69. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +401 -0
  70. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -0
  71. package/dist/lib/rendering/render-managers/render-manager.js +276 -0
  72. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -0
  73. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +356 -0
  74. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -0
  75. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +861 -0
  76. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -0
  77. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +279 -0
  78. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -0
  79. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js +104 -0
  80. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js.map +1 -0
  81. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js +81 -0
  82. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js.map +1 -0
  83. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +378 -0
  84. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -0
  85. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +140 -0
  86. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -0
  87. package/dist/lib/rendering/tile-render-engine.js +1328 -0
  88. package/dist/lib/rendering/tile-render-engine.js.map +1 -0
  89. package/dist/lib/rendering/tileset-render-engine.js +588 -0
  90. package/dist/lib/rendering/tileset-render-engine.js.map +1 -0
  91. package/dist/lib/rendering/tileset-styler.js +590 -0
  92. package/dist/lib/rendering/tileset-styler.js.map +1 -0
  93. package/dist/lib/rendering/view-render-engine.js +1004 -0
  94. package/dist/lib/rendering/view-render-engine.js.map +1 -0
  95. package/dist/lib/rendering/visual-register-culler.js +676 -0
  96. package/dist/lib/rendering/visual-register-culler.js.map +1 -0
  97. package/dist/lib/rendering/visuals-register.js +1741 -0
  98. package/dist/lib/rendering/visuals-register.js.map +1 -0
  99. package/dist/lib/utils/cesium-entity-styler.js +914 -0
  100. package/dist/lib/utils/cesium-entity-styler.js.map +1 -0
  101. package/dist/lib/utils/drawing-utils.js +308 -0
  102. package/dist/lib/utils/drawing-utils.js.map +1 -0
  103. package/dist/lib/utils/entity-utils.js +1382 -0
  104. package/dist/lib/utils/entity-utils.js.map +1 -0
  105. package/dist/lib/utils/measure-utils.js +73 -0
  106. package/dist/lib/utils/measure-utils.js.map +1 -0
  107. package/dist/lib/utils/simplify-geometry.js +323 -0
  108. package/dist/lib/utils/simplify-geometry.js.map +1 -0
  109. package/dist/lib/utils/view-utils.js +392 -0
  110. package/dist/lib/utils/view-utils.js.map +1 -0
  111. package/dist/lib/viewer/cesium-view-monitor.js +393 -0
  112. package/dist/lib/viewer/cesium-view-monitor.js.map +1 -0
  113. package/dist/lib/viewer/viewer-event-tracker.js +70 -0
  114. package/dist/lib/viewer/viewer-event-tracker.js.map +1 -0
  115. package/dist/lib/viewer/viewer-utils.js +310 -0
  116. package/dist/lib/viewer/viewer-utils.js.map +1 -0
  117. package/dist/lib/widgets/common/draw-3d-polygon.js +458 -0
  118. package/dist/lib/widgets/common/draw-3d-polygon.js.map +1 -0
  119. package/dist/lib/widgets/common/draw-3d-polyline.js +415 -0
  120. package/dist/lib/widgets/common/draw-3d-polyline.js.map +1 -0
  121. package/dist/lib/widgets/common/measure-creator.js +468 -0
  122. package/dist/lib/widgets/common/measure-creator.js.map +1 -0
  123. package/dist/lib/widgets/common/walkthrough.js +336 -0
  124. package/dist/lib/widgets/common/walkthrough.js.map +1 -0
  125. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js +36 -0
  126. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js.map +1 -0
  127. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js +437 -0
  128. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js.map +1 -0
  129. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js +38 -0
  130. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js.map +1 -0
  131. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js +219 -0
  132. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js.map +1 -0
  133. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js +304 -0
  134. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js.map +1 -0
  135. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js +29 -0
  136. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js.map +1 -0
  137. package/dist/lib/widgets/widget-bookmarks.js +497 -0
  138. package/dist/lib/widgets/widget-bookmarks.js.map +1 -0
  139. package/dist/lib/widgets/widget-branding.js +165 -0
  140. package/dist/lib/widgets/widget-branding.js.map +1 -0
  141. package/dist/lib/widgets/widget-cursorbar.js +1179 -0
  142. package/dist/lib/widgets/widget-cursorbar.js.map +1 -0
  143. package/dist/lib/widgets/widget-embedded-info-view.js +201 -0
  144. package/dist/lib/widgets/widget-embedded-info-view.js.map +1 -0
  145. package/dist/lib/widgets/widget-info-view.js +681 -0
  146. package/dist/lib/widgets/widget-info-view.js.map +1 -0
  147. package/dist/lib/widgets/widget-left-panel.js +548 -0
  148. package/dist/lib/widgets/widget-left-panel.js.map +1 -0
  149. package/dist/lib/widgets/widget-nav-compass.js +469 -0
  150. package/dist/lib/widgets/widget-nav-compass.js.map +1 -0
  151. package/dist/lib/widgets/widget-view-bar.js +284 -0
  152. package/dist/lib/widgets/widget-view-bar.js.map +1 -0
  153. package/dist/lib/widgets/widget.js +66 -0
  154. package/dist/lib/widgets/widget.js.map +1 -0
  155. package/dist/types/bruce-cesium.d.ts +58 -0
  156. package/dist/types/internal/cesium-utils.d.ts +23 -0
  157. package/dist/types/internal/js-utils.d.ts +8 -0
  158. package/dist/types/internal/limited-log.d.ts +6 -0
  159. package/dist/types/rendering/cesium-animated-in-out.d.ts +12 -0
  160. package/dist/types/rendering/cesium-animated-property.d.ts +245 -0
  161. package/dist/types/rendering/entity-gatherer.d.ts +36 -0
  162. package/dist/types/rendering/entity-render-engine-model3d.d.ts +56 -0
  163. package/dist/types/rendering/entity-render-engine-point.d.ts +73 -0
  164. package/dist/types/rendering/entity-render-engine-polygon.d.ts +26 -0
  165. package/dist/types/rendering/entity-render-engine-polyline.d.ts +47 -0
  166. package/dist/types/rendering/entity-render-engine.d.ts +108 -0
  167. package/dist/types/rendering/getters/batched-data-getter.d.ts +28 -0
  168. package/dist/types/rendering/getters/entity-filter-getter.d.ts +104 -0
  169. package/dist/types/rendering/getters/entity-globe.d.ts +21 -0
  170. package/dist/types/rendering/menu-item-creator.d.ts +53 -0
  171. package/dist/types/rendering/menu-item-manager.d.ts +85 -0
  172. package/dist/types/rendering/relation-render-engine.d.ts +32 -0
  173. package/dist/types/rendering/render-managers/common/cesium-parabola.d.ts +39 -0
  174. package/dist/types/rendering/render-managers/common/entity-label.d.ts +82 -0
  175. package/dist/types/rendering/render-managers/common/point-clustering.d.ts +91 -0
  176. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +41 -0
  177. package/dist/types/rendering/render-managers/data-source/data-source-static-csv-manager.d.ts +41 -0
  178. package/dist/types/rendering/render-managers/data-source/data-source-static-kml-manager.d.ts +25 -0
  179. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +31 -0
  180. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +76 -0
  181. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +90 -0
  182. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +90 -0
  183. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +42 -0
  184. package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +38 -0
  185. package/dist/types/rendering/render-managers/other/google-search-render-manager.d.ts +45 -0
  186. package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +60 -0
  187. package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +53 -0
  188. package/dist/types/rendering/render-managers/render-manager.d.ts +30 -0
  189. package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +37 -0
  190. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +86 -0
  191. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +41 -0
  192. package/dist/types/rendering/render-managers/tilesets/tileset-google-photos-render-manager.d.ts +26 -0
  193. package/dist/types/rendering/render-managers/tilesets/tileset-i3s-render-manager.d.ts +25 -0
  194. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +48 -0
  195. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +27 -0
  196. package/dist/types/rendering/tile-render-engine.d.ts +80 -0
  197. package/dist/types/rendering/tileset-render-engine.d.ts +99 -0
  198. package/dist/types/rendering/tileset-styler.d.ts +86 -0
  199. package/dist/types/rendering/view-render-engine.d.ts +32 -0
  200. package/dist/types/rendering/visual-register-culler.d.ts +18 -0
  201. package/dist/types/rendering/visuals-register.d.ts +361 -0
  202. package/dist/types/utils/cesium-entity-styler.d.ts +103 -0
  203. package/dist/types/utils/drawing-utils.d.ts +59 -0
  204. package/dist/types/utils/entity-utils.d.ts +133 -0
  205. package/dist/types/utils/measure-utils.d.ts +20 -0
  206. package/dist/types/utils/simplify-geometry.d.ts +19 -0
  207. package/dist/types/utils/view-utils.d.ts +101 -0
  208. package/dist/types/viewer/cesium-view-monitor.d.ts +35 -0
  209. package/dist/types/viewer/viewer-event-tracker.d.ts +47 -0
  210. package/dist/types/viewer/viewer-utils.d.ts +88 -0
  211. package/dist/types/widgets/common/draw-3d-polygon.d.ts +62 -0
  212. package/dist/types/widgets/common/draw-3d-polyline.d.ts +50 -0
  213. package/dist/types/widgets/common/measure-creator.d.ts +60 -0
  214. package/dist/types/widgets/common/walkthrough.d.ts +37 -0
  215. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-fullscreen.d.ts +10 -0
  216. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-search.d.ts +18 -0
  217. package/dist/types/widgets/controls-view-bar/widget-control-view-bar.d.ts +23 -0
  218. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.d.ts +11 -0
  219. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-user.d.ts +24 -0
  220. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab.d.ts +17 -0
  221. package/dist/types/widgets/widget-bookmarks.d.ts +40 -0
  222. package/dist/types/widgets/widget-branding.d.ts +15 -0
  223. package/dist/types/widgets/widget-cursorbar.d.ts +48 -0
  224. package/dist/types/widgets/widget-embedded-info-view.d.ts +13 -0
  225. package/dist/types/widgets/widget-info-view.d.ts +21 -0
  226. package/dist/types/widgets/widget-left-panel.d.ts +73 -0
  227. package/dist/types/widgets/widget-nav-compass.d.ts +27 -0
  228. package/dist/types/widgets/widget-view-bar.d.ts +37 -0
  229. package/dist/types/widgets/widget.d.ts +29 -0
  230. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-utils.js","sourceRoot":"","sources":["../../../src/utils/entity-utils.ts"],"names":[],"mappings":";;;AAAA,+CAAgH;AAChH,iCAAiC;AAGjC,mDAA+C;AAC/C,mDAA+C;AAC/C,mDAAoD;AACpD,iEAA4D;AAE5D,yDAAqD;AACrD,6CAAyC;AAGzC,SAAS,cAAc,CACnB,OAA4C,EAC5C,GAA0C,EAC1C,YAAqB,EACrB,YAAqB,EACrB,cAAuB;IAEvB,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE;QACxC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;KACnF;IACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC5C,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;SACpE;KACJ;IACD,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,EAAE;QAChF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;AACL,CAAC;AAED,SAAS,QAAQ,CAAI,MAAqB,EAAE,GAA0B;IAClE,IAAK,GAAW,aAAX,GAAG,uBAAH,GAAG,CAAU,QAAQ,EAAE;QACxB,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE;YACP,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;SACnC;QACD,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC7B;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,CAAC,OAAmC,EAIjE,EAAE;;IACA,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,KAAsB,EAAE,EAAE;QACjE,KAAK,GAAG,CAAC,KAAK,CAAC;QACf,iFAAiF;QACjF,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE;YAC3B,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACxC;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAChD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACxC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,KAAsB,EAAE,EAAE;QAClE,KAAK,GAAG,CAAC,KAAK,CAAC;QACf,iFAAiF;QACjF,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE;YAC7B,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACxC;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAChE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACxC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG;QACX,QAAQ,EAAE;YACN,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,CAAC;SACd;QACD,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,IAAI;KACf,CAAC;IAEF,8EAA8E;IAC9E,MAAM,UAAU,GAAG,OAAc,CAAC;IAClC,IAAI,aAAa,GAAa,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAA,UAAU,CAAC,cAAc,0DAAI,CAAC;IAC1H,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAChC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpF,SAAS;SACZ;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACjC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtF,SAAS;SACZ;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC9B,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC/C,SAAS;SACZ;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC/B,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC3B,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;aAChC;YACD,SAAS;SACZ;KACJ;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE;QACvE,OAAO,IAAI,CAAC;KACf;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,SAAS,kBAAkB,CAAC,MAAsB,EAAE,UAAmB;IACnE,IAAI,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAEtD,4CAA4C;IAC5C,+EAA+E;IAC/E,IAAI,UAAU,EAAE;QACZ,aAAa,GAAG,IAAI,CAAC;KACxB;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC;IACzD,IAAI,CAAC,aAAa,EAAE;QAChB,OAAO,IAAI,CAAC;KACf;IAED,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb;QACI,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAC1C,IAAI,UAAU,EAAE;YACZ,IAAI,UAAU,CAAC,OAAO,EAAE;gBACpB,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;aAChC;YACD,IAAI,UAAU,CAAC,KAAK,EAAE;gBAClB,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;aAC5B;YACD,IAAI,UAAU,CAAC,IAAI,EAAE;gBACjB,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;aAC1B;SACJ;KACJ;IAED,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CACrC,IAAA,uBAAY,EAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAAC,EACtC,IAAA,uBAAY,EAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,CAAC,EACrC,IAAA,uBAAY,EAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,CAAC,CACxC,CAAC;IACF,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,OAAO,CAAC,EAAE,IAAA,uBAAY,EAAC,KAAK,CAAC,EAAE,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/I,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtG,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvF,OAAO,KAAK,CAAC;AACjB,CAAC;AAAA,CAAC;AAmCF,IAAiB,WAAW,CAi1C3B;AAj1CD,WAAiB,WAAW;IACxB;;;;;OAKG;IACI,KAAK,UAAU,WAAW,CAAC,MAAoB;;QAKlD,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC9E,IAAI,CAAC,UAAU,EAAE;YACb,UAAU,GAAG,CAAC,CAAC;SAClB;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;SACvB;QAED,MAAM,4BAA4B,GAAG,IAAI,CAAC;QAC1C,MAAM,mBAAmB,GAAG,EAAE,CAAC;QAC/B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,0EAA0E;QAC1E,8FAA8F;QAC9F,MAAM,UAAU,GAAG,MAAM,CAAC,uBAAuB,CAAC,KAAK,IAAI,CAAC;QAE5D,6EAA6E;QAC7E,IAAI,UAAU,GAAW,IAAI,CAAC;QAC9B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAChB,SAAS;aACZ;YACD,MAAM,eAAe,GAAG,MAAA,MAAA,MAAM,CAAC,MAAM,CAAC,KAAK,0CAAE,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC9E,IAAI,CAAC,eAAe,EAAE;gBAClB,SAAS;aACZ;YACD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAI,CAAC,UAAU,IAAI,CAAA,MAAA,IAAI,IAAI,CAAC,UAAU,CAAC,0CAAE,OAAO,EAAE,KAAG,MAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,0CAAE,OAAO,EAAE,CAAA,EAAE;gBAChG,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC;aACzC;SACJ;QAED,MAAM,IAAI,GAIN;YACA,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACf,CAAC;QACF,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAwB,EAAE,SAAiC,EAAE,EAAE;YAC3F,iCAAiC;YACjC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,EAAE;gBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE;oBACjB,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,kBAAkB,IAAI,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;wBACzH,0DAA0D;wBAC1D,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE;4BACrE,IAAI,cAAc,GAAG,mBAAmB,EAAE;gCACtC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;6BACpD;iCACI;gCACD,MAAM,QAAQ,GAAG,MAAM,4BAAY,CAAC,gBAAgB,CAAC;oCACjD,KAAK;oCACL,MAAM;iCACT,CAAC,CAAA;gCACF,UAAU,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC;gCAC9B,cAAc,IAAI,CAAC,CAAC;6BACvB;yBACJ;6BACI;4BACD,UAAU,GAAG,CAAC,CAAC;yBAClB;qBACJ;oBACD,IAAI,UAAU,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;wBAC/C,MAAM,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;wBACvC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;4BACvB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;yBACzB;wBACD,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;qBACpG;iBACJ;aACJ;YACD,iCAAiC;iBAC5B,IAAI,UAAU,EAAE;gBACjB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE;oBACjB,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;iBACpG;aACJ;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QAEF;;;;WAIG;QACH,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAA2B,EAAE,MAA0B,EAAE,EAAE;YACvF,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE;gBAChB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBACnC,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;gBAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpC,IAAI,SAAS,IAAI,IAAI,IAAI,eAAe,IAAI,IAAI,IAAI,SAAS,IAAI,eAAe,EAAE;wBAC9E,MAAM,CAAC,CAAC,CAAC,GAAG,4BAAY,CAAC,eAAe,CAAC;4BACrC,gBAAgB,EAAE,eAAe;4BACjC,SAAS,EAAE,SAAS;4BACpB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;4BAChB,MAAM,EAAE,MAAM;yBACjB,CAAC,CAAC;qBACN;oBACD,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;iBAClE;aACJ;QACL,CAAC,CAAC;QAEF;;;;;WAKG;QACH,MAAM,0BAA0B,GAAG,KAAK,EAAE,MAA0B,EAAgC,EAAE;YAClG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;YAEpD;;eAEG;YACH,MAAM,gBAAgB,GAAG,KAAK,IAAkC,EAAE;;gBAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;oBACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;iBAChC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACV,IAAI,CAAC,IAAI,EAAE;oBACP,OAAO,EAAE,CAAC;iBACb;gBAED,sFAAsF;gBACtF,gEAAgE;gBAChE,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAClC,MAAM,QAAQ,GAAG,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0CAAE,QAAQ,CAAC;oBACjE,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;wBAC3D,YAAY;wBACZ,OAAO,EAAE,CAAC;qBACb;iBACJ;gBAED,0FAA0F;gBAC1F,kDAAkD;gBAClD,IAAI,IAAI,CAAC,MAAM,YAAY,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;oBAC3G,mBAAmB;oBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAoE,CAAC;oBACjG,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAE;wBACvB,qFAAqF;wBACrF,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,YAAY,CAAC,GAAG,0CAAE,QAAQ,CAAC;wBACpD,IAAI,QAAQ,EAAE;4BACV,MAAM,QAAQ,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;4BACjD,MAAM,SAAS,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;4BAEnD,iBAAiB;4BACjB,IAAI,QAAQ,IAAI,SAAS,EAAE;gCACvB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAA,uBAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gCAClG,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC;gCACzB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gCACzC,OAAO,QAAQ,CAAC;6BACnB;yBACJ;qBACJ;iBACJ;gBAED,IAAI,MAAM,GAAwB,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,YAAY,CAAC;oBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACtB,CAAC,CAAC;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,IAAI,YAAY,MAAM,CAAC,MAAM,EAAE;wBAC/B,IAAI,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC;wBAChE,IAAI,IAAI,CAAC,KAAK,EAAE;4BACZ,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;yBAC1F;6BACI,IAAI,IAAI,CAAC,OAAO,EAAE;4BACnB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;4BACzF,MAAM,SAAS,GAAG,QAAQ,CAA0B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BACpF,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,EAAE;gCACtB,uDAAuD;gCACvD,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACtE,MAAM,aAAa,GAAG,EAAE,CAAC;gCACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gCACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE;oCAC3C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iCAClC;gCACD,MAAM,gBAAgB,CAAC,aAAa,EAAE;oCAClC,GAAG,MAAM;oCACT,SAAS,EAAE,eAAe;iCAC7B,CAAC,CAAC;gCACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;6BACzC;yBACJ;6BACI,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACpB,eAAe,GAAG,QAAQ,CAAU,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;gCACtE,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;4BAEzE,IAAI,OAAO,GAAG,QAAQ,CAAsB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;4BAC7E,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;gCACjB,wDAAwD;gCACxD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACpD,MAAM,aAAa,GAAG,EAAE,CAAC;gCACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gCACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE;oCAC3C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iCAClC;gCAED,MAAM,gBAAgB,CAAC,aAAa,EAAE;oCAClC,GAAG,MAAM;oCACT,SAAS,EAAE,eAAe;iCAC7B,CAAC,CAAC;gCACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;6BACzC;yBACJ;6BACI,IAAI,IAAI,CAAC,SAAS,EAAE;4BACrB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;yBAC9F;6BACI,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACpB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;4BAE1F,IAAI,OAAO,GAAG,QAAQ,CAAsB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;4BAC7E,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;gCACjB,wDAAwD;gCACxD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACpD,MAAM,aAAa,GAAG,EAAE,CAAC;gCACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gCACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE;oCAC3C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iCAClC;gCAED,MAAM,gBAAgB,CAAC,aAAa,EAAE;oCAClC,GAAG,MAAM;oCACT,SAAS,EAAE,eAAe;iCAC7B,CAAC,CAAC;gCACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;6BACzC;yBACJ;6BACI,IAAI,IAAI,CAAC,OAAO,EAAE;4BACnB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;yBAC5F;6BACI,IAAI,IAAI,CAAC,KAAK,EAAE;4BACjB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;yBAC1F;wBAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;4BAC5D,IAAI,KAAK,GAAG,QAAQ,CAAoB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAC/D,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,EAAE;gCACV,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC;gCACzB,MAAM,gBAAgB,CAAC,QAAQ,EAAE;oCAC7B,GAAG,MAAM;oCACT,SAAS,EAAE,eAAe;iCAC7B,CAAC,CAAC;gCACH,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gCACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCAEnB,IAAI,IAAI,CAAC,KAAK,EAAE;oCACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAA2C,CAAC;oCAClE,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE;wCAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wCACzD,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;wCACjC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qCACxB;iCACJ;qCACI,IAAI,IAAI,CAAC,OAAO,EAAE;oCACnB,IAAI,aAAa,GAAG,QAAQ,CAAS,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oCACzE,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;wCACxC,aAAa,GAAG,CAAC,CAAC;qCACrB;oCACD,IAAI,aAAa,GAAG,QAAQ,CAAS,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oCACzE,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;wCACxC,aAAa,GAAG,CAAC,CAAC;qCACrB;oCACD,IAAI,MAAM,GAAG,QAAQ,CAAS,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oCACnE,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;wCAC1B,MAAM,GAAG,CAAC,CAAC;qCACd;oCACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;oCAC9D,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE;wCACtB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;wCACxD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qCACxB;iCACJ;6BACJ;yBACJ;qBACJ;yBACI,IAAI,IAAI,YAAY,MAAM,CAAC,mBAAmB,EAAE;wBACjD,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;wBAC1C,IAAI,IAAI,IAAI,IAAI,EAAE;4BACd,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;4BACnH,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC;4BACzB,MAAM,gBAAgB,CAAC,QAAQ,EAAE;gCAC7B,GAAG,MAAM;gCACT,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI;6BACnG,CAAC,CAAC;4BACH,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;4BACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACnB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gCAC5C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gCAC7D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;6BACxB;yBACJ;qBACJ;iBACJ;gBACD,OAAO,MAAM,CAAC;YAClB,CAAC,CAAC;YAEF,IAAI,gBAAgB,IAAI,IAAI,EAAE;gBAC1B,MAAM,cAAc,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBAChD,IAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,EAAE;oBACxB,OAAO,cAAc,CAAC;iBACzB;aACJ;YACD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC;QAEF;;;;WAIG;QACH,MAAM,wBAAwB,GAAG,KAAK,EAAE,MAA0B,EAAgC,EAAE;;YAChG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;YACpD,MAAM,gBAAgB,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,oBAAoB,KAAI,IAAI,CAAC;YAErE;;eAEG;YACH,MAAM,cAAc,GAAG,KAAK,IAAkC,EAAE;gBAC5D,IAAI,MAAM,GAAwB,EAAE,CAAC;gBAErC,MAAM,QAAQ,GAAG,qBAAM,CAAC,QAAQ,CAAC;oBAC7B,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;iBAC9B,CAAC,CAAC;gBACH,IAAI,QAAQ,IAAI,OAAO,QAAQ,IAAI,QAAQ,IAAI,oBAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;oBAC1E,MAAM,QAAQ,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACjD,MAAM,SAAS,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACnD,iBAAiB;oBACjB,IAAI,QAAQ,IAAI,SAAS,EAAE;wBACvB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAA,uBAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAClG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACtB;iBACJ;gBAED,MAAM,QAAQ,GAAG,qBAAM,CAAC,QAAQ,CAAC;oBAC7B,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;iBACpC,CAAC,CAAC;gBACH,IAAI,QAAQ,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;oBACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;oBAChC,uEAAuE;oBACvE,sEAAsE;oBACtE,IAAI,QAAQ,IAAI,OAAO,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,EAAE;wBAClE,MAAM,MAAM,GAAG,uBAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;wBAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACnD,IAAI,KAAK,IAAI,oBAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;4BACrC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAA,uBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAA,uBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACvI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACtB;qBACJ;oBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;oBACpC,IAAI,OAAO,IAAI,OAAO,OAAO,IAAI,QAAQ,EAAE;wBACvC,MAAM,MAAM,GAAG,uBAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;4BACnB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;4BAC9I,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BACxC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;yBACnC;qBACJ;oBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;oBAChC,IAAI,MAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;wBACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,uBAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;wBACnF,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE;4BACtB,MAAM,MAAM,GAAG,uBAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;4BACzD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;4BAC9I,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BACxC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;yBACnC;qBACJ;iBACJ;gBAED,MAAM,UAAU,GAAG,qBAAM,CAAC,QAAQ,CAAC;oBAC/B,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,CAAC,mBAAmB,CAAC;iBAC9B,CAAC,CAAC;gBACH,IAAI,UAAU,IAAI,OAAO,UAAU,IAAI,QAAQ,EAAE;oBAC7C,MAAM,KAAK,GAAiB;wBACxB,QAAQ,EAAE,CAAC,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;wBAC3F,SAAS,EAAE,CAAC,IAAA,uBAAY,EAAC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAA,uBAAY,EAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;wBAC9F,QAAQ,EAAE,CAAC;qBACd,CAAC;oBACF,iBAAiB;oBACjB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;wBACnC,MAAM,OAAO,GAAG;4BACZ,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,UAAU,CAAC,YAAY,CAAC,EAAE,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC;4BAChJ,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,UAAU,CAAC,YAAY,CAAC,EAAE,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC;yBACnJ,CAAC;wBACF,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBACxC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;qBACnC;iBACJ;gBACD,OAAO,MAAM,CAAC;YAClB,CAAC,CAAC;YAEF,IAAI,gBAAgB,EAAE;gBAClB,IAAI,KAAK,GAAsB,IAAI,CAAC;gBACpC,IAAI,UAAU,EAAE;oBACZ,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;iBAClD;qBACI;oBACD,MAAM,SAAS,GAAG,qBAAM,CAAC,QAAQ,CAAC;wBAC9B,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;qBAC9B,CAAC,CAAC;oBACH,IAAI,SAAS,IAAI,IAAI,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,oBAAoB,KAAI,IAAI,EAAE;wBAClE,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CACjC,IAAA,uBAAY,EAAC,SAAS,CAAC,SAAS,CAAC,EACjC,IAAA,uBAAY,EAAC,SAAS,CAAC,QAAQ,CAAC,EAChC,IAAA,uBAAY,EAAC,SAAS,CAAC,QAAQ,CAAC,CACnC,CAAC;qBACL;iBACJ;gBAED,IAAI,KAAK,EAAE;oBACP,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAEnE,MAAM,cAAc,GAAG,qBAAM,CAAC,QAAQ,CAAC;wBACnC,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;qBACpC,CAAC,CAAC;oBACH,IAAI,cAAc,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,CAAA,EAAE;wBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACzD,uFAAuF;wBACvF,IAAI,cAAc,IAAI,cAAc,GAAG,GAAG,IAAI,cAAc,GAAG,GAAG,EAAE;4BAChE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;4BAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;yBACxB;qBACJ;oBACD,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;aACJ;iBACI;gBACD,MAAM,YAAY,GAAG,MAAM,cAAc,EAAE,CAAC;gBAC5C,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,EAAE;oBACtB,+CAA+C;oBAC/C,IAAI;wBACA,IAAI,KAAK,GAAsB,IAAI,CAAC;wBACpC,MAAM,SAAS,GAAG,qBAAM,CAAC,QAAQ,CAAC;4BAC9B,MAAM,EAAE,MAAM;4BACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;yBAC9B,CAAC,CAAC;wBACH,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,KAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,oBAAoB,KAAI,IAAI,EAAE;4BACrE,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CACjC,IAAA,uBAAY,EAAC,SAAS,CAAC,SAAS,CAAC,EACjC,IAAA,uBAAY,EAAC,SAAS,CAAC,QAAQ,CAAC,EAChC,IAAA,uBAAY,EAAC,SAAS,CAAC,QAAQ,CAAC,CACnC,CAAC;4BACF,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,EAAE;gCACV,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;6BACtE;4BAED,MAAM,cAAc,GAAG,qBAAM,CAAC,QAAQ,CAAC;gCACnC,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;6BACpC,CAAC,CAAC;4BACH,IAAI,cAAc,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,CAAA,EAAE;gCAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gCACzD,uFAAuF;gCACvF,IAAI,cAAc,IAAI,cAAc,GAAG,GAAG,IAAI,cAAc,GAAG,GAAG,EAAE;oCAChE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;oCAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iCACxB;6BACJ;yBACJ;qBACJ;oBACD,OAAO,CAAC,EAAE;wBACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBACpB;oBAED,OAAO,YAAY,CAAC;iBACvB;aACJ;YACD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,8DAA8D;QAC9D,IAAI,SAAS,GAAwB,EAAE,CAAC;QAExC,IAAI,aAAa,GAAyB,EAAE,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAE9D,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,EAAE;gBACtB,8FAA8F;gBAC9F,oGAAoG;gBACpG,IAAI,KAAK,GAAG,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,CAAC;gBAC/B,IAAI,CAAC,KAAK,EAAE;oBACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;wBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACvC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;4BAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;4BAC/D,IAAI,QAAQ,GAAG,4BAA4B,EAAE;gCACzC,KAAK,GAAG,IAAI,CAAC;gCACb,MAAM;6BACT;yBACJ;wBACD,IAAI,KAAK,EAAE;4BACP,MAAM;yBACT;qBACJ;iBACJ;gBACD,IAAI,KAAK,EAAE;oBACP,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC3C,KAAK,GAAG,IAAI,CAAC;oBAEb,YAAY,IAAI,CAAC,CAAC;oBAClB,IAAI,YAAY,IAAI,iBAAiB,EAAE;wBACnC,MAAM;qBACT;iBACJ;aACJ;YACD,IAAI,CAAC,KAAK,EAAE;gBACR,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC9B;SACJ;QAED,kCAAkC;QAClC,IAAI;YACA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5F,IAAI,WAAW,CAAC,MAAM,EAAE;gBACpB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,qBAAM,CAAC,YAAY,CAAC;oBAC3C,SAAS,EAAE,WAAW;oBACtB,aAAa,EAAE,UAAU;oBACzB,cAAc,EAAE,IAAI;oBACpB,QAAQ,EAAE,IAAI;oBACd,GAAG;iBACN,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;gBACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtD;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;wBACnC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACpD;iBACJ;aACJ;YAED,sDAAsD;YACtD,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACzD;QACD,OAAO,CAAC,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpB;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,EAAE;gBACtB,8FAA8F;gBAC9F,oGAAoG;gBACpG,IAAI,KAAK,GAAG,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,CAAC;gBAC/B,IAAI,CAAC,KAAK,EAAE;oBACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;wBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACvC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;4BAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;4BAC/D,IAAI,QAAQ,GAAG,4BAA4B,EAAE;gCACzC,KAAK,GAAG,IAAI,CAAC;gCACb,MAAM;6BACT;yBACJ;wBACD,IAAI,KAAK,EAAE;4BACP,MAAM;yBACT;qBACJ;iBACJ;gBACD,IAAI,KAAK,EAAE;oBACP,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAE3C,YAAY,IAAI,CAAC,CAAC;oBAClB,IAAI,YAAY,IAAI,iBAAiB,EAAE;wBACnC,MAAM;qBACT;iBACJ;aACJ;SACJ;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC3F,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,MAAM,MAAM,GAAG,GAAG,CAAC;gBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;gBACrB,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;gBACrB,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;gBACtB,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBAEtB,uGAAuG;gBACvG,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACvC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACzB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;iBACjE;gBACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;oBACnB,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;iBACpC;gBACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE1F,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CACnC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EACpD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CACvD,CAAC;gBACF,IAAI,MAAM,IAAI,CAAC,EAAE;oBACb,MAAM,IAAI,CAAC,CAAC;iBACf;gBACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;aACxB;iBACI;gBACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aAC7B;SACJ;aACI,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACnF,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC5B;YACD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IArpBqB,uBAAW,cAqpBhC,CAAA;IAED;;;;;;OAMG;IACH,SAAgB,MAAM,CAAC,MAatB;;QACG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAC/D,IAAI,aAAa,IAAI,IAAI,EAAE;YACvB,aAAa,GAAG,IAAI,CAAC;SACxB;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,uBAAuB,CAAC,KAAK,IAAI,CAAC;QAC9D,MAAM,gBAAgB,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,oBAAoB,KAAI,IAAI,CAAC;QAErE,SAAS,gBAAgB;YACrB,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;gBACjD,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;aAC5B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEV,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,aAAY,MAAM,CAAC,MAAM,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAuB,CAAC;gBAC5C,IAAI,MAAM,CAAC,QAAQ,EAAE;oBACjB,IAAI,KAAK,GAAG,QAAQ,CAAoB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACjE,wBAAwB;oBACxB,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,EAAE;wBACV,IAAI,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC;wBAChE,IAAI,MAAM,CAAC,KAAK,EAAE;4BACd,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;yBAC5F;6BACI,IAAI,MAAM,CAAC,OAAO,EAAE;4BACrB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;yBAC9F;6BACI,IAAI,MAAM,CAAC,QAAQ,EAAE;4BACtB,eAAe,GAAG,QAAQ,CAAU,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;gCACxE,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;yBAC5E;6BACI,IAAI,MAAM,CAAC,SAAS,EAAE;4BACvB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;yBAChG;6BACI,IAAI,MAAM,CAAC,QAAQ,EAAE;4BACtB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;yBAC/F;6BACI,IAAI,MAAM,CAAC,OAAO,EAAE;4BACrB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;yBAC9F;6BACI,IAAI,MAAM,CAAC,KAAK,EAAE;4BACnB,eAAe,GAAG,QAAQ,CAAyB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;yBAC5F;wBACD,OAAO,4BAAY,CAAC,eAAe,CAAC;4BAChC,gBAAgB,EAAE,MAAM,CAAC,eAAe;4BACxC,SAAS,EAAE,eAAe;4BAC1B,KAAK,EAAE,KAAK;4BACZ,MAAM,EAAE,MAAM;yBACjB,CAAC,CAAC;qBACN;iBACJ;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,SAAS,cAAc;YACnB,IAAI,gBAAgB,EAAE;gBAClB,OAAO,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;aACnD;YAED,MAAM,QAAQ,GAAG,qBAAM,CAAC,QAAQ,CAAC;gBAC7B,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;aAC9B,CAAC,CAAC;YACH,IAAI,QAAQ,IAAI,OAAO,QAAQ,IAAI,QAAQ,IAAI,oBAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBAC1E,MAAM,QAAQ,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACjD,MAAM,SAAS,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAEnD,iBAAiB;gBACjB,IAAI,QAAQ,IAAI,SAAS,EAAE;oBACvB,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAA,uBAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAC9F;aACJ;YAED,MAAM,QAAQ,GAAG,qBAAM,CAAC,QAAQ,CAAC;gBAC7B,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;aACpC,CAAC,CAAC;YACH,IAAI,QAAQ,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;gBACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAChC,IAAI,QAAQ,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;oBACzC,MAAM,MAAM,GAAG,uBAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACnD,IAAI,KAAK,IAAI,oBAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;wBACrC,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAA,uBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAA,uBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACnI;iBACJ;gBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACpC,IAAI,OAAO,IAAI,OAAO,OAAO,IAAI,QAAQ,EAAE;oBACvC,MAAM,MAAM,GAAG,uBAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;wBACnB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBAC7I,MAAM,EAAC,WAAW,EAAE,MAAM,EAAC,GAAG,4BAAY,CAAC,eAAe,CAAC;4BACvD,MAAM;yBACT,CAAC,CAAC;wBACH,IAAI,MAAM,GAAG,CAAC,EAAE;4BACZ,MAAM,EAAC,KAAK,EAAC,GAAG,4BAAY,CAAC,mBAAmB,CAAC;gCAC7C,MAAM;gCACN,MAAM,EAAE,MAAM;gCACd,QAAQ,EAAE,MAAM,GAAG,CAAC;6BACvB,CAAC,CAAC;4BACH,IAAI,KAAK,IAAI,qBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gCACxC,OAAO,KAAK,CAAC;6BAChB;yBACJ;6BACI;4BACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;yBACpB;qBACJ;iBACJ;gBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAChC,IAAI,MAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;oBACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,uBAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;oBACnF,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE;wBACtB,MAAM,MAAM,GAAG,uBAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBACzD,MAAM,KAAK,GAAG,oBAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBACtC,IAAI,KAAK,IAAI,oBAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;4BACrC,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAA,uBAAY,EAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAA,uBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAA,uBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;yBACnI;qBACJ;iBACJ;aACJ;YAED,MAAM,UAAU,GAAG,qBAAM,CAAC,QAAQ,CAAC;gBAC/B,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;aAChC,CAAC,CAAC;YACH,IAAI,UAAU,IAAI,OAAO,UAAU,IAAI,QAAQ,EAAE;gBAC7C,MAAM,KAAK,GAAiB;oBACxB,QAAQ,EAAE,CAAC,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAA,uBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;oBAC3F,SAAS,EAAE,CAAC,IAAA,uBAAY,EAAC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAA,uBAAY,EAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;oBAC9F,QAAQ,EAAE,CAAC;iBACd,CAAC;gBACF,iBAAiB;gBACjB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;oBACnC,IAAI,oBAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;wBAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;qBACzF;iBACJ;aACJ;QACL,CAAC;QAED,IAAI,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,IAAI,qBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,KAAK,CAAC;SAChB;QACD,KAAK,GAAG,cAAc,EAAE,CAAC;QACzB,OAAO,4BAAY,CAAC,eAAe,CAAC;YAChC,gBAAgB,EAAE,MAAM,CAAC,eAAe;YACxC,SAAS,EAAE,MAAM,CAAC,eAAe;YACjC,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;IACP,CAAC;IArKe,kBAAM,SAqKrB,CAAA;IAED;;;;;;OAMG;IACI,KAAK,UAAU,WAAW,CAAC,MAoBjC;QACG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAEjG,kFAAkF;QAClF,6CAA6C;QAC7C,0EAA0E;QAC1E,wEAAwE;QAExE,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI;gBACA,MAAM,GAAG,CAAC,MAAM,qBAAM,CAAC,GAAG,CAAC;oBACvB,GAAG;oBACH,QAAQ;oBACR,cAAc,EAAE,KAAK;oBACrB,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC,CAAC,MAAM,CAAC;gBAEX,IAAI,MAAM,EAAE;oBACR,MAAM,QAAQ,GAAG,qBAAM,CAAC,QAAQ,CAAC;wBAC7B,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;qBAC9B,CAAC,CAAC;oBACH,GAAG,GAAG,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAA,CAAC;oBAC1B,GAAG,GAAG,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAA,CAAC;iBAC9B;aACJ;YACD,mEAAmE;YACnE,OAAO,CAAC,EAAE;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACpB;YAED,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChE,IAAI;oBACA,MAAM,GAAG,CAAC,MAAM,qBAAM,CAAC,GAAG,CAAC;wBACvB,GAAG;wBACH,QAAQ;wBACR,cAAc,EAAE,IAAI;wBACpB,QAAQ,EAAE,IAAI;qBACjB,CAAC,CAAC,CAAC,MAAM,CAAC;iBACd;gBACD,mDAAmD;gBACnD,OAAO,CAAC,EAAE;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM,GAAG,CAAC,MAAM,qBAAM,CAAC,GAAG,CAAC;wBACvB,GAAG;wBACH,QAAQ;wBACR,cAAc,EAAE,KAAK;wBACrB,QAAQ,EAAE,IAAI;qBACjB,CAAC,CAAC,CAAC,MAAM,CAAC;iBACd;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,GAAG,MAAM,CAAC;YACf,MAAM;YACN,MAAM;YACN,cAAc;YACd,eAAe;YACf,eAAe;SAClB,CAAC,CAAC;QACH,IAAI,qBAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,SAAS,GAAG,qBAAM,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAA,EAAE;YACvB,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CACjC,IAAA,uBAAY,EAAC,SAAS,CAAC,SAAS,CAAC,EACjC,IAAA,uBAAY,EAAC,SAAS,CAAC,QAAQ,CAAC,EAChC,IAAA,uBAAY,EAAC,SAAS,CAAC,QAAQ,CAAC,CACnC,CAAC;SACL;QACD,OAAO,4BAAY,CAAC,eAAe,CAAC;YAChC,gBAAgB,EAAE,MAAM,CAAC,eAAe;YACxC,SAAS,EAAE,MAAM,CAAC,eAAe;YACjC,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;IACP,CAAC;IA3GqB,uBAAW,cA2GhC,CAAA;IAED;;;OAGG;IACH,SAAgB,YAAY,CAAC,MAQ5B;QACG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC9C,IAAI,QAAQ,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,KAAK,CAAC;SACpB;QACD,IAAI,UAAU,IAAI,IAAI,EAAE;YACpB,UAAU,GAAG,KAAK,CAAC;SACtB;QACD,IAAI,MAAM,YAAY,MAAM,CAAC,MAAM,IAAI,MAAM,YAAY,MAAM,CAAC,mBAAmB,EAAE;YACjF,MAAM,OAAO,GAAG,MAAoD,CAAC;YACrE,MAAM,KAAK,GAA0C,EAAE,CAAC;YACxD,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAvBe,wBAAY,eAuB3B,CAAA;IAED;;;;OAIG;IACI,KAAK,UAAU,cAAc,CAAC,MAGpC;QACG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAElC,iEAAiE;QACjE,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAClB,OAAO;SACV;QAED,MAAM,CAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAE,GAAG,CAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,CAAE,CAAC;QACrJ,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC;QACzB,MAAM,QAAQ,GAAG,GAAG,CAAC;QAErB,MAAM,OAAO,GAAG,CAAC,CAAmB,EAAiC,EAAE;YACnE,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC;YACzB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACjG,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvB,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;gBACrB,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;gBAC3B,OAAO,CAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAE,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAkC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;YACjE,IAAI,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE;gBAChC,OAAO,CAAC,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC;aACrB;YACD,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE;gBAC5B,OAAO,CAAC,CAAE,MAAA,CAAC,CAAC,QAAQ,0CAAE,QAAQ,CAAC,WAAW,CAAE,EAAE,CAAC,CAAE,CAAC,CAAC;aACtD;YACD,IAAI,CAAC,YAAY,MAAM,CAAC,SAAS,EAAE;gBAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;aACrB;YACD,IAAI,CAAC,YAAY,MAAM,CAAC,mBAAmB,EAAE;gBACzC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;gBACnC,OAAO,CAAC,CAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAE,CAAC,CAAC;aACnC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,IAAmC,EAAE,EAAE;YACnD,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,GAAG,GAAG,CAAC;YACd,KAAK,MAAM,CAAE,CAAC,EAAE,CAAC,CAAE,IAAI,IAAI,EAAE;gBACzB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1C,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;aAClD;YACD,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAErE,OAAO,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE;YACjB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACtE,OAAO,CAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAE,CAAC;QAC1B,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAE,CAAC,EAAE,SAAS,EAAE,EAAE,CAAE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAEtC,IAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,CAAC,EAAE;YACN,MAAM,QAAQ,GAAG,MAAM,4BAAY,CAAC,gBAAgB,CAAC;gBACjD,KAAK,EAAE,CAAC;gBACR,MAAM;aACT,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE;gBAC3B,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;gBAC1B,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aACpF;YAED,MAAM,CAAC,KAAK,CAAC;gBACT,WAAW,EAAE,CAAC;gBACd,WAAW;gBACX,QAAQ;gBACR,QAAQ,EAAE,GAAG,EAAE;oBACX,iDAAiD;oBACjD,8CAA8C;oBAC9C,sCAAsC;oBACtC,oFAAoF;oBACpF,gCAAgC;oBAChC,sCAAsC;oBACtC,qCAAqC;oBAErC,8CAA8C;oBAC9C,qBAAqB;oBACrB,0BAA0B;oBAC1B,4CAA4C;oBAC5C,UAAU;oBACV,IAAI;gBACR,CAAC;aACJ,CAAC,CAAC;SACN;IACL,CAAC;IAhHqB,0BAAc,iBAgHnC,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,UAAU,CAAC,MAM1B;QACG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAC1D,yCAAkB,CAAC,UAAU,CAAC;YAC1B,MAAM;YACN,OAAO;YACP,MAAM;YACN,aAAa;SAChB,CAAC,CAAC;IACP,CAAC;IAde,sBAAU,aAczB,CAAA;IAED;;;;;OAKG;IACH,SAAgB,aAAa,CAAC,MAK7B;QACG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QACjD,yCAAkB,CAAC,YAAY,CAAC;YAC5B,MAAM;YACN,MAAM;YACN,aAAa;SAChB,CAAC,CAAC;IACP,CAAC;IAZe,yBAAa,gBAY5B,CAAA;IAED;;;;;;OAMG;IACH,SAAgB,UAAU,CAAC,MAE1B;QACG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,OAAO,yCAAkB,CAAC,UAAU,CAAC;YACjC,MAAM;SACT,CAAC,CAAC;IACP,CAAC;IAPe,sBAAU,aAOzB,CAAA;IAEM,KAAK,UAAU,KAAK,CAAC,MAU3B;;QACG,MAAM,IAAI,GAAG,sBAAS,CAAC,WAAW,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,0BAAW,CAAC,UAAU,CAAC;YACrE,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,eAAe,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC;YAC3C,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnC,QAAQ,EAAE,EAAE;gBACZ,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;gBAC5C,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,kBAAkB;aACvD,CAAC,CAAC;YACH,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,OAAO,CAAC,eAAe;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;YAC5C,OAAO;SACV;QAED,IAAI,WAAW,GAAyC,IAAI,CAAC;QAC7D,IAAI,KAAK,GAAW,EAAE,CAAC;QAEvB,MAAM,SAAS,GAAG,eAAe,CAAC;QAClC,IAAI,MAAM,CAAC,KAAK,EAAE;YACd,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAChD;QAED,IAAI,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,MAAM,EAAE;YAC1B,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;aAC9B;YACD,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YACrC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAEnC,IAAI,MAAM,CAAC,KAAK,EAAE;gBACd,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACvB,EAAE,EAAE,SAAS;oBACb,QAAQ,EAAE,WAAW;oBACrB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACpC,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;wBACpG,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;wBACzC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;qBAC/C,CAAC,CAAC,CAAC,IAAI;oBACR,KAAK,EAAE;wBACH,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;wBACvB,SAAS,EAAE,EAAE;wBACb,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;wBAChC,YAAY,EAAE,CAAC;wBACf,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;qBAC/C;iBACJ,CAAC,CAAC;aACN;SACJ;aACI,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,EAAE;YAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC9F,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACjE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC9F,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC;YAEzE,IAAI,IAAI,EAAE;gBACN,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC;aACpC;iBACI;gBACD,6EAA6E;gBAC7E,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACrE,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAEtG,IAAI,MAAM,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;wBACvB,EAAE,EAAE,SAAS;wBACb,QAAQ,EAAE,WAAW;wBACrB,SAAS,EAAE;4BACP,WAAW,EAAE,QAAQ,CAAC,SAAS;4BAC/B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;4BACzC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;yBAC/C;wBACD,KAAK,EAAE;4BACH,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;4BACvB,SAAS,EAAE,EAAE;4BACb,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;4BAChC,YAAY,EAAE,CAAC;4BACf,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;yBAC/C;qBACJ,CAAC,CAAC;iBACN;aACJ;SACJ;aACI,IAAI,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,CAAC,EAAE;YACzB,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;YAE7B,IAAI,MAAM,CAAC,KAAK,EAAE;gBACd,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACvB,EAAE,EAAE,SAAS;oBACb,QAAQ,EAAE,WAAW;oBACrB,KAAK,EAAE;wBACH,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;wBACvB,SAAS,EAAE,EAAE;wBACb,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;wBAChC,YAAY,EAAE,CAAC;wBACf,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;qBAC/C;iBACJ,CAAC,CAAC;aACN;SACJ;QAED,IAAI,WAAW,EAAE;YACb,IAAI,WAAW,YAAY,MAAM,CAAC,UAAU,EAAE;gBAC1C,+EAA+E;gBAC/E,+EAA+E;gBAC/E,IAAI,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC7D,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;gBACtB,MAAM,EAAC,MAAM,EAAE,UAAU,EAAC,GAAG,MAAM,4BAAY,CAAC,gBAAgB,CAAC;oBAC7D,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACxB,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC3B,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;iBACrC;gBACD,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE7F,2GAA2G;gBAC3G,6DAA6D;gBAC7D,IAAI,CAAC,IAAI,EAAE;oBACP,kDAAkD;oBAClD,MAAM,qBAAqB,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvH,kGAAkG;oBAClG,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC1G,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAClD,iEAAiE;oBACjE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;oBAElF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;wBACvB,WAAW,EAAE,qBAAqB;wBAClC,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBAC7D,WAAW,EAAE;4BACT,SAAS,EAAE,SAAS;4BACpB,EAAE,EAAE,EAAE;yBACT;wBACD,QAAQ,EAAE,GAAG,EAAE;4BACX,IAAI,MAAM,CAAC,WAAW,EAAE;gCACpB,MAAM,CAAC,WAAW,EAAE,CAAC;6BACxB;wBACL,CAAC;qBACJ,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC;iBACf;qBACI;oBACD,WAAW,GAAG,aAAa,CAAC;iBAC/B;aACJ;YAED,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBACvB,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC7D,WAAW,EAAE;oBACT,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;oBACnC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;oBACnC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;iBACnC;gBACD,QAAQ,EAAE,GAAG,EAAE;oBACX,IAAI,MAAM,CAAC,WAAW,EAAE;wBACpB,MAAM,CAAC,WAAW,EAAE,CAAC;qBACxB;gBACL,CAAC;aACJ,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACf;QAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE;YACtH,MAAM,CAAC,MAAM,CAAC,MAAM,CAChB,MAAM,CAAC,OAAO,EACd,IAAI,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,GAAG,CAAC,CACtF,CAAC;YACF,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAhMqB,iBAAK,QAgM1B,CAAA;AACL,CAAC,EAj1CgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAi1C3B;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAmB,EAAE,QAAgB,EAAE,OAAe;IACxE,mBAAmB;IACnB,MAAM,MAAM,GAAW,MAAM,CAAC;IAE9B,MAAM,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjC,OAAO;QACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;KACvC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,KAAwB,EAAE,QAAgB,EAAE,OAAe;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,YAAY,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,MAAM;QACtB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;KACpD,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnG,CAAC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeasureUtils = void 0;
4
+ const bruce_models_1 = require("bruce-models");
5
+ const Cesium = require("cesium");
6
+ var MeasureUtils;
7
+ (function (MeasureUtils) {
8
+ /**
9
+ * Returns the total distance in meters between an array of points.
10
+ * This distance is NOT following the terrain.
11
+ * @param posses
12
+ * @returns
13
+ */
14
+ function MeasurePolyline(params) {
15
+ const { posses } = params;
16
+ if (posses.length < 2) {
17
+ return {
18
+ totalLength: 0
19
+ };
20
+ }
21
+ let totalLength = 0;
22
+ let pos1 = null;
23
+ let pos2 = null;
24
+ for (let i = 0; i < posses.length; i++) {
25
+ if (pos1 == null) {
26
+ pos1 = posses[i];
27
+ }
28
+ else if (pos2 == null) {
29
+ pos2 = posses[i];
30
+ totalLength += Cesium.Cartesian3.distance(pos1, pos2);
31
+ pos1 = pos2;
32
+ pos2 = null;
33
+ }
34
+ }
35
+ return {
36
+ totalLength
37
+ };
38
+ }
39
+ MeasureUtils.MeasurePolyline = MeasurePolyline;
40
+ function MeasurePolygon(params) {
41
+ let { posses } = params;
42
+ posses = [].concat(posses);
43
+ if (!bruce_models_1.Cartes.IsRing3Closed(posses)) {
44
+ posses.push(posses[0].clone());
45
+ }
46
+ if (posses.length < 3) {
47
+ return {
48
+ area: 0,
49
+ perimeter: 0
50
+ };
51
+ }
52
+ let area = 0;
53
+ const indices = Cesium.PolygonPipeline.triangulate(posses, []);
54
+ for (let i = 0; i < indices.length; i += 3) {
55
+ const vector1 = posses[indices[i]];
56
+ const vector2 = posses[indices[i + 1]];
57
+ const vector3 = posses[indices[i + 2]];
58
+ const vectorC = Cesium.Cartesian3.subtract(vector2, vector1, new Cesium.Cartesian3());
59
+ const vectorD = Cesium.Cartesian3.subtract(vector3, vector1, new Cesium.Cartesian3());
60
+ const areaVector = Cesium.Cartesian3.cross(vectorC, vectorD, new Cesium.Cartesian3());
61
+ area += Cesium.Cartesian3.magnitude(areaVector) / 2.0;
62
+ }
63
+ const { totalLength: perimeter } = MeasurePolyline({
64
+ posses: posses
65
+ });
66
+ return {
67
+ area,
68
+ perimeter
69
+ };
70
+ }
71
+ MeasureUtils.MeasurePolygon = MeasurePolygon;
72
+ })(MeasureUtils = exports.MeasureUtils || (exports.MeasureUtils = {}));
73
+ //# sourceMappingURL=measure-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure-utils.js","sourceRoot":"","sources":["../../../src/utils/measure-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SimplifyGeometry = void 0;
4
+ const bruce_models_1 = require("bruce-models");
5
+ /**
6
+ * Util for simplifying geometry on the fly.
7
+ */
8
+ var SimplifyGeometry;
9
+ (function (SimplifyGeometry) {
10
+ /**
11
+ * Returns the total number of points in the geometry.
12
+ * @param geometry
13
+ * @param limit number to count up to before returning.
14
+ * @returns
15
+ */
16
+ function CountPoints(geometry, limit) {
17
+ let count = 0;
18
+ const traverse = (geometry) => {
19
+ if (geometry.MultiGeometry) {
20
+ for (let i = 0; i < geometry.MultiGeometry.length; i++) {
21
+ traverse(geometry.MultiGeometry[i]);
22
+ // Reached the limit, return.
23
+ if (limit && count >= limit) {
24
+ return;
25
+ }
26
+ }
27
+ }
28
+ else if (geometry.Polygon) {
29
+ for (let i = 0; i < geometry.Polygon.length; i++) {
30
+ const polygon = geometry.Polygon[i];
31
+ count += bruce_models_1.Geometry.ParsePoints(polygon.LinearRing).length;
32
+ }
33
+ }
34
+ else if (geometry.LineString) {
35
+ count += bruce_models_1.Geometry.ParsePoints(geometry.LineString).length;
36
+ }
37
+ else if (geometry.Point) {
38
+ count += 1;
39
+ }
40
+ };
41
+ traverse(geometry);
42
+ return count;
43
+ }
44
+ SimplifyGeometry.CountPoints = CountPoints;
45
+ /**
46
+ * Simplifies input geometry.
47
+ * This will turn it into GeoJSON, run it through turf, then back to Bruce geometry.
48
+ * @param geometry
49
+ */
50
+ function Simplify(entityId, geometry, tolerance) {
51
+ var _a;
52
+ if (!geometry || !turf || !turf.simplify) {
53
+ return geometry;
54
+ }
55
+ // Convert to geojson so that we can interact with turf.
56
+ const gFeature = bruce_models_1.Geometry.ToGeoJsonFeature({
57
+ geometry: geometry
58
+ });
59
+ // Unkink the geometry.
60
+ // This removes overlapping polygons before we start merging and simplifying.
61
+ // Commented out because it has crashes and doesn't handle holes.
62
+ untangleFeature(gFeature);
63
+ // Union the geometry.
64
+ // This merges overlapping polygons.
65
+ unionFeature(gFeature);
66
+ // Simplify the geometry.
67
+ if (tolerance > 0) {
68
+ gFeature.geometry = turf.simplify(gFeature.geometry, {
69
+ tolerance: tolerance,
70
+ highQuality: true,
71
+ mutate: true
72
+ });
73
+ }
74
+ // Converting back to Bruce geometry.
75
+ geometry = (_a = bruce_models_1.Geometry.FromGeoJson({
76
+ geoJson: gFeature
77
+ })) === null || _a === void 0 ? void 0 : _a.geometry;
78
+ return geometry;
79
+ }
80
+ SimplifyGeometry.Simplify = Simplify;
81
+ })(SimplifyGeometry = exports.SimplifyGeometry || (exports.SimplifyGeometry = {}));
82
+ /**
83
+ * Runs through all found polygons and runs unkink through turf on them.
84
+ * @param feature
85
+ */
86
+ function untangleFeature(feature) {
87
+ // Collection to add to because the result might be multiple from an unkink.
88
+ const collection = {
89
+ geometries: [],
90
+ type: "GeometryCollection"
91
+ };
92
+ // Runs a dedupe and unkink on the coordinates.
93
+ // Returns if the coordinates were added to the collection.
94
+ const processCoordinates = (coords) => {
95
+ try {
96
+ // Dedupe the coordinates to avoid issues with unkink.
97
+ coords = dedupeCoordinates(coords);
98
+ const outer = [];
99
+ let inner = [];
100
+ // We'll unkink each ring separately as this is killing the holes when it is done as a whole.
101
+ // So we'll do it separate then recombine.
102
+ for (let i = 0; i < coords.length; i++) {
103
+ const ring = coords[i];
104
+ const unkink = turf.unkinkPolygon({
105
+ type: "Polygon",
106
+ coordinates: [ring]
107
+ });
108
+ if (unkink.type == "FeatureCollection") {
109
+ let target = i == 0 ? outer : inner;
110
+ for (let j = 0; j < unkink.features.length; j++) {
111
+ const unkinked = unkink.features[j].geometry.coordinates;
112
+ if (unkinked.length > 0) {
113
+ target.push(unkinked[0]);
114
+ }
115
+ }
116
+ }
117
+ else {
118
+ console.error("Unexpected unkink result.", unkink);
119
+ }
120
+ }
121
+ // Recreate the rings and reapply to the collection.
122
+ if (outer.length > 0) {
123
+ const combinedCoords = [outer[0]];
124
+ for (let i = 0; i < inner.length; i++) {
125
+ combinedCoords.push(inner[i]);
126
+ }
127
+ // Add the combined coordinates to the collection
128
+ const polygon = {
129
+ type: "Polygon",
130
+ coordinates: combinedCoords
131
+ };
132
+ // Ensure right-hand rule is followed.
133
+ ensureRightHandRule(polygon);
134
+ // Add to the collection.
135
+ collection.geometries.push(polygon);
136
+ return true;
137
+ }
138
+ }
139
+ catch (e) {
140
+ // console.error("Failed to unkink polygon.", e);
141
+ }
142
+ return false;
143
+ };
144
+ const processGeometry = (geometry) => {
145
+ let added = false;
146
+ if (geometry.type == "Polygon") {
147
+ added = processCoordinates(geometry.coordinates);
148
+ }
149
+ else if (geometry.type == "MultiPolygon") {
150
+ for (let i = 0; i < geometry.coordinates.length; i++) {
151
+ added = processCoordinates(geometry.coordinates[i]) || added;
152
+ }
153
+ }
154
+ if (!added) {
155
+ // Adding original since we can't unkink it.
156
+ collection.geometries.push(geometry);
157
+ }
158
+ };
159
+ if (feature.geometry.type == "GeometryCollection") {
160
+ feature.geometry.geometries.forEach((geometry) => {
161
+ processGeometry(geometry);
162
+ });
163
+ }
164
+ else {
165
+ processGeometry(feature.geometry);
166
+ }
167
+ // Re-assign the geometry.
168
+ if (collection.geometries.length == 1) {
169
+ feature.geometry = collection.geometries[0];
170
+ }
171
+ else {
172
+ feature.geometry = collection;
173
+ }
174
+ }
175
+ /**
176
+ * Runs through all found polygons and unions them using turf.
177
+ * Failed unions are ignored and the original is kept.
178
+ * @param feature
179
+ */
180
+ function unionFeature(feature) {
181
+ // Collection to add to because the result might be multiple from an unkink.
182
+ const collection = {
183
+ geometries: [],
184
+ type: "GeometryCollection"
185
+ };
186
+ // We'll turn each geometry into a feature and union them.
187
+ const tmpCollection = {
188
+ features: [],
189
+ type: "FeatureCollection"
190
+ };
191
+ if (feature.geometry.type == "GeometryCollection") {
192
+ feature.geometry.geometries.forEach((geometry) => {
193
+ if (geometry.type == "Polygon") {
194
+ tmpCollection.features.push({
195
+ type: "Feature",
196
+ geometry: geometry,
197
+ properties: {}
198
+ });
199
+ }
200
+ else if (geometry.type == "MultiPolygon") {
201
+ for (let i = 0; i < geometry.coordinates.length; i++) {
202
+ tmpCollection.features.push({
203
+ type: "Feature",
204
+ geometry: {
205
+ type: "Polygon",
206
+ coordinates: geometry.coordinates[i]
207
+ },
208
+ properties: {}
209
+ });
210
+ }
211
+ }
212
+ // Only focusing on polygons.
213
+ else {
214
+ collection.geometries.push(geometry);
215
+ }
216
+ });
217
+ }
218
+ else if (feature.geometry.type == "Polygon") {
219
+ tmpCollection.features.push({
220
+ type: "Feature",
221
+ geometry: feature.geometry,
222
+ properties: {}
223
+ });
224
+ }
225
+ else if (feature.geometry.type == "MultiPolygon") {
226
+ for (let i = 0; i < feature.geometry.coordinates.length; i++) {
227
+ tmpCollection.features.push({
228
+ type: "Feature",
229
+ geometry: {
230
+ type: "Polygon",
231
+ coordinates: feature.geometry.coordinates[i]
232
+ },
233
+ properties: {}
234
+ });
235
+ }
236
+ }
237
+ // No polygons to union.
238
+ // Need at least 2 to union.
239
+ if (tmpCollection.features.length < 2) {
240
+ return;
241
+ }
242
+ // Now we'll union them.
243
+ try {
244
+ const union = turf.union(tmpCollection);
245
+ if (union.geometry.type == "Polygon") {
246
+ collection.geometries.push(union.geometry);
247
+ }
248
+ else if (union.geometry.type == "MultiPolygon") {
249
+ for (let i = 0; i < union.geometry.coordinates.length; i++) {
250
+ collection.geometries.push({
251
+ type: "Polygon",
252
+ coordinates: union.geometry.coordinates[i]
253
+ });
254
+ }
255
+ }
256
+ else {
257
+ // Returning early because the result is unexpected.
258
+ return;
259
+ }
260
+ }
261
+ catch (e) {
262
+ // console.error("Failed to union polygons.", e);
263
+ return;
264
+ }
265
+ // Re-assign the geometry.
266
+ if (collection.geometries.length == 1) {
267
+ feature.geometry = collection.geometries[0];
268
+ }
269
+ else {
270
+ feature.geometry = collection;
271
+ }
272
+ }
273
+ function dedupeCoordinates(inputCoords) {
274
+ return inputCoords.map(ring => {
275
+ if (ring.length < 2) {
276
+ return ring;
277
+ }
278
+ const dedupeCoords = [];
279
+ const uniqueCoords = new Set();
280
+ // Dedupe the points.
281
+ ring.forEach(coord => {
282
+ const key = coord.join(',');
283
+ if (!uniqueCoords.has(key)) {
284
+ uniqueCoords.add(key);
285
+ dedupeCoords.push(coord);
286
+ }
287
+ });
288
+ // Make sure the last point matches the first.
289
+ if (dedupeCoords.length > 1) {
290
+ if (dedupeCoords[0][0] != dedupeCoords[dedupeCoords.length - 1][0] ||
291
+ dedupeCoords[0][1] != dedupeCoords[dedupeCoords.length - 1][1]) {
292
+ dedupeCoords.push(dedupeCoords[0]);
293
+ }
294
+ }
295
+ return dedupeCoords;
296
+ });
297
+ }
298
+ function ensureRightHandRule(polygon) {
299
+ // Ensure the outer ring follows the right-hand rule
300
+ if (polygon.coordinates.length > 0) {
301
+ const outerRing = polygon.coordinates[0];
302
+ if (isClockwise(outerRing)) {
303
+ polygon.coordinates[0] = outerRing.reverse();
304
+ }
305
+ }
306
+ // Ensure any inner rings (holes) follow the right-hand rule
307
+ for (let i = 1; i < polygon.coordinates.length; i++) {
308
+ const innerRing = polygon.coordinates[i];
309
+ if (!isClockwise(innerRing)) {
310
+ polygon.coordinates[i] = innerRing.reverse();
311
+ }
312
+ }
313
+ }
314
+ function isClockwise(ring) {
315
+ let sum = 0;
316
+ for (let i = 0; i < ring.length - 1; i++) {
317
+ const p1 = ring[i];
318
+ const p2 = ring[i + 1];
319
+ sum += (p2[0] - p1[0]) * (p2[1] + p1[1]);
320
+ }
321
+ return sum > 0;
322
+ }
323
+ //# sourceMappingURL=simplify-geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simplify-geometry.js","sourceRoot":"","sources":["../../../src/utils/simplify-geometry.ts"],"names":[],"mappings":"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"}