@adecore/agents-react 0.24.1 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/chat/index.d.ts +4 -7
  2. package/dist/chat/index.js +4 -7
  3. package/dist/chat/logic/continue-after-stop.d.ts +3 -0
  4. package/dist/chat/logic/continue-after-stop.js +28 -0
  5. package/dist/chat/logic/thread-cards.d.ts +0 -1
  6. package/dist/chat/logic/thread-cards.js +0 -4
  7. package/dist/chat/preferences.d.ts +0 -1
  8. package/dist/chat/preferences.js +0 -3
  9. package/dist/chat/stash.d.ts +6 -0
  10. package/dist/chat/stash.js +13 -0
  11. package/dist/chat/ui/Composer.js +26 -5
  12. package/dist/chat/ui/EditDiff.js +4 -3
  13. package/dist/chat/ui/Pickers.js +1 -1
  14. package/dist/chat/ui/UnifiedDiff.js +4 -3
  15. package/dist/chat/ui/composer/ComposerControls.d.ts +1 -0
  16. package/dist/chat/ui/composer/ComposerControls.js +3 -3
  17. package/dist/chat/ui/composer/use-composer-submit.d.ts +3 -1
  18. package/dist/chat/ui/composer/use-composer-submit.js +22 -4
  19. package/dist/chat/ui/composer/use-continuable-turn.d.ts +2 -0
  20. package/dist/chat/ui/composer/use-continuable-turn.js +12 -0
  21. package/dist/chat/ui/composer/use-notice.d.ts +3 -1
  22. package/dist/chat/ui/composer/use-notice.js +8 -6
  23. package/dist/chat/ui/diff/ReviewDiff.js +2 -2
  24. package/dist/chat/ui/index.d.ts +9 -28
  25. package/dist/chat/ui/index.js +8 -27
  26. package/dist/chat/ui/intelligent-ui/UiReply.js +20 -2
  27. package/dist/chat/ui/intelligent-ui/node-text.d.ts +3 -1
  28. package/dist/chat/ui/intelligent-ui/node-text.js +32 -0
  29. package/dist/chat/ui/intelligent-ui/registry.js +15 -5
  30. package/dist/chat/ui/intelligent-ui/render-context.d.ts +6 -0
  31. package/dist/chat/ui/intelligent-ui/renderers/base-land.d.ts +1 -0
  32. package/dist/chat/ui/intelligent-ui/renderers/base-land.js +6 -0
  33. package/dist/chat/ui/intelligent-ui/renderers/binding.d.ts +6 -0
  34. package/dist/chat/ui/intelligent-ui/renderers/binding.js +10 -0
  35. package/dist/chat/ui/intelligent-ui/renderers/content.d.ts +2 -0
  36. package/dist/chat/ui/intelligent-ui/renderers/content.js +68 -6
  37. package/dist/chat/ui/intelligent-ui/renderers/inputs.d.ts +2 -0
  38. package/dist/chat/ui/intelligent-ui/renderers/inputs.js +40 -13
  39. package/dist/chat/ui/intelligent-ui/renderers/map-slots.d.ts +20 -0
  40. package/dist/chat/ui/intelligent-ui/renderers/map-slots.js +87 -0
  41. package/dist/chat/ui/intelligent-ui/renderers/map-style.d.ts +18 -0
  42. package/dist/chat/ui/intelligent-ui/renderers/map-style.js +72 -0
  43. package/dist/chat/ui/intelligent-ui/renderers/map-view.d.ts +15 -0
  44. package/dist/chat/ui/intelligent-ui/renderers/map-view.js +213 -0
  45. package/dist/chat/ui/intelligent-ui/renderers/map.d.ts +3 -0
  46. package/dist/chat/ui/intelligent-ui/renderers/map.js +113 -0
  47. package/dist/chat/ui/intelligent-ui/renderers/place-point.d.ts +3 -0
  48. package/dist/chat/ui/intelligent-ui/renderers/place-point.js +13 -0
  49. package/dist/chat/ui/intelligent-ui/renderers/text.d.ts +2 -0
  50. package/dist/chat/ui/intelligent-ui/renderers/text.js +14 -1
  51. package/dist/chat/ui/intelligent-ui/use-in-view.d.ts +1 -0
  52. package/dist/chat/ui/intelligent-ui/use-in-view.js +17 -0
  53. package/dist/chat/ui/rows/WorkRows.js +3 -3
  54. package/dist/host.d.ts +16 -0
  55. package/dist/index.d.ts +2 -2
  56. package/dist/index.js +1 -1
  57. package/dist/lazy.js +5 -7
  58. package/dist/locales/en/agent-chat.d.ts +47 -0
  59. package/dist/locales/en/agent-chat.js +48 -1
  60. package/dist/locales/nl/agent-chat.d.ts +47 -0
  61. package/dist/locales/nl/agent-chat.js +48 -1
  62. package/dist/prompts/index.d.ts +3 -5
  63. package/dist/prompts/index.js +3 -5
  64. package/dist/providers/index.d.ts +3 -9
  65. package/dist/providers/index.js +3 -9
  66. package/dist/state/index.d.ts +2 -2
  67. package/dist/state/index.js +2 -2
  68. package/dist/state/usage.d.ts +0 -1
  69. package/dist/state/usage.js +0 -3
  70. package/dist/theme.css +10 -0
  71. package/package.json +9 -8
  72. package/src/chat/index.ts +2 -23
  73. package/src/chat/logic/continue-after-stop.ts +32 -0
  74. package/src/chat/logic/thread-cards.ts +0 -5
  75. package/src/chat/preferences.ts +0 -4
  76. package/src/chat/stash.ts +17 -0
  77. package/src/chat/ui/Composer.tsx +33 -5
  78. package/src/chat/ui/EditDiff.tsx +6 -5
  79. package/src/chat/ui/Pickers.tsx +1 -0
  80. package/src/chat/ui/UnifiedDiff.tsx +6 -5
  81. package/src/chat/ui/composer/ComposerControls.tsx +13 -3
  82. package/src/chat/ui/composer/use-composer-submit.ts +25 -5
  83. package/src/chat/ui/composer/use-continuable-turn.ts +14 -0
  84. package/src/chat/ui/composer/use-notice.ts +14 -7
  85. package/src/chat/ui/diff/ReviewDiff.tsx +3 -3
  86. package/src/chat/ui/index.ts +9 -49
  87. package/src/chat/ui/intelligent-ui/UiReply.tsx +24 -1
  88. package/src/chat/ui/intelligent-ui/node-text.ts +34 -1
  89. package/src/chat/ui/intelligent-ui/registry.ts +33 -5
  90. package/src/chat/ui/intelligent-ui/render-context.ts +14 -0
  91. package/src/chat/ui/intelligent-ui/renderers/base-land.ts +7 -0
  92. package/src/chat/ui/intelligent-ui/renderers/binding.ts +14 -0
  93. package/src/chat/ui/intelligent-ui/renderers/content.tsx +144 -9
  94. package/src/chat/ui/intelligent-ui/renderers/inputs.tsx +79 -17
  95. package/src/chat/ui/intelligent-ui/renderers/map-slots.ts +105 -0
  96. package/src/chat/ui/intelligent-ui/renderers/map-style.ts +96 -0
  97. package/src/chat/ui/intelligent-ui/renderers/map-view.tsx +251 -0
  98. package/src/chat/ui/intelligent-ui/renderers/map.tsx +226 -0
  99. package/src/chat/ui/intelligent-ui/renderers/place-point.ts +16 -0
  100. package/src/chat/ui/intelligent-ui/renderers/text.tsx +28 -1
  101. package/src/chat/ui/intelligent-ui/use-in-view.ts +18 -0
  102. package/src/chat/ui/rows/WorkRows.tsx +3 -3
  103. package/src/host.ts +28 -0
  104. package/src/index.ts +2 -12
  105. package/src/lazy.tsx +5 -7
  106. package/src/locales/en/agent-chat.ts +48 -1
  107. package/src/locales/nl/agent-chat.ts +48 -1
  108. package/src/prompts/index.ts +3 -18
  109. package/src/providers/index.ts +3 -9
  110. package/src/state/index.ts +1 -16
  111. package/src/state/usage.ts +0 -4
  112. package/src/stylesheets.d.ts +2 -0
  113. package/src/theme.css +10 -0
@@ -0,0 +1,7 @@
1
+ /*
2
+ * The land of the world as one feature, for the map a page draws without tiles. Natural Earth 110m land
3
+ * (naturalearthdata.com, public domain), cut to one decimal of a degree and stripped of its properties.
4
+ * Kept as text and parsed on first use, so the module costs nothing until a map is drawn.
5
+ */
6
+ export const BASE_LAND_JSON =
7
+ '{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.6,-80.0],[-59.9,-80.5],[-60.2,-81.0],[-62.3,-80.9],[-64.5,-80.9],[-65.7,-80.6],[-65.7,-80.5],[-66.3,-80.3],[-64.0,-80.3],[-61.9,-80.4],[-61.1,-80.0],[-60.6,-79.6],[-59.6,-80.0]]],[[[-159.2,-79.5],[-161.1,-79.6],[-162.4,-79.3],[-163.0,-78.9],[-163.1,-78.9],[-163.7,-78.6],[-163.1,-78.2],[-161.2,-78.4],[-160.2,-78.7],[-159.5,-79.0],[-159.2,-79.5]]],[[[-45.2,-78.0],[-43.9,-78.5],[-43.5,-79.1],[-43.4,-79.5],[-43.3,-80.0],[-44.9,-80.3],[-46.5,-80.6],[-48.4,-80.8],[-50.5,-81.0],[-52.9,-81.0],[-54.2,-80.6],[-54.0,-80.2],[-51.9,-79.9],[-51.0,-79.6],[-50.4,-79.2],[-49.9,-78.8],[-49.3,-78.5],[-48.7,-78.0],[-48.2,-78.0],[-46.7,-77.8],[-45.2,-78.0]]],[[[-121.2,-73.5],[-119.9,-73.7],[-118.7,-73.5],[-119.3,-73.8],[-120.2,-74.1],[-121.6,-74.0],[-122.6,-73.7],[-122.4,-73.3],[-121.2,-73.5]]],[[[-125.6,-73.5],[-124.0,-73.9],[-124.6,-73.8],[-125.9,-73.7],[-127.3,-73.5],[-126.6,-73.2],[-125.6,-73.5]]],[[[-99.0,-71.9],[-97.9,-72.1],[-96.8,-72.0],[-96.2,-72.5],[-97.0,-72.4],[-98.2,-72.5],[-99.4,-72.4],[-100.8,-72.5],[-101.8,-72.3],[-102.3,-71.9],[-101.7,-71.7],[-100.4,-71.9],[-99.0,-71.9]]],[[[-68.5,-71.0],[-68.3,-71.4],[-68.5,-71.8],[-68.8,-72.2],[-70.0,-72.3],[-71.1,-72.5],[-72.4,-72.5],[-71.9,-72.1],[-73.1,-72.2],[-74.2,-72.4],[-75.0,-72.1],[-75.0,-71.7],[-73.9,-71.3],[-73.2,-71.2],[-72.1,-71.2],[-71.8,-70.7],[-71.7,-70.3],[-71.7,-69.5],[-71.2,-69.0],[-70.3,-68.9],[-69.7,-69.3],[-69.5,-69.6],[-69.1,-70.1],[-68.7,-70.5],[-68.5,-71.0]]],[[[-58.6,-64.2],[-59.0,-64.4],[-59.8,-64.2],[-60.6,-64.3],[-61.3,-64.5],[-62.0,-64.8],[-62.5,-65.1],[-62.6,-65.5],[-62.6,-65.9],[-62.1,-66.2],[-62.8,-66.4],[-63.7,-66.5],[-64.3,-66.8],[-64.9,-67.2],[-65.5,-67.6],[-65.7,-68.0],[-65.3,-68.4],[-64.8,-68.7],[-64.0,-68.9],[-63.2,-69.2],[-62.8,-69.6],[-62.6,-70.0],[-62.3,-70.4],[-61.8,-70.7],[-61.5,-71.1],[-61.4,-72.0],[-61.1,-72.4],[-61.0,-72.8],[-60.7,-73.2],[-60.8,-73.7],[-61.4,-74.1],[-62.0,-74.4],[-63.3,-74.6],[-63.7,-74.9],[-64.4,-75.3],[-65.9,-75.6],[-67.2,-75.8],[-68.4,-76.0],[-69.8,-76.2],[-70.6,-76.6],[-72.2,-76.7],[-74.0,-76.6],[-75.6,-76.7],[-77.2,-76.7],[-76.9,-77.1],[-75.4,-77.3],[-74.3,-77.6],[-73.7,-77.9],[-74.8,-78.2],[-76.5,-78.1],[-77.9,-78.4],[-78.0,-78.8],[-78.0,-79.2],[-76.8,-79.5],[-76.6,-79.9],[-75.4,-80.3],[-73.2,-80.4],[-71.4,-80.7],[-70.0,-81.0],[-68.2,-81.3],[-65.7,-81.5],[-63.3,-81.7],[-61.6,-82.0],[-59.7,-82.4],[-58.7,-82.8],[-58.2,-83.2],[-57.0,-82.9],[-55.4,-82.6],[-53.6,-82.3],[-51.5,-82.0],[-49.8,-81.7],[-47.3,-81.7],[-44.8,-81.8],[-42.8,-82.1],[-42.2,-81.7],[-40.8,-81.4],[-38.2,-81.3],[-36.3,-81.1],[-34.4,-80.9],[-32.3,-80.8],[-30.1,-80.6],[-28.5,-80.3],[-29.3,-80.0],[-29.7,-79.6],[-29.7,-79.3],[-31.6,-79.3],[-33.7,-79.5],[-35.6,-79.5],[-35.9,-79.1],[-35.8,-78.3],[-35.3,-78.1],[-33.9,-77.9],[-32.2,-77.7],[-31.0,-77.4],[-29.8,-77.1],[-28.9,-76.7],[-27.5,-76.5],[-26.2,-76.4],[-25.5,-76.3],[-23.9,-76.2],[-22.5,-76.1],[-21.2,-75.9],[-20.0,-75.7],[-18.9,-75.4],[-17.5,-75.1],[-16.6,-74.8],[-15.7,-74.5],[-15.4,-74.1],[-16.5,-73.9],[-16.1,-73.5],[-15.4,-73.1],[-14.4,-73.0],[-13.3,-72.7],[-12.3,-72.4],[-11.5,-72.0],[-11.0,-71.5],[-10.3,-71.3],[-9.1,-71.3],[-8.6,-71.7],[-7.4,-71.7],[-7.4,-71.3],[-6.9,-70.9],[-5.8,-71.0],[-5.5,-71.4],[-4.3,-71.5],[-3.0,-71.3],[-1.8,-71.2],[-0.7,-71.2],[-0.2,-71.6],[0.9,-71.3],[1.9,-71.1],[3.0,-71.0],[4.1,-70.9],[5.2,-70.6],[6.3,-70.5],[7.1,-70.2],[7.7,-69.9],[8.5,-70.1],[9.5,-70.0],[10.2,-70.5],[10.8,-70.8],[12.0,-70.6],[12.4,-70.2],[13.4,-70.0],[14.7,-70.0],[15.1,-70.4],[15.9,-70.0],[17.0,-69.9],[18.2,-69.9],[19.3,-69.9],[20.4,-70.0],[21.5,-70.1],[21.9,-70.4],[22.6,-70.7],[23.7,-70.5],[24.8,-70.5],[26.0,-70.5],[27.1,-70.5],[28.1,-70.3],[29.2,-70.2],[30.0,-69.9],[31.0,-69.8],[32.0,-69.7],[32.8,-69.4],[33.3,-68.8],[33.9,-68.5],[34.9,-68.7],[35.3,-69.0],[36.2,-69.2],[37.2,-69.2],[37.9,-69.5],[38.6,-69.8],[39.7,-69.5],[40.0,-69.1],[40.9,-68.9],[42.0,-68.6],[42.9,-68.5],[44.1,-68.3],[44.9,-68.1],[45.7,-67.8],[46.5,-67.6],[47.4,-67.7],[48.3,-67.4],[49.0,-67.1],[49.9,-67.1],[50.8,-66.9],[50.9,-66.5],[51.8,-66.2],[52.6,-66.1],[53.6,-65.9],[54.5,-65.8],[55.4,-65.9],[56.4,-66.0],[57.2,-66.2],[57.3,-66.7],[58.1,-67.0],[58.7,-67.3],[59.9,-67.4],[60.6,-67.7],[61.4,-68.0],[62.4,-68.0],[63.2,-67.8],[64.1,-67.4],[65.0,-67.6],[66.0,-67.7],[66.9,-67.9],[67.9,-67.9],[68.9,-67.9],[69.7,-69.0],[69.7,-69.2],[69.6,-69.7],[68.6,-69.9],[67.8,-70.3],[67.9,-70.7],[69.1,-70.7],[68.9,-71.1],[68.4,-71.4],[67.9,-71.9],[68.7,-72.2],[69.9,-72.3],[71.0,-72.1],[71.6,-71.7],[71.9,-71.3],[72.5,-71.0],[73.1,-70.7],[73.3,-70.4],[73.9,-69.9],[74.5,-69.8],[75.6,-69.7],[76.6,-69.6],[77.6,-69.5],[78.1,-69.1],[78.4,-68.7],[79.1,-68.3],[80.1,-68.1],[80.9,-67.9],[81.5,-67.5],[82.1,-67.4],[82.8,-67.2],[83.8,-67.3],[84.7,-67.2],[85.7,-67.1],[86.8,-67.2],[87.5,-66.9],[88.0,-66.2],[88.4,-66.5],[88.8,-67.0],[89.7,-67.2],[90.6,-67.2],[91.6,-67.1],[92.6,-67.2],[93.5,-67.2],[94.2,-67.1],[95.0,-67.2],[95.8,-67.4],[96.7,-67.2],[97.8,-67.2],[98.7,-67.1],[99.7,-67.2],[100.4,-66.9],[100.9,-66.6],[101.6,-66.3],[102.8,-65.6],[103.5,-65.7],[104.2,-66.0],[104.9,-66.3],[106.2,-66.9],[107.2,-67.0],[108.1,-67.0],[109.2,-66.8],[110.2,-66.7],[111.1,-66.4],[111.7,-66.1],[112.9,-66.1],[113.6,-65.9],[114.4,-66.1],[114.9,-66.4],[115.6,-66.7],[116.7,-66.7],[117.4,-66.9],[118.6,-67.2],[119.8,-67.3],[120.9,-67.2],[121.7,-66.9],[122.3,-66.6],[123.2,-66.5],[124.1,-66.6],[125.2,-66.7],[126.1,-66.6],[127.0,-66.6],[127.9,-66.7],[128.8,-66.8],[129.7,-66.6],[130.8,-66.4],[131.8,-66.4],[132.9,-66.4],[133.9,-66.3],[134.8,-66.2],[135.0,-65.7],[135.1,-65.3],[135.7,-65.6],[135.9,-66.0],[136.2,-66.4],[136.6,-66.8],[137.5,-67.0],[138.6,-66.9],[139.9,-66.9],[140.8,-66.8],[142.1,-66.8],[143.1,-66.8],[144.4,-66.8],[145.5,-66.9],[146.2,-67.2],[146.0,-67.6],[146.6,-67.9],[147.7,-68.1],[148.8,-68.4],[150.1,-68.6],[151.5,-68.7],[152.5,-68.9],[153.6,-68.9],[154.3,-68.6],[155.2,-68.8],[155.9,-69.1],[156.8,-69.4],[158.0,-69.5],[159.2,-69.6],[159.7,-70.0],[160.8,-70.2],[161.6,-70.6],[162.7,-70.7],[163.8,-70.7],[164.9,-70.8],[166.1,-70.8],[167.3,-70.8],[168.4,-71.0],[169.5,-71.2],[170.5,-71.4],[171.2,-71.7],[171.1,-72.1],[170.6,-72.4],[170.1,-72.9],[169.8,-73.2],[169.3,-73.7],[168.0,-73.8],[167.4,-74.2],[166.1,-74.4],[165.6,-74.8],[165.0,-75.1],[164.2,-75.5],[163.8,-75.9],[163.6,-76.2],[163.5,-76.7],[163.5,-77.1],[164.1,-77.5],[164.3,-77.8],[164.7,-78.2],[166.6,-78.3],[167.0,-78.8],[165.2,-78.9],[163.7,-79.1],[161.8,-79.2],[160.9,-79.7],[160.7,-80.2],[160.3,-80.6],[159.8,-80.9],[161.1,-81.3],[161.6,-81.7],[162.5,-82.1],[163.7,-82.4],[165.1,-82.7],[166.6,-83.0],[168.9,-83.3],[169.4,-83.8],[172.3,-84.0],[172.5,-84.1],[173.2,-84.4],[176.0,-84.2],[178.3,-84.5],[180,-84.7],[180,-90],[-180,-90],[-180,-84.7],[-179.9,-84.7],[-179.1,-84.1],[-177.3,-84.5],[-177.1,-84.4],[-176.9,-84.3],[-176.5,-84.2],[-176.2,-84.1],[-176.1,-84.1],[-175.9,-84.1],[-175.8,-84.1],[-174.4,-84.5],[-173.1,-84.1],[-172.9,-84.1],[-170.0,-83.9],[-169.0,-84.1],[-168.5,-84.2],[-167.0,-84.6],[-164.2,-84.8],[-161.9,-85.1],[-158.1,-85.4],[-155.2,-85.1],[-150.9,-85.3],[-148.5,-85.6],[-145.9,-85.3],[-143.1,-85.0],[-142.9,-84.6],[-146.8,-84.5],[-150.1,-84.3],[-150.9,-83.9],[-153.6,-83.7],[-153.4,-83.2],[-153.0,-82.8],[-152.7,-82.5],[-152.9,-82.0],[-154.5,-81.8],[-155.3,-81.4],[-156.8,-81.1],[-154.4,-81.2],[-152.1,-81.0],[-150.6,-81.3],[-148.9,-81.0],[-147.2,-80.7],[-146.4,-80.3],[-146.8,-79.9],[-148.1,-79.7],[-149.5,-79.4],[-151.6,-79.3],[-153.4,-79.2],[-155.3,-79.1],[-156.0,-78.7],[-157.3,-78.4],[-158.1,-78.0],[-158.4,-76.9],[-157.9,-77.0],[-157.0,-77.3],[-155.3,-77.2],[-153.7,-77.1],[-152.9,-77.5],[-151.3,-77.4],[-150.0,-77.2],[-148.7,-76.9],[-147.6,-76.6],[-146.1,-76.5],[-146.1,-76.1],[-146.5,-75.7],[-146.2,-75.4],[-144.9,-75.2],[-144.3,-75.5],[-142.8,-75.3],[-141.6,-75.1],[-140.2,-75.1],[-138.9,-75.0],[-137.5,-74.7],[-136.4,-74.5],[-135.2,-74.3],[-134.4,-74.4],[-133.7,-74.4],[-132.3,-74.3],[-130.9,-74.5],[-129.6,-74.5],[-128.2,-74.3],[-126.9,-74.4],[-125.4,-74.5],[-124.0,-74.5],[-122.6,-74.5],[-121.1,-74.5],[-119.7,-74.5],[-118.7,-74.2],[-117.5,-74.0],[-116.2,-74.2],[-115.0,-74.1],[-113.9,-73.7],[-113.3,-74.0],[-112.9,-74.4],[-112.3,-74.7],[-111.3,-74.4],[-110.1,-74.8],[-108.7,-74.9],[-107.6,-75.2],[-106.1,-75.1],[-104.9,-74.9],[-103.4,-75.0],[-102.0,-75.1],[-100.6,-75.3],[-100.1,-74.9],[-100.8,-74.5],[-101.3,-74.2],[-102.5,-74.1],[-103.1,-73.7],[-103.3,-73.4],[-103.7,-72.6],[-102.9,-72.8],[-101.6,-72.8],[-100.3,-72.8],[-99.1,-72.9],[-98.1,-73.2],[-97.7,-73.6],[-96.3,-73.6],[-95.0,-73.5],[-93.7,-73.3],[-92.4,-73.2],[-91.4,-73.4],[-90.1,-73.3],[-89.2,-72.6],[-88.4,-73.0],[-87.3,-73.2],[-86.0,-73.1],[-85.2,-73.5],[-83.9,-73.5],[-82.7,-73.6],[-81.5,-73.9],[-80.7,-73.5],[-80.3,-73.1],[-79.3,-73.5],[-77.9,-73.4],[-76.9,-73.6],[-76.2,-74.0],[-74.9,-73.9],[-73.9,-73.7],[-72.8,-73.4],[-71.6,-73.3],[-70.2,-73.1],[-68.9,-73.0],[-68.0,-72.8],[-67.4,-72.5],[-67.1,-72.0],[-67.3,-71.6],[-67.6,-71.2],[-67.9,-70.9],[-68.2,-70.5],[-68.5,-70.1],[-68.5,-69.7],[-68.4,-69.3],[-68.0,-69.0],[-67.6,-68.5],[-67.4,-68.1],[-67.6,-67.7],[-67.7,-67.3],[-67.3,-66.9],[-66.7,-66.6],[-66.1,-66.2],[-65.4,-65.9],[-64.6,-65.6],[-64.2,-65.2],[-63.6,-64.9],[-63.0,-64.6],[-62.0,-64.6],[-61.4,-64.3],[-60.7,-64.1],[-59.9,-64.0],[-59.2,-63.7],[-58.6,-63.4],[-57.8,-63.3],[-57.2,-63.5],[-57.6,-63.9],[-58.6,-64.2]]],[[[-67.8,-53.9],[-66.5,-54.5],[-65.0,-54.7],[-65.5,-55.2],[-66.5,-55.2],[-67.0,-54.9],[-67.3,-55.3],[-68.1,-55.6],[-69.2,-55.5],[-70.0,-55.2],[-71.0,-55.1],[-72.3,-54.5],[-73.3,-54.0],[-74.7,-52.8],[-73.8,-53.0],[-72.4,-53.7],[-71.1,-54.1],[-70.6,-53.6],[-70.3,-52.9],[-69.3,-52.5],[-68.6,-52.6],[-68.2,-53.1],[-67.8,-53.9]]],[[[-58.5,-51.1],[-57.8,-51.5],[-58.0,-51.9],[-59.4,-52.2],[-59.9,-51.9],[-60.7,-52.3],[-61.2,-51.9],[-60,-51.2],[-59.1,-51.5],[-58.5,-51.1]]],[[[70.3,-49.7],[68.7,-49.8],[68.7,-49.2],[68.9,-48.8],[68.9,-48.6],[69.6,-48.9],[70.5,-49.1],[70.6,-49.3],[70.3,-49.7]]],[[[145.4,-40.8],[146.4,-41.1],[146.9,-41.0],[147.7,-40.8],[148.3,-40.9],[148.4,-42.1],[148.0,-42.4],[147.9,-43.2],[147.6,-42.9],[146.9,-43.6],[146.7,-43.6],[146.0,-43.5],[145.4,-42.7],[145.3,-42.0],[144.7,-41.2],[144.7,-40.7],[145.4,-40.8]]],[[[173.0,-40.9],[173.2,-41.3],[174.0,-40.9],[174.2,-41.3],[174.2,-41.8],[173.9,-42.2],[173.2,-43.0],[172.7,-43.4],[173.1,-43.9],[172.3,-43.9],[171.5,-44.2],[171.2,-44.9],[170.6,-45.9],[169.8,-46.4],[169.3,-46.6],[168.4,-46.6],[167.8,-46.3],[166.7,-46.2],[166.5,-45.9],[167.0,-45.1],[168.3,-44.1],[168.9,-43.9],[169.7,-43.6],[170.5,-43.0],[171.1,-42.5],[171.6,-41.8],[171.9,-41.5],[172.1,-41.0],[172.8,-40.5],[173.0,-40.9]]],[[[174.6,-36.2],[175.3,-37.2],[175.4,-36.5],[175.8,-36.8],[176.0,-37.6],[176.8,-37.9],[177.4,-38.0],[178.0,-37.6],[178.5,-37.7],[178.3,-38.6],[178.0,-39.2],[177.2,-39.1],[176.9,-39.4],[177.0,-39.9],[176.9,-40.1],[176.5,-40.6],[176.0,-41.3],[175.2,-41.7],[175.1,-41.4],[174.7,-41.3],[175.2,-40.5],[174.9,-39.9],[173.8,-39.5],[173.9,-39.1],[174.6,-38.8],[174.7,-38.0],[174.7,-37.4],[174.3,-36.7],[174.3,-36.5],[173.8,-36.1],[173.1,-35.2],[172.6,-34.5],[173.0,-34.5],[173.6,-35.0],[174.3,-35.3],[174.6,-36.2]]],[[[167.1,-22.2],[166.7,-22.4],[166.2,-22.1],[165.5,-21.7],[164.8,-21.1],[164.2,-20.4],[164.0,-20.1],[164.5,-20.1],[165.0,-20.5],[165.5,-20.8],[165.8,-21.1],[166.6,-21.7],[167.1,-22.2]]],[[[178.4,-17.3],[178.7,-17.6],[178.6,-18.2],[177.9,-18.3],[177.4,-18.2],[177.3,-17.7],[177.7,-17.4],[178.1,-17.5],[178.4,-17.3]]],[[[179.4,-16.8],[178.7,-17.0],[178.6,-16.6],[179.1,-16.4],[179.4,-16.4],[180,-16.1],[180,-16.6],[179.4,-16.8]]],[[[-179.9,-16.5],[-180,-16.6],[-180,-16.1],[-179.8,-16.0],[-179.9,-16.5]]],[[[167.8,-16.5],[167.5,-16.6],[167.2,-16.2],[167.2,-15.9],[167.8,-16.5]]],[[[167.1,-14.9],[167.3,-15.7],[167.0,-15.6],[166.8,-15.7],[166.6,-15.4],[166.6,-14.6],[167.1,-14.9]]],[[[50.1,-13.6],[50.2,-14.8],[50.5,-15.2],[50.4,-15.7],[50.2,-16.0],[49.9,-15.4],[49.7,-15.7],[49.9,-16.5],[49.8,-16.9],[49.5,-17.1],[49.4,-18.0],[49.0,-19.1],[48.5,-20.5],[47.9,-22.4],[47.5,-23.8],[47.1,-24.9],[46.3,-25.2],[45.4,-25.6],[44.8,-25.3],[44.0,-25.0],[43.8,-24.5],[43.7,-23.6],[43.3,-22.8],[43.3,-22.1],[43.4,-21.3],[43.9,-21.2],[43.9,-20.8],[44.4,-20.1],[44.5,-19.4],[44.2,-19.0],[44.0,-18.3],[44.0,-17.4],[44.3,-16.9],[44.4,-16.2],[44.9,-16.2],[45.5,-16.0],[45.9,-15.8],[46.3,-15.8],[46.9,-15.2],[47.7,-14.6],[48.0,-14.1],[47.9,-13.7],[48.3,-13.8],[48.8,-13.1],[48.9,-12.5],[49.2,-12.0],[49.5,-12.5],[49.8,-12.9],[50.1,-13.6]]],[[[143.6,-13.8],[143.9,-14.5],[144.6,-14.2],[144.9,-14.6],[145.4,-15.0],[145.3,-15.4],[145.5,-16.3],[145.6,-16.8],[145.9,-16.9],[146.2,-17.8],[146.1,-18.3],[146.4,-19.0],[147.5,-19.5],[148.2,-20.0],[148.8,-20.4],[148.7,-20.6],[149.3,-21.3],[149.7,-22.3],[150.1,-22.1],[150.5,-22.6],[150.7,-22.4],[150.9,-23.5],[151.6,-24.1],[152.1,-24.5],[152.9,-25.3],[153.1,-26.1],[153.2,-26.6],[153.1,-27.3],[153.6,-28.1],[153.5,-29.0],[153.3,-29.5],[153.1,-30.4],[153.1,-30.9],[152.9,-31.6],[152.5,-32.6],[151.7,-33.0],[151.3,-33.8],[151.0,-34.3],[150.7,-35.2],[150.3,-35.7],[150.1,-36.4],[149.9,-37.1],[150.0,-37.4],[149.4,-37.8],[148.3,-37.8],[147.4,-38.2],[146.9,-38.6],[146.3,-39.0],[145.5,-38.6],[144.9,-38.4],[145.0,-37.9],[144.5,-38.1],[143.6,-38.8],[142.7,-38.5],[142.2,-38.4],[141.6,-38.3],[140.6,-38.0],[140.0,-37.4],[139.8,-36.6],[139.6,-36.1],[139.1,-35.7],[138.1,-35.6],[138.4,-35.1],[138.2,-34.4],[137.7,-35.1],[136.8,-35.3],[137.4,-34.7],[137.5,-34.1],[137.9,-33.6],[137.8,-32.9],[137.0,-33.8],[136.4,-34.1],[136.0,-34.9],[135.2,-34.5],[135.2,-33.9],[134.6,-33.2],[134.1,-32.8],[134.3,-32.6],[133.0,-32.0],[132.3,-32.0],[131.3,-31.5],[129.5,-31.6],[128.2,-31.9],[127.1,-32.3],[126.1,-32.2],[125.1,-32.7],[124.2,-33.0],[124.0,-33.5],[123.7,-33.9],[122.8,-33.9],[122.2,-34.0],[121.3,-33.8],[120.6,-33.9],[119.9,-34.0],[119.3,-34.5],[119.0,-34.5],[118.5,-34.7],[118.0,-35.1],[117.3,-35.0],[116.6,-35.0],[115.6,-34.4],[115.0,-34.2],[115.0,-33.6],[115.5,-33.5],[115.7,-33.3],[115.7,-32.9],[115.8,-32.2],[115.7,-31.6],[115.2,-30.6],[115.0,-30.0],[115.0,-29.5],[114.6,-28.8],[114.6,-28.5],[114.2,-28.1],[114.0,-27.3],[113.5,-26.5],[113.3,-26.1],[113.8,-26.5],[113.4,-25.6],[113.9,-25.9],[114.2,-26.3],[114.2,-25.8],[113.7,-25.0],[113.6,-24.7],[113.4,-24.4],[113.5,-23.8],[113.7,-23.6],[113.8,-23.1],[113.7,-22.5],[114.1,-21.8],[114.2,-22.5],[114.6,-21.8],[115.5,-21.5],[115.9,-21.1],[116.7,-20.7],[117.2,-20.6],[117.4,-20.7],[118.2,-20.4],[118.8,-20.3],[119.0,-20.0],[119.3,-20.0],[119.8,-20.0],[120.9,-19.7],[121.4,-19.2],[121.7,-18.7],[122.2,-18.2],[122.3,-17.8],[122.3,-17.3],[123.0,-16.4],[123.4,-17.3],[123.9,-17.1],[123.5,-16.6],[123.8,-16.1],[124.3,-16.3],[124.4,-15.6],[124.9,-15.1],[125.2,-14.7],[125.7,-14.5],[125.7,-14.2],[126.1,-14.3],[126.1,-14.1],[126.6,-14.0],[127.1,-13.8],[127.8,-14.3],[128.4,-14.9],[129.0,-14.9],[129.6,-15.0],[129.4,-14.4],[129.9,-13.6],[130.3,-13.4],[130.2,-13.1],[130.6,-12.5],[131.2,-12.2],[131.7,-12.3],[132.6,-12.1],[132.6,-11.6],[131.8,-11.3],[132.4,-11.1],[133.0,-11.4],[133.6,-11.8],[134.4,-12.0],[134.7,-11.9],[135.3,-12.2],[135.9,-12.0],[136.3,-12.0],[136.5,-11.9],[137.0,-12.4],[136.7,-12.9],[136.3,-13.3],[136.0,-13.3],[136.1,-13.7],[135.8,-14.2],[135.4,-14.7],[135.5,-15.0],[136.3,-15.6],[137.1,-15.9],[137.6,-16.2],[138.3,-16.8],[138.6,-16.8],[139.1,-17.1],[139.3,-17.4],[140.2,-17.7],[140.9,-17.4],[141.1,-16.8],[141.3,-16.4],[141.4,-15.8],[141.7,-15.0],[141.6,-14.6],[141.6,-14.3],[141.5,-13.7],[141.7,-12.9],[141.8,-12.7],[141.7,-12.4],[141.9,-11.9],[142.1,-11.3],[142.1,-11.0],[142.5,-10.7],[142.8,-11.2],[142.9,-11.8],[143.1,-11.9],[143.2,-12.3],[143.5,-12.8],[143.6,-13.4],[143.6,-13.8]]],[[[162.1,-10.5],[162.4,-10.8],[161.7,-10.8],[161.3,-10.2],[161.9,-10.4],[162.1,-10.5]]],[[[120.7,-10.2],[120.3,-10.3],[119.0,-9.6],[119.9,-9.4],[120.4,-9.7],[120.8,-10.0],[120.7,-10.2]]],[[[160.9,-9.9],[160.5,-9.9],[159.8,-9.8],[159.6,-9.6],[159.7,-9.2],[160.4,-9.4],[160.7,-9.6],[160.9,-9.9]]],[[[161.7,-9.6],[161.5,-9.8],[160.8,-8.9],[160.6,-8.3],[160.9,-8.3],[161.3,-9.1],[161.7,-9.6]]],[[[124.4,-10.1],[123.6,-10.4],[123.5,-10.2],[123.6,-9.9],[124.0,-9.3],[125.0,-8.9],[125.1,-8.7],[125.9,-8.4],[126.6,-8.4],[127.0,-8.3],[127.3,-8.4],[127.0,-8.7],[125.9,-9.1],[125.1,-9.4],[124.4,-10.1]]],[[[117.9,-8.1],[118.3,-8.4],[118.9,-8.3],[119.1,-8.7],[118.0,-8.9],[117.3,-9.0],[116.7,-9.0],[117.1,-8.5],[117.6,-8.4],[117.9,-8.1]]],[[[122.9,-8.1],[122.8,-8.6],[121.3,-8.9],[119.9,-8.8],[119.9,-8.4],[120.7,-8.2],[121.3,-8.5],[122.0,-8.5],[122.9,-8.1]]],[[[159.9,-8.3],[159.9,-8.5],[159.1,-8.1],[158.6,-7.8],[158.2,-7.4],[158.4,-7.3],[158.8,-7.6],[159.6,-8.0],[159.9,-8.3]]],[[[157.5,-7.3],[157.3,-7.4],[156.9,-7.2],[156.5,-6.8],[156.5,-6.6],[157.1,-7.0],[157.5,-7.3]]],[[[108.6,-6.8],[110.5,-6.9],[110.8,-6.5],[112.6,-6.9],[113.0,-7.6],[114.5,-7.8],[115.7,-8.4],[114.6,-8.8],[113.5,-8.3],[112.6,-8.4],[111.5,-8.3],[110.6,-8.1],[109.4,-7.7],[108.7,-7.6],[108.3,-7.8],[106.5,-7.4],[106.3,-6.9],[105.4,-6.9],[106.1,-5.9],[107.3,-6.0],[108.1,-6.3],[108.5,-6.4],[108.6,-6.8]]],[[[134.7,-6.2],[134.2,-6.9],[134.1,-6.1],[134.3,-5.8],[134.5,-5.4],[134.7,-5.7],[134.7,-6.2]]],[[[155.9,-6.8],[155.6,-6.9],[155.2,-6.5],[154.7,-5.9],[154.5,-5.1],[154.7,-5.0],[154.8,-5.3],[155.1,-5.6],[155.5,-6.2],[156.0,-6.5],[155.9,-6.8]]],[[[152.0,-5.5],[151.5,-5.6],[151.3,-5.8],[150.8,-6.1],[150.2,-6.3],[149.7,-6.3],[148.9,-6.0],[148.3,-5.7],[148.4,-5.4],[149.3,-5.6],[149.8,-5.5],[150.0,-5.0],[150.1,-5.0],[150.2,-5.5],[150.8,-5.5],[151.1,-5.1],[151.6,-4.8],[151.5,-4.2],[152.1,-4.1],[152.3,-4.3],[152.3,-4.9],[152.0,-5.5]]],[[[127.2,-3.5],[126.9,-3.8],[126.2,-3.6],[126.0,-3.2],[127.0,-3.1],[127.2,-3.5]]],[[[130.5,-3.1],[130.8,-3.9],[130.0,-3.4],[129.2,-3.4],[128.6,-3.4],[127.9,-3.4],[128.1,-2.8],[129.4,-2.8],[130.5,-3.1]]],[[[153.1,-4.5],[152.8,-4.8],[152.6,-4.2],[152.4,-3.8],[152.0,-3.5],[151.4,-3.0],[150.7,-2.7],[150.9,-2.5],[151.5,-2.8],[151.8,-3.0],[152.2,-3.2],[152.6,-3.7],[153.0,-4.0],[153.1,-4.5]]],[[[134.1,-1.2],[134.4,-2.8],[135.5,-3.4],[136.3,-2.3],[137.4,-1.7],[138.3,-1.7],[139.2,-2.1],[139.9,-2.4],[141.0,-2.6],[142.7,-3.3],[144.6,-3.9],[145.3,-4.4],[145.8,-4.9],[146.0,-5.5],[147.6,-6.1],[147.9,-6.6],[147.0,-6.7],[147.2,-7.4],[148.1,-8.0],[148.7,-9.1],[149.3,-9.1],[149.3,-9.5],[150.0,-9.7],[149.7,-9.9],[150.8,-10.3],[150.7,-10.6],[150.0,-10.7],[149.8,-10.4],[148.9,-10.3],[147.9,-10.1],[147.1,-9.5],[146.6,-8.9],[146.0,-8.1],[144.7,-7.6],[143.9,-7.9],[143.3,-8.2],[143.4,-9.0],[142.6,-9.3],[142.1,-9.2],[141.0,-9.1],[140.1,-8.3],[139.1,-8.1],[138.9,-8.4],[137.6,-8.4],[138.0,-7.6],[138.7,-7.3],[138.4,-6.2],[137.9,-5.4],[136.0,-4.5],[135.2,-4.5],[133.7,-3.5],[133.4,-4.0],[133.0,-4.1],[132.8,-3.7],[132.8,-3.3],[132.0,-2.8],[133.1,-2.5],[133.8,-2.5],[133.7,-2.2],[132.2,-2.2],[131.8,-1.6],[130.9,-1.4],[130.5,-0.9],[131.9,-0.7],[132.4,-0.4],[134.0,-0.8],[134.1,-1.2]]],[[[125.2,1.4],[124.4,0.4],[123.7,0.2],[122.7,0.4],[121.1,0.4],[120.2,0.2],[120.0,-0.5],[120.9,-1.4],[121.5,-1.0],[123.3,-0.6],[123.3,-1.1],[122.8,-0.9],[122.4,-1.5],[121.5,-1.9],[122.5,-3.2],[122.3,-3.5],[123.2,-4.7],[123.2,-5.3],[122.6,-5.6],[122.2,-5.3],[122.7,-4.5],[121.7,-4.9],[121.5,-4.6],[121.6,-4.2],[120.9,-3.6],[121.0,-2.6],[120.3,-2.9],[120.4,-4.1],[120.4,-5.5],[119.8,-5.7],[119.4,-5.4],[119.7,-4.5],[119.5,-3.5],[119.1,-3.5],[118.8,-2.8],[119.2,-2.1],[119.3,-1.4],[119.8,0.2],[120.0,0.6],[120.9,1.3],[121.7,1.0],[122.9,0.9],[124.1,0.9],[125.1,1.6],[125.2,1.4]]],[[[128.7,1.1],[128.6,0.3],[128.1,0.4],[128.0,-0.3],[128.4,-0.8],[128.1,-0.9],[127.7,-0.3],[127.4,1.0],[127.6,1.8],[127.9,2.2],[128.0,1.6],[128.6,1.5],[128.7,1.1]]],[[[105.8,-5.9],[104.7,-5.9],[103.9,-5.0],[102.6,-4.2],[102.2,-3.6],[101.4,-2.8],[100.9,-2.1],[100.1,-0.7],[99.3,0.2],[99.0,1.0],[98.6,1.8],[97.7,2.5],[97.2,3.3],[96.4,3.9],[95.4,5.0],[95.3,5.5],[95.9,5.4],[97.5,5.2],[98.4,4.3],[99.1,3.6],[99.7,3.2],[100.6,2.1],[101.7,2.1],[102.5,1.4],[103.1,0.6],[103.8,0.1],[103.4,-0.7],[104.0,-1.1],[104.4,-1.1],[104.5,-1.8],[104.9,-2.3],[105.6,-2.4],[106.1,-3.1],[105.9,-4.3],[105.8,-5.9]]],[[[117.9,1.8],[119.0,0.9],[117.8,0.8],[117.5,0.1],[117.5,-0.8],[116.6,-1.5],[116.5,-2.5],[116.1,-4.0],[116.0,-3.7],[114.9,-4.1],[114.5,-3.5],[113.8,-3.4],[113.3,-3.1],[112.1,-3.5],[111.7,-3.0],[111.0,-3.0],[110.2,-2.9],[110.1,-1.6],[109.6,-1.3],[109.1,-0.5],[109.0,0.4],[109.1,1.3],[109.7,2.0],[110.4,1.7],[111.2,1.9],[111.4,2.7],[111.8,2.9],[113.0,3.1],[113.7,3.9],[114.2,4.5],[114.6,4.9],[115.5,5.4],[116.2,6.1],[116.7,6.9],[117.1,6.9],[117.6,6.4],[117.7,6.0],[118.3,5.7],[119.2,5.4],[119.1,5.0],[118.4,5.0],[118.6,4.5],[117.9,4.1],[117.3,3.2],[118.0,2.3],[117.9,1.8]]],[[[126.4,8.4],[126.5,7.8],[126.5,7.2],[126.2,6.3],[125.8,7.3],[125.4,6.8],[125.7,6.0],[125.4,5.6],[124.2,6.2],[123.9,6.9],[124.2,7.4],[123.6,7.8],[123.3,7.4],[122.8,7.5],[122.1,6.9],[121.9,7.2],[122.3,8.0],[122.9,8.3],[123.5,8.7],[123.8,8.2],[124.6,8.5],[124.8,9.0],[125.5,9.0],[125.4,9.8],[126.2,9.3],[126.3,8.8],[126.4,8.4]]],[[[81.2,6.2],[80.3,6.0],[79.9,6.8],[79.7,8.2],[80.1,9.8],[80.8,9.3],[81.3,8.6],[81.8,7.5],[81.6,6.5],[81.2,6.2]]],[[[-60.9,10.1],[-61.8,10],[-62.0,10.1],[-61.7,10.4],[-61.7,10.8],[-61.1,10.9],[-60.9,10.9],[-60.9,10.1]]],[[[124.0,10.3],[123.6,10.0],[123.3,9.3],[123.0,9.0],[122.4,9.7],[122.6,10.0],[122.8,10.3],[122.9,10.9],[123.5,10.9],[123.3,10.3],[124.1,11.2],[124.0,10.3]]],[[[118.5,9.3],[117.2,8.4],[117.7,9.1],[118.4,9.7],[119.0,10.4],[119.5,11.4],[119.7,10.6],[119.0,10.0],[118.5,9.3]]],[[[121.9,11.9],[122.5,11.6],[123.1,11.6],[123.1,11.2],[122.6,10.7],[122.0,10.4],[122.0,10.9],[122.0,11.4],[121.9,11.9]]],[[[125.5,12.2],[125.8,11.0],[125.0,11.3],[125.0,11.0],[125.3,10.4],[124.8,10.1],[124.8,10.8],[124.5,10.9],[124.3,11.5],[124.9,11.4],[124.9,11.8],[124.3,12.6],[125.2,12.5],[125.5,12.2]]],[[[121.5,13.1],[121.3,12.2],[120.8,12.7],[120.3,13.5],[121.2,13.4],[121.5,13.1]]],[[[121.3,18.5],[121.9,18.2],[122.2,18.5],[122.3,18.2],[122.2,17.8],[122.5,17.1],[122.3,16.3],[121.7,15.9],[121.5,15.1],[121.7,14.3],[122.3,14.2],[122.7,14.3],[124.0,13.8],[123.9,13.2],[124.2,13.0],[124.1,12.5],[123.3,13.0],[122.9,13.6],[122.7,13.2],[122.0,13.8],[121.1,13.6],[120.6,13.9],[120.7,14.3],[121.0,14.5],[120.7,14.8],[120.6,14.4],[120.1,15.0],[119.9,15.4],[119.9,16.4],[120.3,16.0],[120.4,17.6],[120.7,18.5],[121.3,18.5]]],[[[-65.6,18.2],[-65.8,18.0],[-66.6,18.0],[-67.2,17.9],[-67.2,18.4],[-67.1,18.5],[-66.3,18.5],[-65.8,18.4],[-65.6,18.2]]],[[[-76.9,17.9],[-77.2,17.7],[-77.8,17.9],[-78.3,18.2],[-78.2,18.5],[-77.8,18.5],[-77.6,18.5],[-76.9,18.4],[-76.4,18.2],[-76.2,17.9],[-76.9,17.9]]],[[[-72.6,19.9],[-71.7,19.7],[-71.6,19.9],[-70.8,19.9],[-70.2,19.6],[-70.0,19.6],[-69.8,19.3],[-69.2,19.3],[-69.3,19.0],[-68.8,19.0],[-68.3,18.6],[-68.7,18.2],[-69.2,18.4],[-69.6,18.4],[-70.0,18.4],[-70.1,18.2],[-70.5,18.2],[-70.7,18.4],[-71.0,18.3],[-71.4,17.6],[-71.7,17.8],[-71.7,18.0],[-72.4,18.2],[-72.8,18.1],[-73.5,18.2],[-73.9,18.0],[-74.5,18.3],[-74.4,18.7],[-73.4,18.5],[-72.7,18.4],[-72.3,18.7],[-72.8,19.1],[-72.8,19.5],[-73.4,19.6],[-73.2,19.9],[-72.6,19.9]]],[[[110.3,18.7],[109.5,18.2],[108.7,18.5],[108.6,19.4],[109.1,19.8],[110.2,20.1],[110.8,20.1],[111.0,19.7],[110.6,19.3],[110.3,18.7]]],[[[-155.5,19.1],[-155.7,18.9],[-155.9,19.1],[-155.9,19.3],[-156.1,19.7],[-156.0,19.8],[-155.9,20.0],[-155.9,20.2],[-155.9,20.3],[-155.8,20.2],[-155.4,20.1],[-155.2,20.0],[-155.1,19.9],[-154.8,19.5],[-155.2,19.2],[-155.5,19.1]]],[[[-156.1,20.6],[-156.4,20.6],[-156.6,20.8],[-156.7,20.9],[-156.6,21.0],[-156.3,20.9],[-156.0,20.8],[-156.1,20.6]]],[[[-156.8,21.2],[-156.8,21.1],[-157.3,21.1],[-157.3,21.2],[-156.8,21.2]]],[[[-157.7,21.3],[-157.8,21.3],[-158.1,21.3],[-158.3,21.5],[-158.3,21.6],[-158.0,21.7],[-157.9,21.7],[-157.7,21.3]]],[[[-159.3,22.0],[-159.5,21.9],[-159.8,22.1],[-159.7,22.1],[-159.6,22.2],[-159.4,22.2],[-159.3,22.0]]],[[[-79.7,22.8],[-79.3,22.4],[-78.3,22.5],[-78.0,22.3],[-77.1,21.7],[-76.5,21.2],[-76.2,21.2],[-75.6,21.0],[-75.7,20.7],[-74.9,20.7],[-74.2,20.3],[-74.3,20.1],[-75.0,19.9],[-75.6,19.9],[-76.3,20.0],[-77.8,19.9],[-77.1,20.4],[-77.5,20.7],[-78.1,20.7],[-78.5,21.0],[-78.7,21.6],[-79.3,21.6],[-80.2,21.8],[-80.5,22.0],[-81.8,22.2],[-82.2,22.4],[-81.8,22.6],[-82.8,22.7],[-83.5,22.2],[-83.9,22.2],[-84.1,21.9],[-84.5,21.8],[-85.0,21.9],[-84.4,22.2],[-84.2,22.6],[-83.8,22.8],[-83.3,23.0],[-82.5,23.1],[-82.3,23.2],[-81.4,23.1],[-80.6,23.1],[-79.7,22.8]]],[[[-77.5,23.8],[-77.8,23.7],[-78.0,24.3],[-78.4,24.6],[-78.2,25.2],[-77.9,25.2],[-77.5,24.3],[-77.5,23.8]]],[[[121.2,22.8],[120.7,22.0],[120.2,22.8],[120.1,23.6],[120.7,24.5],[121.5,25.3],[122.0,25.0],[121.8,24.4],[121.2,22.8]]],[[[-77.8,26.6],[-78.9,26.4],[-79.0,26.8],[-78.5,26.9],[-77.8,26.8],[-77.8,26.6]]],[[[-77,26.6],[-77.2,25.9],[-77.4,26.0],[-77.3,26.5],[-77.8,26.9],[-77.8,27.0],[-77,26.6]]],[[[134.6,34.1],[134.8,33.8],[134.2,33.2],[133.8,33.5],[133.3,33.3],[133.0,32.7],[132.4,33.0],[132.4,33.5],[132.9,34.1],[133.5,33.9],[133.9,34.4],[134.6,34.1]]],[[[34.6,35.7],[33.9,35.2],[34.0,35.1],[34.0,35.0],[33.0,34.6],[32.5,34.7],[32.3,35.1],[32.7,35.1],[32.8,35.1],[32.9,35.4],[33.7,35.4],[34.6,35.7]]],[[[23.7,35.7],[24.2,35.4],[25.0,35.4],[25.8,35.4],[25.7,35.2],[26.3,35.3],[26.2,35.0],[24.7,34.9],[24.7,35.1],[23.5,35.3],[23.7,35.7]]],[[[15.5,38.2],[15.2,37.4],[15.3,37.1],[15.1,36.6],[14.3,37.0],[13.8,37.1],[12.4,37.6],[12.6,38.1],[13.7,38.0],[14.8,38.1],[15.5,38.2]]],[[[9.2,41.2],[9.8,40.5],[9.7,39.2],[9.2,39.2],[8.8,38.9],[8.4,39.2],[8.4,40.4],[8.2,41.0],[8.7,40.9],[9.2,41.2]]],[[[141.0,37.1],[140.6,36.3],[140.8,35.8],[140.3,35.1],[139.0,34.7],[137.2,34.6],[135.8,33.5],[135.1,33.8],[135.1,34.6],[133.3,34.4],[132.2,33.9],[131.0,33.9],[132.0,33.1],[131.3,31.5],[130.7,31.0],[130.2,31.4],[130.4,32.3],[129.8,32.6],[129.4,33.3],[130.4,33.6],[130.9,34.2],[131.9,34.7],[132.6,35.4],[134.6,35.7],[135.7,35.5],[136.7,37.3],[137.4,36.8],[138.9,37.8],[139.4,38.2],[140.1,39.4],[139.9,40.6],[140.3,41.2],[141.4,41.4],[141.9,40.0],[141.9,39.2],[141.0,38.2],[141.0,37.1]]],[[[9.6,42.2],[9.2,41.4],[8.8,41.6],[8.5,42.3],[8.7,42.6],[9.4,43.0],[9.6,42.2]]],[[[143.9,44.2],[144.6,44.0],[145.3,44.4],[145.5,43.3],[144.1,43.0],[143.2,42.0],[141.6,42.7],[141.1,41.6],[140.0,41.6],[139.8,42.6],[140.3,43.3],[141.4,43.4],[141.7,44.8],[142.0,45.6],[143.1,44.5],[143.9,44.2]]],[[[-63.7,46.6],[-62.9,46.4],[-62.0,46.4],[-62.5,46.0],[-62.9,46.0],[-64.1,46.4],[-64.4,46.7],[-64.0,47.0],[-63.7,46.6]]],[[[-61.8,49.1],[-62.3,49.1],[-63.6,49.4],[-64.5,49.9],[-64.2,50.0],[-62.9,49.7],[-61.8,49.3],[-61.8,49.1]]],[[[-123.5,48.5],[-124.0,48.4],[-125.7,48.8],[-126.0,49.2],[-126.9,49.5],[-127.0,49.8],[-128.1,50.0],[-128.4,50.5],[-128.4,50.8],[-127.3,50.6],[-126.7,50.4],[-125.8,50.3],[-125.4,50.0],[-124.9,49.5],[-123.9,49.1],[-123.5,48.5]]],[[[-56.1,50.7],[-56.8,49.8],[-56.1,50.2],[-55.5,49.9],[-55.8,49.6],[-54.9,49.3],[-54.5,49.6],[-53.5,49.2],[-53.8,48.5],[-53.1,48.7],[-53.0,48.2],[-52.6,47.5],[-53.1,46.7],[-53.5,46.6],[-54.2,46.8],[-54.0,47.6],[-54.2,47.8],[-55.4,46.9],[-56.0,46.9],[-55.3,47.4],[-56.3,47.6],[-57.3,47.6],[-59.3,47.6],[-59.4,47.9],[-58.8,48.3],[-59.2,48.5],[-58.4,49.1],[-57.4,50.7],[-56.7,51.3],[-55.9,51.6],[-55.4,51.6],[-55.6,51.3],[-56.1,50.7]]],[[[-132.7,54.0],[-131.7,54.1],[-132.0,53.0],[-131.2,52.2],[-131.6,52.2],[-132.2,52.6],[-132.5,53.1],[-133.1,53.4],[-133.2,53.9],[-133.2,54.2],[-132.7,54.0]]],[[[143.6,50.7],[144.7,49.0],[143.2,49.3],[142.6,47.9],[143.5,46.8],[143.5,46.1],[142.7,46.7],[142.1,46.0],[141.9,46.8],[142.0,47.8],[141.9,48.9],[142.1,49.6],[142.2,51.0],[141.6,51.9],[141.7,53.3],[142.6,53.8],[142.2,54.2],[142.7,54.4],[142.9,53.7],[143.3,52.7],[143.2,51.8],[143.6,50.7]]],[[[-6.8,52.3],[-8.6,51.7],[-10.0,51.8],[-9.2,52.9],[-9.7,53.9],[-8.3,54.7],[-7.6,55.1],[-6.7,55.2],[-5.7,54.6],[-6.2,53.9],[-6.0,53.2],[-6.8,52.3]]],[[[12.7,55.6],[12.1,54.8],[11.0,55.4],[10.9,55.8],[12.4,56.1],[12.7,55.6]]],[[[-153.0,57.1],[-154.0,56.7],[-154.5,57.0],[-154.7,57.5],[-153.8,57.8],[-153.2,58.0],[-152.6,57.9],[-152.1,57.6],[-153.0,57.1]]],[[[-3.0,58.6],[-4.1,57.6],[-3.1,57.7],[-2.0,57.7],[-2.2,56.9],[-3.1,56.0],[-2.1,55.9],[-1.1,54.6],[-0.4,54.5],[0.2,53.3],[0.5,52.9],[1.7,52.7],[1.6,52.1],[1.1,51.8],[1.4,51.3],[0.6,50.8],[-0.8,50.8],[-2.5,50.5],[-3.0,50.7],[-3.6,50.2],[-4.5,50.3],[-5.2,50.0],[-5.8,50.2],[-4.3,51.2],[-3.4,51.4],[-5.0,51.6],[-5.3,52.0],[-4.2,52.3],[-4.8,52.8],[-4.6,53.5],[-3.1,53.4],[-2.9,54.0],[-3.6,54.6],[-4.8,54.8],[-5.1,55.1],[-4.7,55.5],[-5.0,55.8],[-5.6,55.3],[-5.6,56.3],[-6.1,56.8],[-5.8,57.8],[-5.0,58.6],[-4.2,58.6],[-3.0,58.6]]],[[[-165.6,59.9],[-166.2,59.8],[-166.8,59.9],[-167.5,60.2],[-166.5,60.4],[-165.7,60.3],[-165.6,59.9]]],[[[-79.3,62.2],[-79.7,61.6],[-80.1,61.7],[-80.4,62.0],[-80.3,62.1],[-79.9,62.4],[-79.5,62.4],[-79.3,62.2]]],[[[-81.9,62.7],[-83.1,62.2],[-83.8,62.2],[-84.0,62.5],[-83.3,62.9],[-81.9,62.9],[-81.9,62.7]]],[[[-171.7,63.8],[-171.1,63.6],[-170.5,63.7],[-169.7,63.4],[-168.7,63.3],[-168.8,63.2],[-169.5,63.0],[-170.3,63.2],[-170.7,63.4],[-171.6,63.3],[-171.8,63.4],[-171.7,63.8]]],[[[-85.2,65.7],[-85.0,65.2],[-84.5,65.4],[-83.9,65.1],[-82.8,64.8],[-81.6,64.5],[-81.6,64.0],[-80.8,64.1],[-80.1,63.7],[-81.0,63.4],[-82.5,63.7],[-83.1,64.1],[-84.1,63.6],[-85.5,63.1],[-85.9,63.6],[-87.2,63.5],[-86.4,64.0],[-86.2,64.8],[-85.9,65.7],[-85.2,65.7]]],[[[-14.5,66.5],[-14.7,65.8],[-13.6,65.1],[-14.9,64.4],[-17.8,63.7],[-18.7,63.5],[-20.0,63.6],[-22.8,64.0],[-21.8,64.4],[-24.0,64.9],[-22.2,65.1],[-22.2,65.4],[-24.3,65.6],[-23.7,66.3],[-22.1,66.4],[-20.6,65.7],[-19.1,66.3],[-17.8,66.0],[-16.2,66.5],[-14.5,66.5]]],[[[-75.9,67.1],[-77.0,67.1],[-77.2,67.6],[-76.8,68.1],[-75.9,68.3],[-75.1,68.0],[-75.1,67.6],[-75.2,67.4],[-75.9,67.1]]],[[[-175.0,66.6],[-174.3,66.3],[-174.6,67.1],[-171.9,66.9],[-169.9,66.0],[-170.9,65.5],[-172.5,65.4],[-172.6,64.5],[-173.0,64.3],[-173.9,64.3],[-174.7,64.6],[-176.0,64.9],[-176.2,65.4],[-177.2,65.5],[-178.4,65.4],[-178.9,65.7],[-178.7,66.1],[-179.9,65.9],[-179.4,65.4],[-180,65.0],[-180,69.0],[-177.6,68.2],[-174.9,67.2],[-175.0,66.6]]],[[[-95.6,69.1],[-96.3,68.8],[-97.6,69.1],[-98.4,69.0],[-99.8,69.4],[-98.9,69.7],[-98.2,70.1],[-97.2,69.9],[-96.6,69.7],[-96.3,69.5],[-95.6,69.1]]],[[[180,70.8],[178.9,70.8],[178.7,71.1],[180,71.5],[180,70.8]]],[[[-178.7,70.9],[-180,70.8],[-180,71.5],[-179.9,71.6],[-179.0,71.6],[-177.6,71.3],[-177.7,71.1],[-178.7,70.9]]],[[[-90.5,69.5],[-90.6,68.5],[-89.2,69.3],[-88.0,68.6],[-88.3,67.9],[-87.4,67.2],[-86.3,67.9],[-85.6,68.8],[-85.5,69.9],[-84.1,69.8],[-82.6,69.7],[-81.3,69.2],[-81.2,68.7],[-82.0,68.1],[-81.3,67.6],[-81.4,67.1],[-83.3,66.4],[-84.7,66.3],[-85.8,66.6],[-86.1,66.1],[-87.0,65.2],[-87.3,64.8],[-88.5,64.1],[-89.9,64.0],[-90.7,63.6],[-90.8,63.0],[-91.9,62.8],[-93.2,62.0],[-94.2,60.9],[-94.6,60.1],[-94.7,58.9],[-93.2,58.8],[-92.8,57.8],[-92.3,57.1],[-90.9,57.3],[-89.0,56.9],[-88.0,56.5],[-87.3,56.0],[-86.1,55.7],[-85.0,55.3],[-83.4,55.2],[-82.3,55.1],[-82.4,54.3],[-82.1,53.3],[-81.4,52.2],[-79.9,51.2],[-79.1,51.5],[-78.6,52.6],[-79.1,54.1],[-79.8,54.7],[-78.2,55.1],[-77.1,55.8],[-76.5,56.5],[-76.6,57.2],[-77.3,58.1],[-78.5,58.8],[-77.3,59.9],[-77.8,60.8],[-78.1,62.3],[-77.4,62.6],[-75.7,62.3],[-74.7,62.2],[-73.8,62.4],[-72.9,62.1],[-71.7,61.5],[-71.4,61.1],[-69.6,61.1],[-69.6,60.2],[-69.3,59.0],[-68.4,58.8],[-67.6,58.2],[-66.2,58.8],[-65.2,59.9],[-64.6,60.3],[-63.8,59.4],[-62.5,58.2],[-61.4,57.0],[-61.8,56.3],[-60.5,55.8],[-59.6,55.2],[-58.0,54.9],[-57.3,54.6],[-56.9,53.8],[-56.2,53.6],[-55.8,53.3],[-55.7,52.1],[-56.4,51.8],[-57.1,51.4],[-58.8,51.1],[-60.0,50.2],[-61.7,50.1],[-63.9,50.3],[-65.4,50.3],[-66.4,50.2],[-67.2,49.5],[-68.5,49.1],[-70.0,47.7],[-71.1,46.8],[-70.3,47.0],[-68.7,48.3],[-66.6,49.1],[-65.1,49.2],[-64.2,48.7],[-65.1,48.1],[-64.8,47.0],[-64.5,46.2],[-63.2,45.7],[-61.5,45.9],[-60.5,47.0],[-60.4,46.3],[-59.8,45.9],[-61.0,45.3],[-63.3,44.7],[-64.2,44.3],[-65.4,43.5],[-66.1,43.6],[-66.2,44.5],[-64.4,45.3],[-66.0,45.3],[-67.1,45.1],[-67.0,44.8],[-68.0,44.3],[-69.1,44.0],[-70.1,43.7],[-70.7,43.0],[-70.8,42.9],[-70.8,42.3],[-70.5,41.8],[-70.1,41.8],[-70.2,42.1],[-69.9,41.9],[-70.0,41.6],[-70.6,41.5],[-71.1,41.5],[-71.9,41.3],[-72.3,41.3],[-72.9,41.2],[-73.7,40.9],[-72.2,41.1],[-71.9,40.9],[-73.3,40.6],[-74.0,40.6],[-74.0,40.8],[-74.3,40.5],[-74.0,40.4],[-74.2,39.7],[-74.9,38.9],[-75.0,39.2],[-75.2,39.2],[-75.5,39.5],[-75.3,39.0],[-75.1,38.8],[-75.1,38.4],[-75.4,38.0],[-75.9,37.2],[-76.0,37.3],[-75.7,37.9],[-76.2,38.3],[-76.3,39.2],[-76.5,38.7],[-76.3,38.1],[-77.0,38.2],[-76.3,37.9],[-76.3,37.0],[-76.0,36.9],[-75.9,36.6],[-75.7,35.6],[-76.4,34.8],[-77.4,34.5],[-78.1,33.9],[-78.6,33.9],[-79.1,33.5],[-79.2,33.2],[-80.3,32.5],[-80.9,32.0],[-81.3,31.4],[-81.5,30.7],[-81.3,30.0],[-81.0,29.2],[-80.5,28.5],[-80.5,28.0],[-80.1,26.9],[-80.1,26.2],[-80.1,25.8],[-80.4,25.2],[-80.7,25.1],[-81.2,25.2],[-81.3,25.6],[-81.7,25.9],[-82.2,26.7],[-82.7,27.5],[-82.9,27.9],[-82.7,28.6],[-82.9,29.1],[-83.7,29.9],[-84.1,30.1],[-85.1,29.6],[-85.3,29.7],[-85.8,30.2],[-86.4,30.4],[-87.5,30.3],[-88.4,30.4],[-89.2,30.3],[-89.6,30.2],[-89.4,29.9],[-89.4,29.5],[-89.2,29.3],[-89.4,29.2],[-89.8,29.3],[-90.2,29.1],[-90.9,29.1],[-91.6,29.7],[-92.5,29.6],[-93.2,29.8],[-93.8,29.7],[-94.7,29.5],[-95.6,28.7],[-96.6,28.3],[-97.1,27.8],[-97.4,27.4],[-97.4,26.7],[-97.3,26.2],[-97.1,25.9],[-97.5,25.0],[-97.7,24.3],[-97.8,22.9],[-97.9,22.4],[-97.7,21.9],[-97.4,21.4],[-97.2,20.6],[-96.5,19.9],[-96.3,19.3],[-95.9,18.8],[-94.8,18.6],[-94.4,18.1],[-93.5,18.4],[-92.8,18.5],[-92.0,18.7],[-91.4,18.9],[-90.8,19.3],[-90.5,19.9],[-90.5,20.7],[-90.3,21.0],[-89.6,21.3],[-88.5,21.5],[-87.7,21.5],[-87.1,21.5],[-86.8,21.3],[-86.8,20.8],[-87.4,20.3],[-87.6,19.6],[-87.4,19.5],[-87.6,19.0],[-87.8,18.3],[-88.1,18.5],[-88.3,18.5],[-88.3,18.4],[-88.1,18.3],[-88.1,18.1],[-88.3,17.6],[-88.2,17.5],[-88.3,17.1],[-88.2,17.0],[-88.4,16.5],[-88.6,16.3],[-88.7,16.2],[-88.9,15.9],[-88.6,15.7],[-88.5,15.9],[-88.2,15.7],[-88.1,15.7],[-87.9,15.9],[-87.6,15.9],[-87.5,15.8],[-87.4,15.8],[-86.9,15.8],[-86.4,15.8],[-86.1,15.9],[-86.0,16.0],[-85.7,16.0],[-85.4,15.9],[-85.2,15.9],[-85.0,16.0],[-84.5,15.9],[-84.4,15.8],[-84.1,15.6],[-83.8,15.4],[-83.4,15.3],[-83.1,15.0],[-83.2,14.9],[-83.3,14.7],[-83.2,14.3],[-83.4,14.0],[-83.5,13.6],[-83.6,13.1],[-83.5,12.9],[-83.5,12.4],[-83.6,12.3],[-83.7,11.9],[-83.7,11.6],[-83.9,11.4],[-83.8,11.1],[-83.7,10.9],[-83.4,10.4],[-83.0,10.0],[-82.5,9.6],[-82.2,9.2],[-82.2,9.0],[-81.8,9.0],[-81.7,9.0],[-81.4,8.8],[-80.9,8.9],[-80.5,9.1],[-79.9,9.3],[-79.6,9.6],[-79.0,9.6],[-79.1,9.5],[-78.5,9.4],[-78.1,9.2],[-77.7,8.9],[-77.4,8.7],[-76.8,8.6],[-76.1,9.3],[-75.7,9.4],[-75.7,9.8],[-75.5,10.6],[-74.9,11.1],[-74.3,11.1],[-74.2,11.3],[-73.4,11.2],[-72.6,11.7],[-72.2,12.0],[-71.8,12.4],[-71.4,12.4],[-71.1,12.1],[-71.3,11.8],[-71.4,11.5],[-71.9,11.4],[-71.6,11.0],[-71.6,10.4],[-72.1,9.9],[-71.7,9.1],[-71.3,9.1],[-71.0,9.9],[-71.4,10.2],[-71.4,11.0],[-70.2,11.4],[-70.3,11.8],[-69.9,12.2],[-69.6,11.5],[-68.9,11.4],[-68.2,10.9],[-68.2,10.6],[-67.3,10.5],[-66.2,10.6],[-65.7,10.2],[-64.9,10.1],[-64.3,10.4],[-64.3,10.6],[-63.1,10.7],[-61.9,10.7],[-62.7,10.4],[-62.4,9.9],[-61.6,9.9],[-60.8,9.4],[-60.7,8.6],[-60.2,8.6],[-59.8,8.4],[-59.1,8.0],[-58.5,7.3],[-58.5,6.8],[-58.1,6.8],[-57.5,6.3],[-57.1,6.0],[-55.9,5.8],[-55.8,6.0],[-55.0,6.0],[-54.0,5.8],[-53.6,5.6],[-52.9,5.4],[-51.8,4.6],[-51.7,4.2],[-51.3,4.2],[-51.1,3.7],[-50.5,1.9],[-50.0,1.7],[-49.9,1.0],[-50.7,0.2],[-50.4,-0.1],[-48.6,-0.2],[-48.6,-1.2],[-47.8,-0.6],[-46.6,-0.9],[-44.9,-1.6],[-44.4,-2.1],[-44.6,-2.7],[-43.4,-2.4],[-41.5,-2.9],[-40.0,-2.9],[-38.5,-3.7],[-37.2,-4.8],[-36.5,-5.1],[-35.6,-5.1],[-35.2,-5.5],[-34.9,-6.7],[-34.7,-7.3],[-35.1,-9.0],[-35.6,-9.6],[-37.0,-11.0],[-37.7,-12.2],[-38.4,-13.0],[-38.7,-13.1],[-39.0,-13.8],[-38.9,-15.7],[-39.2,-17.2],[-39.3,-17.9],[-39.6,-18.3],[-39.8,-19.6],[-40.8,-20.9],[-40.9,-21.9],[-41.8,-22.4],[-42.0,-23.0],[-43.1,-23.0],[-44.6,-23.4],[-45.4,-23.8],[-46.5,-24.1],[-47.6,-24.9],[-48.5,-25.9],[-48.6,-26.6],[-48.5,-27.2],[-48.7,-28.2],[-48.9,-28.7],[-49.6,-29.2],[-50.7,-31.0],[-51.6,-31.8],[-52.3,-32.2],[-52.7,-33.2],[-53.4,-33.8],[-53.8,-34.4],[-54.9,-35.0],[-55.7,-34.8],[-56.2,-34.9],[-57.1,-34.4],[-57.8,-34.5],[-58.4,-33.9],[-58.5,-34.4],[-57.2,-35.3],[-57.4,-36.0],[-56.7,-36.4],[-56.8,-36.9],[-57.7,-38.2],[-59.2,-38.7],[-61.2,-38.9],[-62.3,-38.8],[-62.1,-39.4],[-62.3,-40.2],[-62.1,-40.7],[-62.7,-41.0],[-63.8,-41.2],[-64.7,-40.8],[-65.1,-41.1],[-65.0,-42.1],[-64.3,-42.4],[-63.8,-42.0],[-63.5,-42.6],[-64.4,-42.9],[-65.2,-43.5],[-65.3,-44.5],[-65.6,-45.0],[-66.5,-45.0],[-67.3,-45.6],[-67.6,-46.3],[-66.6,-47.0],[-65.6,-47.2],[-66.0,-48.1],[-67.2,-48.7],[-67.8,-49.9],[-68.7,-50.3],[-69.1,-50.7],[-68.8,-51.8],[-68.2,-52.3],[-68.6,-52.3],[-69.5,-52.3],[-69.9,-52.5],[-70.8,-52.9],[-71.0,-53.8],[-71.4,-53.9],[-72.6,-53.5],[-73.7,-52.8],[-74.9,-52.3],[-75.3,-51.6],[-75.0,-51.0],[-75.5,-50.4],[-75.6,-48.7],[-75.2,-47.7],[-74.1,-46.9],[-75.6,-46.6],[-74.7,-45.8],[-74.4,-44.1],[-73.2,-44.5],[-72.7,-42.4],[-73.4,-42.1],[-73.7,-43.4],[-74.3,-43.2],[-74.0,-41.8],[-73.7,-39.9],[-73.2,-39.3],[-73.5,-38.3],[-73.6,-37.2],[-73.2,-37.1],[-72.6,-35.5],[-71.9,-33.9],[-71.4,-32.4],[-71.7,-30.9],[-71.4,-30.1],[-71.5,-28.9],[-70.9,-27.6],[-70.7,-25.7],[-70.4,-23.6],[-70.1,-21.4],[-70.2,-19.8],[-70.4,-18.3],[-71.4,-17.8],[-71.5,-17.4],[-73.4,-16.4],[-75.2,-15.3],[-76.0,-14.6],[-76.4,-13.8],[-76.3,-13.5],[-77.1,-12.2],[-78.1,-10.4],[-79.0,-8.4],[-79.4,-7.9],[-79.8,-7.2],[-80.5,-6.5],[-81.2,-6.1],[-80.9,-5.7],[-81.4,-4.7],[-81.1,-4.0],[-80.3,-3.4],[-79.8,-2.7],[-80.0,-2.2],[-80.4,-2.7],[-81.0,-2.2],[-80.8,-2.0],[-80.9,-1.1],[-80.6,-0.9],[-80.4,-0.3],[-80.0,0.4],[-80.1,0.8],[-79.5,1.0],[-78.9,1.4],[-79.0,1.7],[-78.6,1.8],[-78.7,2.3],[-78.4,2.6],[-77.9,2.7],[-77.5,3.3],[-77.1,3.8],[-77.5,4.1],[-77.3,4.7],[-77.5,5.6],[-77.3,5.8],[-77.5,6.7],[-77.9,7.2],[-78.2,7.5],[-78.4,8.1],[-78.2,8.3],[-78.4,8.4],[-78.6,8.7],[-79.1,9.0],[-79.6,8.9],[-79.8,8.6],[-80.2,8.3],[-80.4,8.3],[-80.5,8.1],[-80.0,7.5],[-80.3,7.4],[-80.4,7.3],[-80.9,7.2],[-81.1,7.8],[-81.2,7.6],[-81.5,7.7],[-81.7,8.1],[-82.1,8.2],[-82.4,8.3],[-82.8,8.3],[-82.9,8.1],[-83.0,8.2],[-83.5,8.4],[-83.7,8.7],[-83.6,8.8],[-83.6,9.1],[-83.9,9.3],[-84.3,9.5],[-84.6,9.6],[-84.7,9.9],[-85.0,10.1],[-84.9,9.8],[-85.1,9.6],[-85.3,9.8],[-85.7,9.9],[-85.8,10.1],[-85.8,10.4],[-85.7,10.8],[-85.9,10.9],[-85.7,11.1],[-86.1,11.4],[-86.5,11.8],[-86.7,12.1],[-87.2,12.5],[-87.7,12.9],[-87.6,13.1],[-87.4,12.9],[-87.3,13.0],[-87.5,13.3],[-87.8,13.4],[-87.9,13.1],[-88.5,13.2],[-88.8,13.3],[-89.3,13.5],[-89.8,13.5],[-90.1,13.7],[-90.6,13.9],[-91.2,13.9],[-91.7,14.1],[-92.2,14.5],[-93.4,15.6],[-93.9,15.9],[-94.7,16.2],[-95.3,16.1],[-96.1,15.8],[-96.6,15.7],[-97.3,15.9],[-98.0,16.1],[-98.9,16.6],[-99.7,16.7],[-100.8,17.2],[-101.7,17.6],[-101.9,17.9],[-102.5,18.0],[-103.5,18.3],[-103.9,18.7],[-105.0,19.3],[-105.5,19.9],[-105.7,20.4],[-105.4,20.5],[-105.5,20.8],[-105.3,21.1],[-105.3,21.4],[-105.6,21.9],[-105.7,22.3],[-106.0,22.8],[-106.9,23.8],[-107.9,24.5],[-108.4,25.2],[-109.3,25.6],[-109.4,25.8],[-109.3,26.4],[-109.8,26.7],[-110.4,27.2],[-110.6,27.9],[-111.2,27.9],[-111.8,28.5],[-112.2,29.0],[-112.3,29.3],[-112.8,30.0],[-113.2,30.8],[-113.1,31.2],[-113.9,31.6],[-114.2,31.5],[-114.8,31.8],[-114.9,31.4],[-114.8,30.9],[-114.7,30.2],[-114.3,29.8],[-113.6,29.1],[-113.4,28.8],[-113.3,28.8],[-113.1,28.4],[-113.0,28.4],[-112.8,27.8],[-112.5,27.5],[-112.2,27.2],[-111.6,26.7],[-111.3,25.7],[-111.0,25.3],[-110.7,24.8],[-110.7,24.3],[-110.2,24.3],[-109.8,23.8],[-109.4,23.4],[-109.4,23.2],[-109.9,22.8],[-110.0,22.8],[-110.3,23.4],[-110.9,24.0],[-111.7,24.5],[-112.2,24.7],[-112.1,25.5],[-112.3,26.0],[-112.8,26.3],[-113.5,26.8],[-113.6,26.6],[-113.8,26.9],[-114.5,27.1],[-115.1,27.7],[-115.0,27.8],[-114.6,27.7],[-114.2,28.1],[-114.2,28.6],[-114.9,29.3],[-115.5,29.6],[-115.9,30.2],[-116.3,30.8],[-116.7,31.6],[-117.1,32.5],[-117.3,33.0],[-117.9,33.6],[-118.4,33.7],[-118.5,34.0],[-119.1,34.1],[-119.4,34.3],[-120.4,34.4],[-120.6,34.6],[-120.7,35.2],[-121.7,36.2],[-122.5,37.6],[-122.5,37.8],[-123.0,38.1],[-123.7,39.0],[-123.9,39.8],[-124.4,40.3],[-124.2,41.1],[-124.2,42.0],[-124.5,42.8],[-124.1,43.7],[-123.9,45.5],[-124.1,46.9],[-124.4,47.7],[-124.7,48.2],[-124.6,48.4],[-123.1,48.0],[-122.6,47.1],[-122.3,47.4],[-122.5,48.2],[-122.8,49.0],[-123.0,49.0],[-124.9,50.0],[-125.6,50.4],[-127.4,50.8],[-128.0,51.7],[-127.9,52.3],[-129.1,52.8],[-129.3,53.6],[-130.5,54.3],[-130.5,54.8],[-131.1,55.2],[-132.0,55.5],[-132.2,56.4],[-133.5,57.2],[-134.1,58.1],[-135.0,58.2],[-136.6,58.2],[-137.8,58.5],[-139.9,59.5],[-140.8,59.7],[-142.6,60.1],[-144.0,60.0],[-145.9,60.5],[-147.1,60.9],[-148.2,60.7],[-148.0,60.0],[-148.6,59.9],[-149.7,59.7],[-150.6,59.4],[-151.7,59.2],[-151.9,59.7],[-151.4,60.7],[-150.3,61.0],[-150.6,61.3],[-151.9,60.7],[-152.6,60.1],[-154.0,59.4],[-153.3,58.9],[-154.2,58.1],[-155.3,57.7],[-156.3,57.4],[-156.6,57.0],[-158.1,56.5],[-158.4,56.0],[-159.6,55.6],[-160.3,55.6],[-161.2,55.4],[-162.2,55.0],[-163.1,54.7],[-164.8,54.4],[-164.9,54.6],[-163.8,55.0],[-162.9,55.3],[-161.8,55.9],[-160.6,56.0],[-160.1,56.4],[-158.7,57.0],[-158.5,57.2],[-157.7,57.6],[-157.6,58.3],[-157.0,58.9],[-158.2,58.6],[-158.5,58.8],[-159.1,58.4],[-159.7,58.9],[-160.0,58.6],[-160.4,59.1],[-161.4,58.7],[-162.0,58.7],[-162.1,59.3],[-161.9,59.6],[-162.5,60.0],[-163.8,59.8],[-164.7,60.3],[-165.3,60.5],[-165.4,61.1],[-166.1,61.5],[-165.7,62.1],[-164.9,62.6],[-164.6,63.1],[-163.8,63.2],[-163.1,63.1],[-162.3,63.5],[-161.5,63.5],[-160.8,63.8],[-161.0,64.2],[-161.5,64.4],[-160.8,64.8],[-161.4,64.8],[-162.5,64.6],[-162.8,64.3],[-163.5,64.6],[-165.0,64.4],[-166.4,64.7],[-166.8,65.1],[-168.1,65.7],[-166.7,66.1],[-164.5,66.6],[-163.7,66.6],[-163.8,66.1],[-161.7,66.1],[-162.5,66.7],[-163.7,67.1],[-164.4,67.6],[-165.4,68.0],[-166.8,68.4],[-166.2,68.9],[-164.4,68.9],[-163.2,69.4],[-162.9,69.9],[-161.9,70.3],[-160.9,70.4],[-159.0,70.9],[-158.1,70.8],[-156.6,71.4],[-155.1,71.1],[-154.3,70.7],[-153.9,70.9],[-152.2,70.8],[-152.3,70.6],[-150.7,70.4],[-149.7,70.5],[-147.6,70.2],[-145.7,70.1],[-144.9,70.0],[-143.6,70.2],[-142.1,69.9],[-141.0,69.7],[-139.1,69.5],[-137.5,69.0],[-136.5,68.9],[-135.6,69.3],[-134.4,69.6],[-132.9,69.5],[-131.4,69.9],[-129.8,70.2],[-129.1,69.8],[-128.4,70.0],[-128.1,70.5],[-127.4,70.4],[-125.8,69.5],[-124.4,70.2],[-124.3,69.4],[-123.1,69.6],[-122.7,69.9],[-121.5,69.8],[-119.9,69.4],[-117.6,69.0],[-116.2,68.8],[-115.2,68.9],[-113.9,68.4],[-115.3,67.9],[-113.5,67.7],[-110.8,67.8],[-109.9,68.0],[-108.9,67.4],[-107.8,67.9],[-108.8,68.3],[-108.2,68.7],[-107.0,68.7],[-106.2,68.8],[-105.3,68.6],[-104.3,68.0],[-103.2,68.1],[-101.5,67.6],[-99.9,67.8],[-98.4,67.8],[-98.6,68.4],[-97.7,68.6],[-96.1,68.2],[-96.1,67.3],[-95.5,68.1],[-94.7,68.1],[-94.2,69.1],[-95.3,69.7],[-96.5,70.1],[-96.4,71.2],[-95.2,71.9],[-93.9,71.8],[-92.9,71.3],[-91.5,70.2],[-92.4,69.7],[-90.5,69.5]]],[[[-114.2,73.1],[-114.7,72.7],[-112.4,73.0],[-111.1,72.5],[-109.9,73.0],[-109.0,72.6],[-108.2,71.7],[-107.7,72.1],[-108.4,73.1],[-107.5,73.2],[-106.5,73.1],[-105.4,72.7],[-104.8,71.7],[-104.5,71.0],[-102.8,70.5],[-101.0,70.0],[-101.1,69.6],[-102.7,69.5],[-102.1,69.1],[-102.4,68.8],[-104.2,68.9],[-106.0,69.2],[-107.1,69.1],[-109,68.8],[-112.0,68.6],[-113.3,68.5],[-113.9,69.0],[-115.2,69.3],[-116.1,69.2],[-117.3,70.0],[-116.7,70.1],[-115.1,70.2],[-113.7,70.2],[-112.4,70.4],[-114.3,70.6],[-116.5,70.5],[-117.9,70.5],[-118.4,70.9],[-116.1,71.3],[-117.7,71.3],[-119.4,71.6],[-118.6,72.3],[-117.9,72.7],[-115.2,73.3],[-114.2,73.1]]],[[[-104.5,73.4],[-105.4,72.8],[-106.9,73.5],[-106.6,73.6],[-105.3,73.6],[-104.5,73.4]]],[[[-76.3,73.1],[-76.3,72.8],[-77.3,72.9],[-78.4,72.9],[-79.5,72.7],[-79.8,72.8],[-80.9,73.3],[-80.8,73.7],[-80.4,73.8],[-78.1,73.7],[-76.3,73.1]]],[[[-86.6,73.2],[-85.8,72.5],[-84.9,73.3],[-82.3,73.8],[-80.6,72.7],[-80.7,72.1],[-78.8,72.4],[-77.8,72.7],[-75.6,72.2],[-74.2,71.8],[-74.1,71.3],[-72.2,71.6],[-71.2,70.9],[-68.8,70.5],[-67.9,70.1],[-67.0,69.2],[-68.8,68.7],[-66.4,68.1],[-64.9,67.8],[-63.4,66.9],[-61.9,66.9],[-62.2,66.2],[-63.9,65.0],[-65.1,65.4],[-66.7,66.4],[-68.0,66.3],[-68.1,65.7],[-67.1,65.1],[-65.7,64.6],[-65.3,64.4],[-64.7,63.4],[-65.0,62.7],[-66.3,62.9],[-68.8,63.7],[-67.4,62.9],[-66.3,62.3],[-66.2,61.9],[-68.9,62.3],[-71.0,62.9],[-72.2,63.4],[-71.9,63.7],[-73.4,64.2],[-74.8,64.7],[-74.8,64.4],[-77.7,64.2],[-78.6,64.6],[-77.9,65.3],[-76.0,65.3],[-74.0,65.5],[-74.3,65.8],[-73.9,66.3],[-72.7,67.3],[-72.9,67.7],[-73.3,68.1],[-74.8,68.6],[-76.9,68.9],[-76.2,69.1],[-77.3,69.8],[-78.2,69.8],[-79.0,70.2],[-79.5,69.9],[-81.3,69.7],[-84.9,70.0],[-87.1,70.3],[-88.7,70.4],[-89.5,70.8],[-88.5,71.2],[-89.9,71.2],[-90.2,72.2],[-89.4,73.1],[-88.4,73.5],[-85.8,73.8],[-86.6,73.2]]],[[[-100.4,73.8],[-99.2,73.6],[-97.4,73.8],[-97.1,73.5],[-98.1,73.0],[-96.5,72.6],[-96.7,71.7],[-98.4,71.3],[-99.3,71.4],[-100.0,71.7],[-102.5,72.5],[-102.5,72.8],[-100.4,72.7],[-101.5,73.4],[-100.4,73.8]]],[[[143.6,73.2],[142.1,73.2],[140.0,73.3],[139.9,73.4],[140.8,73.8],[142.1,73.9],[143.5,73.5],[143.6,73.2]]],[[[-93.2,72.8],[-94.3,72.0],[-95.4,72.1],[-96.0,72.9],[-96.0,73.4],[-95.5,73.9],[-94.5,74.1],[-92.4,74.1],[-90.5,73.9],[-92.0,73.0],[-93.2,72.8]]],[[[-120.5,71.4],[-123.1,70.9],[-123.6,71.3],[-125.9,71.9],[-125.6,72.2],[-124.8,73.0],[-123.9,73.7],[-124.9,74.3],[-121.5,74.4],[-120.1,74.2],[-117.6,74.2],[-116.6,73.9],[-115.5,73.5],[-116.8,73.2],[-119.2,72.5],[-120.5,71.8],[-120.5,71.4]]],[[[150.7,75.1],[149.6,74.7],[148.0,74.8],[146.1,75.2],[146.4,75.5],[148.2,75.3],[150.7,75.1]]],[[[-93.6,75.0],[-94.2,74.6],[-95.6,74.7],[-96.8,74.9],[-96.3,75.4],[-94.9,75.6],[-94.0,75.3],[-93.6,75.0]]],[[[145.1,75.6],[144.3,74.8],[140.6,74.8],[139.0,74.6],[137.0,75.3],[137.5,75.9],[138.8,76.1],[141.5,76.1],[145.1,75.6]]],[[[-98.5,76.7],[-97.7,76.3],[-97.7,75.7],[-98.2,75],[-99.8,74.9],[-100.9,75.1],[-100.9,75.6],[-102.5,75.6],[-102.6,76.3],[-101.5,76.3],[-100.0,76.6],[-98.6,76.6],[-98.5,76.7]]],[[[-108.2,76.2],[-107.8,75.8],[-106.9,76.0],[-105.9,76.0],[-105.7,75.5],[-106.3,75.0],[-109.7,74.8],[-112.2,74.4],[-113.7,74.4],[-113.9,74.7],[-111.8,75.2],[-116.3,75.0],[-117.7,75.2],[-116.3,76.2],[-115.4,76.5],[-112.6,76.1],[-110.8,75.5],[-109.1,75.5],[-110.5,76.4],[-109.6,76.8],[-108.5,76.7],[-108.2,76.2]]],[[[57.5,70.7],[56.9,70.6],[53.7,70.8],[53.4,71.2],[51.6,71.5],[51.5,72.0],[52.5,72.2],[52.4,72.8],[54.4,73.6],[53.5,73.7],[55.9,74.6],[55.6,75.1],[57.9,75.6],[61.2,76.3],[64.5,76.4],[66.2,76.8],[68.2,76.9],[68.9,76.5],[68.2,76.2],[64.6,75.7],[61.6,75.3],[58.5,74.3],[57.0,73.3],[55.4,72.4],[55.6,71.5],[57.5,70.7]]],[[[-94.7,77.1],[-93.6,76.8],[-91.6,76.8],[-90.7,76.4],[-91.0,76.1],[-89.8,75.8],[-89.2,75.6],[-87.8,75.6],[-86.4,75.5],[-84.8,75.7],[-82.8,75.8],[-81.1,75.7],[-80.1,75.3],[-79.8,74.9],[-80.5,74.7],[-81.9,74.4],[-83.2,74.6],[-86.1,74.4],[-88.2,74.4],[-89.8,74.5],[-92.4,74.8],[-92.8,75.4],[-92.9,75.9],[-93.9,76.3],[-96.0,76.4],[-97.1,76.8],[-96.7,77.2],[-94.7,77.1]]],[[[-116.2,77.6],[-116.3,76.9],[-117.1,76.5],[-118.0,76.5],[-119.9,76.1],[-121.5,75.9],[-122.9,76.1],[-121.2,76.9],[-119.1,77.5],[-117.6,77.5],[-116.2,77.6]]],[[[107.0,77.0],[107.2,76.5],[108.2,76.7],[111.1,76.7],[113.3,76.2],[114.1,75.8],[113.9,75.3],[112.8,75.0],[110.2,74.5],[109.4,74.2],[110.6,74.0],[112.1,73.8],[113.0,74.0],[113.5,73.3],[114.0,73.6],[115.6,73.8],[118.8,73.6],[119.0,73.1],[123.2,73.0],[123.3,73.7],[125.4,73.6],[127.0,73.6],[128.6,73.0],[129.1,72.4],[128.5,72.0],[129.7,71.2],[131.3,70.8],[132.3,71.8],[133.9,71.4],[135.6,71.7],[137.5,71.3],[138.2,71.6],[139.9,71.5],[139.1,72.4],[140.5,72.8],[149.5,72.2],[150.4,71.6],[153.0,70.8],[157.0,71.0],[159.0,70.9],[159.8,70.5],[159.7,69.7],[160.9,69.4],[162.3,69.6],[164.1,69.7],[165.9,69.5],[167.8,69.6],[169.6,68.7],[170.8,69.0],[170.0,69.7],[170.5,70.1],[173.6,69.8],[175.7,69.9],[178.6,69.4],[180,69.0],[180,65.0],[178.7,64.5],[177.4,64.6],[178.3,64.1],[178.9,63.3],[179.4,63.0],[179.5,62.6],[179.2,62.3],[177.4,62.5],[174.6,61.8],[173.7,61.7],[172.2,61.0],[170.7,60.3],[170.3,59.9],[168.9,60.6],[166.3,59.8],[165.8,60.2],[164.9,59.7],[163.5,59.9],[163.2,59.2],[162.0,58.2],[162.1,57.8],[163.2,57.6],[163.1,56.2],[162.1,56.1],[161.7,55.3],[162.1,54.9],[160.4,54.3],[160.0,53.2],[158.5,53.0],[158.2,51.9],[156.8,51.0],[156.4,51.7],[156.0,53.2],[155.4,55.4],[155.9,56.8],[156.8,57.4],[156.8,57.8],[158.4,58.1],[160.2,59.3],[161.9,60.3],[163.7,61.1],[164.5,62.6],[163.3,62.5],[162.7,61.6],[160.1,60.5],[159.3,61.8],[156.7,61.4],[154.2,59.8],[155.0,59.1],[152.8,58.9],[151.3,58.8],[151.3,59.5],[149.8,59.7],[148.5,59.2],[145.5,59.3],[142.2,59.0],[139.0,57.1],[135.1,54.7],[136.7,54.6],[137.2,54.0],[138.2,53.8],[138.8,54.3],[139.9,54.2],[141.3,53.1],[141.4,52.2],[140.6,51.2],[140.5,50.0],[140.1,48.4],[138.6,47.0],[138.2,46.3],[136.9,45.1],[135.5,44.0],[134.9,43.4],[133.5,42.8],[132.9,42.8],[132.3,43.3],[130.9,42.6],[130.8,42.2],[130.4,42.3],[130.0,41.9],[129.7,41.6],[129.7,40.9],[129.2,40.7],[129.0,40.5],[128.6,40.2],[128.0,40.0],[127.5,39.8],[127.5,39.3],[127.4,39.2],[127.8,39.1],[128.3,38.6],[129.2,37.4],[129.5,36.8],[129.5,35.6],[129.1,35.1],[128.2,34.9],[127.4,34.5],[126.5,34.4],[126.4,34.9],[126.6,35.7],[126.1,36.7],[126.9,36.9],[126.2,37.7],[125.7,37.9],[125.6,37.8],[125.3,37.7],[125.2,37.9],[125.0,37.9],[124.7,38.1],[125.0,38.5],[125.2,38.7],[125.1,38.8],[125.4,39.4],[125.3,39.6],[124.7,39.7],[124.3,39.9],[122.9,39.6],[122.1,39.2],[121.1,38.9],[121.6,39.4],[121.4,39.8],[122.2,40.4],[121.6,40.9],[120.8,40.6],[119.6,39.9],[119.0,39.3],[118.0,39.2],[117.5,38.7],[118.1,38.1],[118.9,37.9],[118.9,37.4],[119.7,37.2],[120.8,37.9],[121.7,37.5],[122.4,37.5],[122.5,36.9],[121.1,36.7],[120.6,36.1],[119.7,35.6],[119.2,34.9],[120.2,34.4],[120.6,33.4],[121.2,32.5],[121.9,31.7],[121.9,30.9],[121.3,30.7],[121.5,30.1],[122.1,29.8],[121.9,29.0],[121.7,28.2],[121.1,28.1],[120.4,27.1],[119.6,25.7],[118.7,24.5],[117.3,23.6],[115.9,22.8],[114.8,22.7],[114.2,22.2],[113.8,22.5],[113.2,22.1],[111.8,21.6],[110.8,21.4],[110.4,20.3],[109.9,20.3],[109.6,21.0],[109.9,21.4],[108.5,21.7],[108.1,21.6],[106.7,20.7],[105.9,19.8],[105.7,19.1],[106.4,18.0],[107.4,16.7],[108.3,16.1],[108.9,15.3],[109.3,13.4],[109.2,11.7],[108.4,11.0],[107.2,10.4],[106.4,9.5],[105.2,8.6],[104.8,9.2],[105.1,9.9],[104.3,10.5],[103.5,10.6],[103.1,11.2],[102.6,12.2],[101.7,12.6],[100.8,12.6],[101.0,13.4],[100.1,13.4],[100.0,12.3],[99.5,10.8],[99.2,10.0],[99.2,9.2],[99.9,9.2],[100.3,8.3],[100.5,7.4],[101.0,6.9],[101.6,6.7],[102.1,6.2],[102.4,6.1],[103.0,5.5],[103.4,4.9],[103.4,4.2],[103.3,3.7],[103.4,3.4],[103.5,2.8],[103.9,2.5],[104.2,1.6],[104.2,1.3],[103.5,1.2],[102.6,2.0],[101.4,2.8],[101.3,3.3],[100.7,3.9],[100.6,4.8],[100.2,5.3],[100.3,6.0],[100.1,6.5],[99.7,6.8],[99.5,7.3],[99.0,7.9],[98.5,8.4],[98.3,7.8],[98.2,8.4],[98.3,9.0],[98.6,9.9],[98.5,10.7],[98.8,11.4],[98.4,12.0],[98.5,13.1],[98.1,13.6],[97.8,14.8],[97.6,16.1],[97.2,16.9],[96.5,16.4],[95.4,15.7],[94.8,15.8],[94.2,16.0],[94.5,17.3],[94.3,18.2],[93.5,19.4],[93.7,19.7],[93.1,19.9],[92.4,20.7],[92.1,21.2],[92.0,21.7],[91.8,22.2],[91.4,22.8],[90.5,22.8],[90.6,22.4],[90.3,21.8],[89.8,22.0],[89.7,21.9],[89.4,22.0],[89.0,22.1],[88.9,21.7],[88.2,21.7],[87.0,21.5],[87.0,20.7],[86.5,20.2],[85.1,19.5],[83.9,18.3],[83.2,17.7],[82.2,17.0],[82.2,16.6],[81.7,16.3],[80.8,16.0],[80.3,15.9],[80.0,15.1],[80.2,13.8],[80.3,13.0],[79.9,12.1],[79.9,10.4],[79.3,10.3],[78.9,9.5],[79.2,9.2],[78.3,8.9],[77.9,8.3],[77.5,8.0],[76.6,8.9],[76.1,10.3],[75.7,11.3],[75.4,11.8],[74.9,12.7],[74.6,14.0],[74.4,14.6],[73.5,16.0],[73.1,17.9],[72.8,19.2],[72.8,20.4],[72.6,21.4],[71.2,20.8],[70.5,20.9],[69.2,22.1],[69.6,22.5],[69.3,22.8],[68.2,23.7],[67.4,23.9],[67.1,24.7],[66.4,25.4],[64.5,25.2],[62.9,25.2],[61.5,25.1],[59.6,25.4],[58.5,25.6],[57.4,25.7],[57.0,27.0],[56.5,27.1],[55.7,27.0],[54.7,26.5],[53.5,26.8],[52.5,27.6],[51.5,27.9],[50.9,28.8],[50.1,30.1],[49.6,30.0],[48.9,30.3],[48.6,29.9],[48.0,30.0],[48.2,29.5],[48.1,29.3],[48.4,28.6],[48.8,27.7],[49.3,27.5],[49.5,27.1],[50.2,26.7],[50.2,26.3],[50.1,25.9],[50.2,25.6],[50.5,25.3],[50.7,25.0],[50.8,24.8],[50.7,25.5],[51.0,26.0],[51.3,26.1],[51.6,25.8],[51.6,25.2],[51.4,24.6],[51.6,24.2],[51.8,24.3],[51.8,24.0],[52.6,24.2],[53.4,24.2],[54.0,24.1],[54.7,24.8],[55.4,25.4],[56.1,26.1],[56.4,26.4],[56.5,26.3],[56.4,25.9],[56.3,25.7],[56.4,24.9],[56.8,24.2],[57.4,23.9],[58.1,23.7],[58.7,23.6],[59.2,23.0],[59.5,22.7],[59.8,22.5],[59.8,22.3],[59.4,21.7],[59.3,21.4],[58.9,21.1],[58.5,20.4],[58.0,20.5],[57.8,20.2],[57.7,19.7],[57.8,19.1],[57.7,18.9],[57.2,18.9],[56.6,18.6],[56.5,18.1],[56.3,17.9],[55.7,17.9],[55.3,17.6],[55.3,17.2],[54.8,17.0],[54.2,17.0],[53.6,16.7],[53.1,16.7],[52.4,16.4],[52.2,15.9],[52.2,15.6],[51.2,15.2],[49.6,14.7],[48.7,14.0],[48.2,13.9],[47.9,14.0],[47.4,13.6],[46.7,13.4],[45.9,13.3],[45.6,13.3],[45.4,13.0],[45.1,13.0],[45.0,12.7],[44.5,12.7],[44.2,12.6],[43.5,12.6],[43.2,13.2],[43.3,13.8],[43.1,14.1],[42.9,14.8],[42.6,15.2],[42.8,15.3],[42.7,15.7],[42.8,15.9],[42.8,16.3],[42.6,16.8],[42.3,17.1],[42.3,17.5],[41.8,17.8],[41.2,18.7],[40.9,19.5],[40.2,20.2],[39.8,20.3],[39.1,21.3],[39.0,22.0],[39.1,22.6],[38.5,23.7],[38.0,24.1],[37.5,24.3],[37.2,24.9],[37.2,25.1],[36.9,25.6],[36.6,25.8],[36.2,26.6],[35.6,27.4],[35.1,28.1],[34.6,28.1],[34.8,28.6],[34.8,29.0],[35.0,29.4],[34.9,29.5],[34.6,29.1],[34.4,28.3],[34.2,27.8],[33.9,27.6],[33.6,28.0],[33.1,28.4],[32.4,29.9],[32.3,29.8],[32.7,28.7],[33.3,27.7],[34.1,26.1],[34.5,25.6],[34.8,25.0],[35.7,23.9],[35.5,23.8],[35.5,23.1],[36.7,22.2],[36.9,22.0],[37.2,21.0],[37.0,20.8],[37.1,19.8],[37.5,18.6],[37.9,18.4],[38.4,18.0],[39.0,16.8],[39.3,15.9],[39.8,15.4],[41.2,14.5],[41.7,13.9],[42.3,13.3],[42.6,13.0],[43.1,12.7],[43.3,12.4],[43.3,12.0],[42.7,11.7],[43.1,11.5],[43.5,11.3],[43.7,10.9],[44.1,10.4],[44.6,10.4],[45.6,10.7],[46.6,10.8],[47.5,11.1],[48.0,11.2],[48.4,11.4],[48.9,11.4],[49.3,11.4],[49.7,11.6],[50.3,11.7],[50.7,12.0],[51.1,12.0],[51.1,11.7],[51.0,11.2],[51.0,10.6],[50.8,10.3],[50.6,9.2],[50.1,8.1],[49.5,6.8],[48.6,5.3],[47.7,4.2],[46.6,2.9],[45.6,2.0],[44.1,1.1],[43.1,0.3],[42.0,-0.9],[41.8,-1.4],[41.6,-1.7],[40.9,-2.1],[40.6,-2.5],[40.3,-2.6],[40.1,-3.3],[39.8,-3.7],[39.6,-4.3],[39.2,-4.7],[38.7,-5.9],[38.8,-6.5],[39.4,-6.8],[39.5,-7.1],[39.2,-7.7],[39.3,-8.0],[39.2,-8.5],[39.5,-9.1],[39.9,-10.1],[40.3,-10.3],[40.5,-10.8],[40.4,-11.8],[40.6,-12.6],[40.6,-14.2],[40.8,-14.7],[40.5,-15.4],[40.1,-16.1],[39.5,-16.7],[38.5,-17.1],[37.4,-17.6],[36.3,-18.7],[35.9,-18.8],[35.2,-19.6],[34.8,-19.8],[34.7,-20.5],[35.2,-21.3],[35.4,-21.8],[35.4,-22.1],[35.6,-22.1],[35.5,-23.1],[35.4,-23.5],[35.6,-23.7],[35.5,-24.1],[35.0,-24.5],[34.2,-24.8],[33.0,-25.4],[32.6,-25.7],[32.7,-26.1],[32.9,-26.2],[32.8,-26.7],[32.6,-27.5],[32.5,-28.3],[32.2,-28.8],[31.5,-29.3],[31.3,-29.4],[30.9,-29.9],[30.6,-30.4],[30.1,-31.1],[28.9,-32.2],[28.2,-32.8],[27.5,-33.2],[26.4,-33.6],[25.9,-33.7],[25.8,-33.9],[25.2,-33.8],[24.7,-34.0],[23.6,-33.8],[23.0,-33.9],[22.6,-33.9],[21.5,-34.3],[20.7,-34.4],[20.1,-34.8],[19.6,-34.8],[19.2,-34.5],[18.9,-34.4],[18.4,-34.0],[18.4,-34.1],[18.2,-33.9],[18.3,-33.3],[17.9,-32.6],[18.2,-32.4],[18.2,-31.7],[17.6,-30.7],[17.1,-29.9],[16.3,-28.6],[15.6,-27.8],[15.2,-27.1],[15.0,-26.1],[14.7,-25.4],[14.4,-23.9],[14.4,-22.7],[14.3,-22.1],[13.9,-21.7],[13.4,-20.9],[12.8,-19.7],[12.6,-19.0],[11.8,-18.1],[11.7,-17.3],[11.6,-16.7],[11.8,-15.8],[12.1,-14.9],[12.2,-14.4],[12.5,-13.5],[12.7,-13.1],[13.3,-12.5],[13.6,-12.0],[13.7,-11.3],[13.7,-10.7],[13.4,-10.4],[13.1,-9.8],[12.9,-9.2],[12.9,-9.0],[13.2,-8.6],[12.9,-7.6],[12.7,-6.9],[12.2,-6.3],[12.3,-6.1],[12.2,-5.8],[11.9,-5.0],[11.1,-4.0],[10.1,-3.0],[9.4,-2.1],[8.8,-1.1],[8.8,-0.8],[9.0,-0.5],[9.3,0.3],[9.5,1.0],[9.3,1.2],[9.6,2.3],[9.8,3.1],[9.4,3.7],[8.9,3.9],[8.7,4.4],[8.5,4.5],[8.5,4.8],[7.5,4.4],[7.1,4.5],[6.7,4.2],[5.9,4.3],[5.4,4.9],[5.0,5.6],[4.3,6.3],[3.6,6.3],[2.7,6.3],[1.9,6.1],[1.1,5.9],[-0.5,5.3],[-1.1,5.0],[-2.0,4.7],[-2.9,5.0],[-3.3,5.0],[-4.0,5.2],[-4.6,5.2],[-5.8,5.0],[-6.5,4.7],[-7.5,4.3],[-7.7,4.4],[-8.0,4.4],[-9.0,4.8],[-9.9,5.6],[-10.8,6.1],[-11.4,6.8],[-11.7,6.9],[-12.4,7.3],[-12.9,7.8],[-13.1,8.2],[-13.2,8.9],[-13.7,9.5],[-14.1,9.9],[-14.3,10.0],[-14.6,10.2],[-14.7,10.7],[-14.8,10.9],[-15.1,11.0],[-15.7,11.5],[-16.1,11.5],[-16.3,11.8],[-16.3,12.0],[-16.6,12.2],[-16.7,12.4],[-16.8,13.2],[-16.7,13.6],[-17.1,14.4],[-17.6,14.7],[-17.2,14.9],[-16.7,15.6],[-16.5,16.1],[-16.5,16.7],[-16.3,17.2],[-16.1,18.1],[-16.3,19.1],[-16.4,19.6],[-16.3,20.1],[-16.5,20.6],[-17.1,21.0],[-17.0,21.4],[-17.0,21.9],[-16.6,22.2],[-16.3,22.7],[-16.3,23.0],[-16.0,23.7],[-15.4,24.4],[-15.1,24.5],[-14.8,25.1],[-14.8,25.6],[-14.4,26.3],[-13.8,26.6],[-13.1,27.6],[-12.6,28.0],[-11.7,28.1],[-10.9,28.8],[-10.4,29.1],[-9.6,29.9],[-9.8,31.2],[-9.4,32.0],[-9.3,32.6],[-8.7,33.2],[-7.7,33.7],[-6.9,34.1],[-6.2,35.1],[-5.9,35.8],[-5.2,35.8],[-4.6,35.3],[-3.6,35.4],[-2.6,35.2],[-2.2,35.2],[-1.2,35.7],[-0.1,35.9],[0.5,36.3],[1.5,36.6],[3.2,36.8],[4.8,36.9],[5.3,36.7],[6.3,37.1],[7.3,37.1],[7.7,36.9],[8.4,36.9],[9.5,37.4],[10.2,37.2],[10.2,36.7],[11.0,37.1],[11.1,36.9],[10.6,36.4],[10.6,35.9],[10.9,35.7],[10.8,34.8],[10.1,34.3],[10.3,33.8],[10.9,33.8],[11.1,33.3],[11.5,33.1],[12.7,32.8],[13.1,32.9],[13.9,32.7],[15.2,32.3],[15.7,31.4],[16.6,31.2],[18.0,30.8],[19.1,30.3],[19.6,30.5],[20.1,31.0],[19.8,31.8],[20.1,32.2],[20.9,32.7],[21.5,32.8],[22.9,32.6],[23.2,32.2],[23.6,32.2],[23.9,32.0],[24.9,31.9],[25.2,31.6],[26.5,31.6],[27.5,31.3],[28.5,31.0],[28.9,30.9],[29.7,31.2],[30.1,31.5],[31.0,31.6],[31.7,31.4],[32.0,30.9],[32.2,31.3],[33.0,31.0],[33.8,31.0],[34.3,31.2],[34.6,31.5],[34.5,31.6],[34.8,32.1],[35.0,32.8],[35.1,33.1],[35.5,33.9],[36.0,34.6],[35.9,35.4],[36.1,35.8],[35.8,36.3],[36.2,36.7],[35.6,36.6],[34.7,36.8],[34.0,36.2],[32.5,36.1],[31.7,36.6],[30.6,36.7],[30.4,36.3],[29.7,36.1],[28.7,36.7],[27.6,36.7],[27.0,37.7],[26.3,38.2],[26.8,39.0],[26.2,39.5],[27.3,40.4],[28.8,40.5],[29.2,41.2],[31.1,41.1],[32.3,41.7],[33.5,42.0],[35.2,42.0],[36.9,41.3],[38.3,40.9],[39.5,41.1],[40.4,41.0],[41.6,41.5],[41.7,42.0],[41.5,42.6],[40.9,43.0],[40.3,43.1],[40.0,43.4],[38.7,44.3],[37.5,44.7],[36.7,45.2],[37.4,45.4],[38.2,46.2],[37.7,46.6],[39.1,47.0],[39.1,47.3],[38.2,47.1],[37.4,47.0],[36.8,46.7],[35.8,46.6],[35.0,46.3],[35.0,45.7],[35.5,45.4],[36.5,45.5],[36.3,45.1],[35.2,44.9],[33.9,44.4],[33.3,44.6],[33.5,45.0],[32.5,45.3],[32.6,45.5],[33.6,45.9],[33.3,46.1],[31.7,46.3],[31.7,46.7],[30.7,46.6],[30.4,46.0],[29.6,45.3],[29.6,45.0],[29.1,44.8],[28.8,44.9],[28.6,43.7],[28.0,43.3],[27.7,42.6],[28.0,42.0],[28.1,41.6],[29.0,41.3],[28.8,41.1],[27.6,41.0],[27.2,40.7],[26.4,40.2],[26.0,40.6],[26.1,40.8],[25.4,40.9],[24.9,40.9],[23.7,40.7],[24.4,40.1],[23.9,40.0],[23.3,40.0],[22.8,40.5],[22.6,40.3],[22.8,39.7],[23.4,39.2],[23.0,39.0],[23.5,38.5],[24.0,38.2],[24.0,37.7],[23.1,37.9],[23.4,37.4],[22.8,37.3],[23.2,36.4],[22.5,36.4],[21.7,36.8],[21.3,37.6],[21.1,38.3],[20.7,38.8],[20.2,39.3],[20.2,39.6],[20.0,39.7],[20.0,39.9],[19.4,40.3],[19.3,40.7],[19.4,41.4],[19.5,41.7],[19.4,41.9],[19.2,42.0],[18.9,42.3],[18.5,42.5],[17.5,42.9],[16.9,43.2],[16.0,43.5],[15.2,44.2],[15.4,44.3],[14.9,44.7],[14.9,45.1],[14.3,45.2],[14.0,44.8],[13.7,45.1],[13.7,45.5],[13.9,45.6],[13.1,45.7],[12.3,45.4],[12.4,44.9],[12.3,44.6],[12.6,44.1],[13.5,43.6],[14.0,42.8],[15.1,42.0],[15.9,42.0],[16.2,41.7],[15.9,41.5],[16.8,41.2],[17.5,40.9],[18.4,40.4],[18.5,40.2],[18.3,39.8],[17.7,40.3],[16.9,40.4],[16.4,39.8],[17.2,39.4],[17.1,38.9],[16.6,38.8],[16.1,38.0],[15.7,37.9],[15.7,38.2],[15.9,38.8],[16.1,39.0],[15.7,39.5],[15.4,40.0],[15.0,40.2],[14.7,40.6],[14.1,40.8],[13.6,41.2],[12.9,41.3],[12.1,41.7],[11.2,42.4],[10.5,42.9],[10.2,43.9],[9.7,44.0],[8.9,44.4],[8.4,44.2],[7.9,43.8],[7.4,43.7],[6.5,43.1],[4.6,43.4],[3.1,43.1],[3.0,42.5],[3.0,41.9],[2.1,41.2],[0.8,41.0],[0.7,40.7],[0.1,40.1],[-0.3,39.3],[0.1,38.7],[-0.5,38.3],[-0.7,37.6],[-1.4,37.4],[-2.1,36.7],[-3.4,36.7],[-4.4,36.7],[-5.0,36.3],[-5.4,35.9],[-5.9,36.0],[-6.2,36.4],[-6.5,36.9],[-7.5,37.1],[-7.9,36.8],[-8.4,37.0],[-8.9,36.9],[-8.7,37.7],[-8.8,38.3],[-9.3,38.4],[-9.5,38.7],[-9.4,39.4],[-9.0,39.8],[-9.0,40.2],[-8.8,40.8],[-8.8,41.2],[-9.0,41.5],[-9.0,41.9],[-9.0,42.6],[-9.4,43.0],[-8.0,43.7],[-6.8,43.6],[-5.4,43.6],[-4.3,43.4],[-3.5,43.5],[-1.9,43.4],[-1.4,44.0],[-1.2,46.0],[-2.2,47.1],[-3.0,47.6],[-4.5,48.0],[-4.6,48.7],[-3.3,48.9],[-1.6,48.6],[-1.9,49.8],[-1.0,49.3],[1.3,50.1],[1.6,50.9],[2.5,51.1],[3.3,51.3],[3.8,51.6],[4.7,53.1],[6.1,53.5],[6.9,53.5],[7.1,53.7],[7.9,53.7],[8.1,53.5],[8.8,54.0],[8.6,54.4],[8.5,55.0],[8.1,55.5],[8.1,56.5],[8.3,56.8],[8.5,57.1],[9.4,57.2],[9.8,57.4],[10.6,57.7],[10.5,57.2],[10.3,56.9],[10.4,56.6],[10.9,56.5],[10.7,56.1],[10.4,56.2],[9.7,55.5],[9.9,55.0],[9.9,54.6],[11.0,54.4],[10.9,54.0],[12.0,54.2],[12.5,54.5],[13.6,54.1],[14.1,53.8],[14.8,54.1],[16.4,54.5],[17.6,54.9],[18.6,54.7],[18.7,54.4],[19.7,54.4],[19.9,54.9],[21.3,55.2],[21.1,56.0],[21.1,56.8],[21.6,57.4],[22.5,57.8],[23.3,57.0],[24.1,57.0],[24.3,57.8],[24.4,58.4],[24.1,58.3],[23.4,58.6],[23.3,59.2],[24.6,59.5],[25.9,59.6],[26.9,59.4],[28.0,59.5],[29.1,60.0],[28.1,60.5],[26.3,60.4],[24.5,60.1],[22.9,59.8],[22.3,60.4],[21.3,60.7],[21.5,61.7],[21.1,62.6],[21.5,63.2],[22.4,63.8],[24.7,64.9],[25.4,65.1],[25.3,65.5],[23.9,66.0],[22.2,65.7],[21.2,65.0],[21.4,64.4],[19.8,63.6],[17.8,62.7],[17.1,61.3],[17.8,60.6],[18.8,60.1],[17.9,59.0],[16.8,58.7],[16.4,57.0],[15.9,56.1],[14.7,56.2],[14.1,55.4],[12.9,55.4],[12.6,56.3],[11.8,57.4],[11.0,58.9],[10.4,59.5],[8.4,58.3],[7.0,58.1],[5.7,58.6],[5.3,59.7],[5.0,62.0],[5.9,62.6],[8.6,63.5],[10.5,64.5],[12.4,65.9],[14.8,67.8],[16.4,68.6],[19.2,69.8],[21.4,70.3],[23.0,70.2],[24.5,71.0],[26.4,71.0],[28.2,71.2],[31.3,70.5],[30.0,70.2],[31.1,69.6],[32.1,69.9],[33.8,69.3],[36.5,69.1],[40.3,67.9],[41.1,67.5],[41.1,66.8],[40.0,66.3],[38.4,66.0],[33.9,66.8],[33.2,66.6],[34.8,65.9],[34.9,64.4],[36.2,64.1],[37.0,63.8],[37.1,64.3],[36.5,64.8],[37.2,65.1],[39.6,64.5],[40.4,64.8],[39.8,65.5],[42.1,66.5],[43.0,66.4],[43.9,66.1],[44.5,66.8],[43.7,67.4],[44.2,68.0],[43.5,68.6],[46.3,68.3],[46.8,67.7],[45.6,67.6],[45.6,67.0],[46.3,66.7],[47.9,66.9],[48.1,67.5],[50.2,68.0],[53.7,68.9],[54.5,68.8],[53.5,68.2],[54.7,68.1],[55.4,68.4],[57.3,68.5],[58.8,68.9],[59.9,68.3],[61.1,68.9],[60.0,69.5],[60.6,69.9],[63.5,69.5],[64.9,69.2],[68.5,68.1],[69.2,68.6],[68.2,69.1],[68.1,69.4],[66.9,69.5],[67.3,69.9],[66.7,70.7],[66.7,71.0],[68.5,71.9],[69.2,72.8],[69.9,73.0],[72.6,72.8],[72.8,72.2],[71.8,71.4],[72.5,71.1],[72.8,70.4],[72.6,69.0],[73.7,68.4],[73.2,67.7],[71.3,66.3],[72.4,66.2],[72.8,66.5],[73.9,66.8],[74.2,67.3],[75.1,67.8],[74.5,68.3],[74.9,69.0],[73.8,69.1],[73.6,69.6],[74.4,70.6],[73.1,71.4],[74.9,72.1],[74.7,72.8],[75.2,72.9],[75.7,72.3],[75.3,71.3],[76.4,71.2],[75.9,71.9],[77.6,72.3],[79.7,72.3],[81.5,71.8],[80.6,72.6],[80.5,73.6],[82.3,73.9],[84.7,73.8],[86.8,73.9],[86.0,74.5],[87.2,75.1],[88.3,75.1],[90.3,75.6],[92.9,75.8],[93.2,76.0],[95.9,76.1],[96.7,75.9],[98.9,76.4],[100.8,76.4],[101.0,76.9],[102.0,77.3],[104.4,77.7],[106.1,77.4],[104.7,77.1],[107.0,77.0]],[[49.1,41.3],[49.6,40.6],[50.1,40.5],[50.4,40.3],[49.6,40.2],[49.4,39.4],[49.2,39.0],[48.9,38.8],[48.9,38.3],[49.2,37.6],[50.1,37.4],[50.8,36.9],[52.3,36.7],[53.8,37.0],[53.9,37.2],[53.7,37.9],[53.9,39.0],[53.1,39.3],[53.4,40.0],[52.7,40.0],[52.9,40.9],[53.9,40.6],[54.7,41.0],[54.0,41.6],[53.7,42.1],[52.9,41.9],[52.8,41.1],[52.5,41.8],[52.4,42.0],[52.7,42.4],[52.5,42.8],[51.3,43.1],[50.9,44.0],[50.3,44.3],[50.3,44.6],[51.3,44.5],[51.3,45.2],[52.2,45.4],[53.0,45.3],[53.2,46.2],[53.0,46.9],[52.0,46.8],[51.2,47.0],[50.0,46.6],[49.1,46.4],[48.6,45.8],[47.7,45.6],[46.7,44.6],[47.6,43.7],[47.5,43.0],[48.6,41.8],[49.1,41.3]]],[[[-93.8,77.5],[-94.3,77.5],[-96.2,77.6],[-96.4,77.8],[-94.4,77.8],[-93.7,77.6],[-93.8,77.5]]],[[[-110.2,77.7],[-112.1,77.4],[-113.5,77.7],[-112.7,78.1],[-111.3,78.2],[-109.9,78.0],[-110.2,77.7]]],[[[24.7,77.9],[22.5,77.4],[20.7,77.7],[21.4,77.9],[20.8,78.3],[22.9,78.5],[23.3,78.1],[24.7,77.9]]],[[[-109.7,78.6],[-110.9,78.4],[-112.5,78.4],[-112.5,78.6],[-111.5,78.8],[-111.0,78.8],[-109.7,78.6]]],[[[-95.8,78.1],[-97.3,77.9],[-98.1,78.1],[-98.6,78.5],[-98.6,78.9],[-97.3,78.8],[-96.8,78.8],[-95.6,78.4],[-95.8,78.1]]],[[[-100.1,78.3],[-99.7,77.9],[-101.3,78.0],[-102.9,78.3],[-105.2,78.4],[-104.2,78.7],[-105.4,78.9],[-105.5,79.3],[-103.5,79.2],[-100.8,78.8],[-100.1,78.3]]],[[[105.1,78.3],[99.4,77.9],[101.3,79.2],[102.1,79.3],[102.8,79.3],[105.4,78.7],[105.1,78.3]]],[[[18.3,79.7],[21.5,79.0],[19.0,78.6],[18.5,77.8],[17.6,77.6],[17.1,76.8],[15.9,76.8],[13.8,77.4],[14.7,77.7],[13.2,78.0],[11.2,78.9],[10.4,79.7],[13.2,80.0],[13.7,79.7],[15.1,79.7],[15.5,80.0],[17.0,80.1],[18.3,79.7]]],[[[25.4,80.4],[27.4,80.1],[25.9,79.5],[23.0,79.4],[20.1,79.6],[19.9,79.8],[18.5,79.9],[17.4,80.3],[20.5,80.6],[21.9,80.4],[22.9,80.7],[25.4,80.4]]],[[[51.1,80.5],[49.8,80.4],[48.9,80.3],[48.8,80.2],[47.6,80.0],[46.5,80.2],[47.1,80.6],[44.8,80.6],[46.8,80.8],[48.3,80.8],[48.5,80.5],[49.1,80.8],[50.0,80.9],[51.5,80.7],[51.1,80.5]]],[[[99.9,78.9],[97.8,78.8],[95.0,79.0],[93.3,79.4],[92.5,80.1],[91.2,80.3],[93.8,81.0],[95.9,81.3],[97.9,80.7],[100.2,79.8],[99.9,78.9]]],[[[-87.0,79.7],[-85.8,79.3],[-87.2,79.0],[-89.0,78.3],[-90.8,78.2],[-92.9,78.3],[-94.0,78.8],[-93.9,79.1],[-93.1,79.4],[-95.0,79.4],[-96.1,79.7],[-96.7,80.2],[-96.0,80.6],[-95.3,80.9],[-94.3,81.0],[-94.7,81.2],[-92.4,81.3],[-91.1,80.7],[-89.5,80.5],[-87.8,80.3],[-87.0,79.7]]],[[[-68.5,83.1],[-65.8,83.0],[-63.7,82.9],[-61.9,82.6],[-61.9,82.4],[-64.3,81.9],[-66.8,81.7],[-67.7,81.5],[-65.5,81.5],[-67.8,80.9],[-69.5,80.6],[-71.2,79.8],[-73.2,79.6],[-73.9,79.4],[-76.9,79.3],[-75.5,79.2],[-76.2,79.0],[-75.4,78.5],[-76.3,78.2],[-77.9,77.9],[-78.4,77.5],[-79.8,77.2],[-79.6,77.0],[-77.9,77.0],[-77.9,76.8],[-80.6,76.2],[-83.2,76.5],[-86.1,76.3],[-87.6,76.4],[-89.5,76.5],[-89.6,77.0],[-87.8,77.2],[-88.3,77.9],[-87.7,78.0],[-85.0,77.5],[-86.3,78.2],[-88.0,78.4],[-87.2,78.8],[-85.4,79.0],[-85.1,79.3],[-86.5,79.7],[-86.9,80.3],[-84.2,80.2],[-83.4,80.1],[-81.8,80.5],[-84.1,80.6],[-87.6,80.5],[-89.4,80.9],[-90.2,81.3],[-91.4,81.6],[-91.6,81.9],[-90.1,82.1],[-88.9,82.1],[-87.0,82.3],[-85.5,82.7],[-84.3,82.6],[-83.2,82.3],[-82.4,82.9],[-81.1,83.0],[-79.3,83.1],[-76.2,83.2],[-75.7,83.1],[-72.8,83.2],[-70.7,83.2],[-68.5,83.1]]],[[[-27.1,83.5],[-20.8,82.7],[-22.7,82.3],[-26.5,82.3],[-31.9,82.2],[-31.4,82.0],[-27.9,82.1],[-24.8,81.8],[-22.9,82.1],[-22.1,81.7],[-23.2,81.2],[-20.6,81.5],[-15.8,81.9],[-12.8,81.7],[-12.2,81.3],[-16.3,80.6],[-16.9,80.3],[-20.0,80.2],[-17.7,80.1],[-18.9,79.4],[-19.7,78.8],[-19.7,77.6],[-18.5,77.0],[-20.0,76.9],[-21.7,76.6],[-19.8,76.1],[-19.6,75.2],[-20.7,75.2],[-19.4,74.3],[-21.6,74.2],[-20.4,73.8],[-20.8,73.5],[-22.2,73.3],[-23.6,73.3],[-22.3,72.6],[-22.3,72.2],[-24.3,72.6],[-24.8,72.3],[-23.4,72.1],[-22.1,71.5],[-21.8,70.7],[-23.5,70.5],[-24.3,70.9],[-25.5,71.4],[-25.2,70.8],[-26.4,70.2],[-23.7,70.2],[-22.3,70.1],[-25.0,69.3],[-27.7,68.5],[-30.7,68.1],[-31.8,68.1],[-32.8,67.7],[-34.2,66.7],[-36.4,66.0],[-37.0,65.9],[-38.4,65.7],[-39.8,65.5],[-40.7,64.8],[-40.7,64.1],[-41.2,63.5],[-42.8,62.7],[-42.4,61.9],[-42.9,61.1],[-43.4,60.1],[-44.8,60.0],[-46.3,60.9],[-48.3,60.9],[-49.2,61.4],[-49.9,62.4],[-51.6,63.6],[-52.1,64.3],[-52.3,65.2],[-53.7,66.1],[-53.3,66.8],[-54.0,67.2],[-53.0,68.4],[-51.5,68.7],[-51.1,69.1],[-50.9,69.9],[-52.0,69.6],[-52.6,69.4],[-53.5,69.3],[-54.7,69.6],[-54.8,70.3],[-54.4,70.8],[-53.4,70.8],[-51.4,70.6],[-53.1,71.2],[-54.0,71.5],[-55,71.4],[-55.8,71.7],[-54.7,72.6],[-55.3,73.0],[-56.1,73.6],[-57.3,74.7],[-58.6,75.1],[-58.6,75.5],[-61.3,76.1],[-63.4,76.2],[-66.1,76.1],[-68.5,76.1],[-69.7,76.4],[-71.4,77.0],[-68.8,77.3],[-66.8,77.4],[-71.0,77.6],[-73.3,78.0],[-73.2,78.4],[-69.4,78.9],[-65.7,79.4],[-65.3,79.8],[-68.0,80.1],[-67.2,80.5],[-63.7,81.2],[-62.2,81.3],[-62.7,81.8],[-60.3,82.0],[-57.2,82.2],[-54.1,82.2],[-53.0,81.9],[-50.4,82.4],[-48.0,82.1],[-46.6,82.0],[-44.5,81.7],[-46.9,82.2],[-46.8,82.6],[-43.4,83.2],[-39.9,83.2],[-38.6,83.5],[-35.1,83.6],[-27.1,83.5]]]]}}';
@@ -0,0 +1,14 @@
1
+ import type { UiBinding, UiViewNode } from '@adecore/intelligent-ui';
2
+ import type { UiRenderContext } from '../render-context';
3
+
4
+ /*
5
+ * The binding of an input, or null for a read-only node. An input works once its own node closed and
6
+ * only through its binding, so the value never leaves the block until a Choice carries it.
7
+ */
8
+ export function bindingOf<Value>(node: UiViewNode<{ value?: Value }>, context: UiRenderContext): UiBinding<Value> | null {
9
+ const binding = node.bindings.value as UiBinding<Value> | undefined;
10
+ return binding === undefined || !node.complete || context.answer !== null ? null : binding;
11
+ }
12
+
13
+ /* An input whose node has not closed yet stands at 60% and takes no pointer. */
14
+ export const PENDING = 'pointer-events-none opacity-60';
@@ -1,8 +1,8 @@
1
1
  import clsx from 'clsx';
2
- import { createContext, useContext, useId } from 'react';
2
+ import { createContext, useContext, useId, useState, type ReactNode } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import type { UiProps } from '@adecore/intelligent-ui';
5
- import { PreviewCard, Tooltip } from '@adecore/ui';
5
+ import { Pill, PreviewCard, Tooltip, Wipe } from '@adecore/ui';
6
6
  import { formatNumber } from '@adecore/ui/format';
7
7
  import { useChatHost } from '../../../../host';
8
8
  import { CodeBlock } from '../../CodeBlock';
@@ -24,11 +24,39 @@ export function CodeBlockRenderer({ node }: UiRendererProps<UiProps<'CodeBlock'>
24
24
  );
25
25
  }
26
26
 
27
- /* Its own component, so the host's hook is only called for an image that names an attachment. */
28
- function AttachedImage({ scopeId, chatId, attachmentId, alt }: { scopeId: string; chatId: string; attachmentId: string; alt: string }) {
27
+ // Set by a Gallery, so the images inside it draw as cells of its grid.
28
+ const GalleryContext = createContext(false);
29
+
30
+ /*
31
+ * Its own component, so the host's hook is only called for an image that names an attachment. In a
32
+ * gallery a cell that cannot show its picture says what it was, since the square alone tells nothing.
33
+ */
34
+ function AttachedImage({
35
+ scopeId,
36
+ chatId,
37
+ attachmentId,
38
+ alt,
39
+ cell,
40
+ unnamed
41
+ }: {
42
+ scopeId: string;
43
+ chatId: string;
44
+ attachmentId: string;
45
+ alt: string;
46
+ cell: boolean;
47
+ unnamed: boolean;
48
+ }) {
29
49
  const host = useChatHost();
30
50
  const source = host.attachments.useUrl(scopeId, chatId, attachmentId);
31
- return <ImageThumb source={source} alt={alt} className="max-h-70 max-w-full object-contain" />;
51
+ if (!cell) {
52
+ return <ImageThumb source={source} alt={alt} className="max-h-70 max-w-full object-contain" />;
53
+ }
54
+ return (
55
+ <>
56
+ <ImageThumb source={source} alt={alt} aspect={1} />
57
+ {unnamed && source.failure !== null && <figcaption className="text-xs wrap-anywhere text-text-faint">{alt}</figcaption>}
58
+ </>
59
+ );
32
60
  }
33
61
 
34
62
  /*
@@ -37,21 +65,128 @@ function AttachedImage({ scopeId, chatId, attachmentId, alt }: { scopeId: string
37
65
  */
38
66
  export function ImageRenderer({ node, children, context }: UiRendererProps<UiProps<'Image'>>) {
39
67
  const { t } = useTranslation('agent-chat');
68
+ const cell = useContext(GalleryContext);
40
69
  const { attachment, alt } = node.props;
41
70
  const caption = uiNodeLabel(node);
42
71
  const name = alt ?? (caption === '' ? t('blocks.image.label') : caption);
43
72
  return (
44
- <figure className="flex flex-col items-start gap-1.5">
73
+ <figure className={cell ? 'flex min-w-0 flex-col gap-1' : 'flex flex-col items-start gap-1.5'}>
45
74
  {attachment === undefined ? (
46
- <ImageThumb source={{ url: null, failure: t('blocks.image.unavailable') }} alt={name} />
75
+ <ImageThumb source={{ url: null, failure: t('blocks.image.unavailable') }} alt={name} aspect={cell ? 1 : undefined} />
47
76
  ) : (
48
- <AttachedImage scopeId={context.scopeId} chatId={context.chatId} attachmentId={attachment} alt={name} />
77
+ <AttachedImage scopeId={context.scopeId} chatId={context.chatId} attachmentId={attachment} alt={name} cell={cell} unnamed={caption === ''} />
78
+ )}
79
+ {caption !== '' && <figcaption className={cell ? 'text-xs wrap-anywhere text-text-muted' : 'px-2 text-xs text-text-muted'}>{children}</figcaption>}
80
+ {cell && caption === '' && attachment === undefined && (
81
+ <figcaption className="text-xs wrap-anywhere text-text-faint">{alt ?? t('blocks.image.unavailable')}</figcaption>
49
82
  )}
50
- {caption !== '' && <figcaption className="px-2 text-xs text-text-muted">{children}</figcaption>}
51
83
  </figure>
52
84
  );
53
85
  }
54
86
 
87
+ /* Three columns, two in a narrow block; the container decides, not the window, since a chat can be any width. */
88
+ export function GalleryRenderer({ node, children }: UiRendererProps<UiProps<'Gallery'>>) {
89
+ const { t } = useTranslation('agent-chat');
90
+ return (
91
+ <GalleryContext value>
92
+ <div role="group" aria-label={t('blocks.gallery.label', { count: uiChildrenOf(node, 'Image').length })} className="@container px-2">
93
+ <div className="chat-ui-nodes grid grid-cols-2 gap-2 @min-[420px]:grid-cols-3">{children}</div>
94
+ </div>
95
+ </GalleryContext>
96
+ );
97
+ }
98
+
99
+ // The shape of the frame until the first picture reports its own.
100
+ const COMPARE_ASPECT = 4 / 3;
101
+
102
+ /* The tallest a comparison stands, in pixels: `max-h-96`. */
103
+ const COMPARE_MAX_HEIGHT = 384;
104
+
105
+ /*
106
+ * Two attachments in one frame, shaped like the first. The split is only this renderer's state. With one
107
+ * attachment gone the other stands alone with the reason; with both gone the thumbnail says why.
108
+ */
109
+ export function CompareRenderer({ node, children, context }: UiRendererProps<UiProps<'Compare'>>) {
110
+ const { t } = useTranslation('agent-chat');
111
+ const host = useChatHost();
112
+ const { before, after } = node.props;
113
+ const beforeLabel = node.props.beforeLabel || t('blocks.compare.before');
114
+ const afterLabel = node.props.afterLabel || t('blocks.compare.after');
115
+ const first = host.attachments.useUrl(context.scopeId, context.chatId, before);
116
+ const second = host.attachments.useUrl(context.scopeId, context.chatId, after);
117
+ const [split, setSplit] = useState(0.5);
118
+ const [aspect, setAspect] = useState(COMPARE_ASPECT);
119
+ const caption = uiNodeLabel(node);
120
+ // Each picture is named by its side and by what the whole comparison shows.
121
+ const describe = (side: string): string => (caption === '' ? side : `${side}: ${caption}`);
122
+ const loading = (source: typeof first) => source.url === null && source.failure === null;
123
+ const label = t('blocks.compare.label', { before: beforeLabel, after: afterLabel });
124
+ let body: ReactNode;
125
+ if (loading(first) || loading(second)) {
126
+ body = <ImageThumb source={{ url: null, failure: null }} alt={label} aspect={COMPARE_ASPECT} />;
127
+ } else if (first.url !== null && second.url !== null) {
128
+ body = (
129
+ // The frame keeps the picture's shape inside its tallest height: past it the width follows, so a portrait picture is not letterboxed.
130
+ <div
131
+ className="relative max-h-96 overflow-hidden rounded-lg border border-border bg-surface-sunken"
132
+ style={{ aspectRatio: aspect, width: `min(100%, ${COMPARE_MAX_HEIGHT * aspect}px)` }}
133
+ >
134
+ <Wipe
135
+ value={split}
136
+ onValueChange={setSplit}
137
+ label={label}
138
+ before={
139
+ <img
140
+ src={first.url}
141
+ alt={describe(beforeLabel)}
142
+ draggable={false}
143
+ className="size-full object-contain select-none"
144
+ onLoad={(event) => {
145
+ const { naturalWidth, naturalHeight } = event.currentTarget;
146
+ if (naturalWidth > 0 && naturalHeight > 0) {
147
+ setAspect(naturalWidth / naturalHeight);
148
+ }
149
+ }}
150
+ />
151
+ }
152
+ after={<img src={second.url} alt={describe(afterLabel)} draggable={false} className="size-full object-contain select-none" />}
153
+ />
154
+ <CompareChip side="left" label={beforeLabel} />
155
+ <CompareChip side="right" label={afterLabel} />
156
+ </div>
157
+ );
158
+ } else if (first.url === null && second.url === null) {
159
+ body = <ImageThumb source={first} alt={label} aspect={COMPARE_ASPECT} />;
160
+ } else {
161
+ const shown = first.url !== null ? { source: first, name: describe(beforeLabel) } : { source: second, name: describe(afterLabel) };
162
+ body = (
163
+ <>
164
+ <ImageThumb source={shown.source} alt={shown.name} className="max-h-70 max-w-full object-contain" />
165
+ <span className="px-2 text-xs text-text-faint">{t('blocks.compare.missing')}</span>
166
+ </>
167
+ );
168
+ }
169
+ return (
170
+ <figure className="flex flex-col items-start gap-1.5 px-2">
171
+ {body}
172
+ {caption !== '' && <figcaption className="text-xs text-text-muted">{children}</figcaption>}
173
+ </figure>
174
+ );
175
+ }
176
+
177
+ /* A chip on the picture gets a ground of its own, since a pill's alpha ground would vanish over an image. */
178
+ function CompareChip({ side, label }: { side: 'left' | 'right'; label: string }) {
179
+ return (
180
+ <span
181
+ className={clsx('pointer-events-none absolute top-2 z-20 max-w-2/5 truncate rounded-md bg-surface-raised', side === 'left' ? 'left-2' : 'right-2')}
182
+ >
183
+ <Pill shape="tag" size="sm" tone="muted">
184
+ {label}
185
+ </Pill>
186
+ </span>
187
+ );
188
+ }
189
+
55
190
  export function SourcesRenderer({ node, children }: UiRendererProps<UiProps<'Sources'>>) {
56
191
  const { t } = useTranslation('agent-chat');
57
192
  const headingId = useId();
@@ -1,11 +1,13 @@
1
- import { createContext, useContext, type MouseEvent, type ReactNode } from 'react';
1
+ import { createContext, useContext, useId, type MouseEvent, type ReactNode } from 'react';
2
2
  import clsx from 'clsx';
3
3
  import { useTranslation } from 'react-i18next';
4
- import type { UiBinding, UiProps, UiViewNode } from '@adecore/intelligent-ui';
5
- import { Button, Checkbox, Segmented, Slider, Switch, Tooltip } from '@adecore/ui';
6
- import { uiChildrenOf, uiNodeLabel, uiWithUnit } from '../node-text';
7
- import type { UiRenderContext, UiRendererProps } from '../render-context';
4
+ import type { UiProps } from '@adecore/intelligent-ui';
5
+ import { Button, Checkbox, Input, Segmented, Select, Slider, Switch, Tooltip } from '@adecore/ui';
6
+ import { formatNumber } from '@adecore/ui/format';
7
+ import { uiChildrenOf, uiNodeLabel, uiOwnLabel, uiWithUnit } from '../node-text';
8
+ import type { UiRendererProps } from '../render-context';
8
9
  import { useTruncated } from '../use-truncated';
10
+ import { bindingOf, PENDING } from './binding';
9
11
 
10
12
  type Scalar = UiProps<'Item'>['value'];
11
13
 
@@ -17,18 +19,6 @@ interface ChecklistState {
17
19
 
18
20
  const ChecklistContext = createContext<ChecklistState>({ values: [], enabled: false, toggle: () => undefined });
19
21
 
20
- /*
21
- * The binding of an input, or null for a read-only node. An input works once its own node closed and
22
- * only through its binding, so the value never leaves the block until a Choice carries it.
23
- */
24
- function bindingOf<Value>(node: UiViewNode<{ value: Value }>, context: UiRenderContext): UiBinding<Value> | null {
25
- const binding = node.bindings.value as UiBinding<Value> | undefined;
26
- return binding === undefined || !node.complete || context.answer !== null ? null : binding;
27
- }
28
-
29
- /* An input whose node has not closed yet stands at 60% and takes no pointer. */
30
- const PENDING = 'pointer-events-none opacity-60';
31
-
32
22
  /* The rows of a checklist as one named group. */
33
23
  function ChecklistGroup({ pending, children }: { pending: boolean; children: ReactNode }) {
34
24
  const { t } = useTranslation('agent-chat');
@@ -136,6 +126,78 @@ export function SegmentedRenderer({ node, context }: UiRendererProps<UiProps<'Se
136
126
  );
137
127
  }
138
128
 
129
+ /* The longest a text field takes when its agent names none; the schema allows up to 1024. */
130
+ const DEFAULT_MAX_LENGTH = 256;
131
+
132
+ /* The count under a field appears once the field is this full, and never nags before. */
133
+ const COUNT_FROM = 0.8;
134
+
135
+ /*
136
+ * A line of text: the label above the field, which stops taking characters at its limit. Nothing here binds
137
+ * a key or submits on Enter, so the value reaches the agent only through a Choice.
138
+ */
139
+ export function TextFieldRenderer({ node, children, context }: UiRendererProps<UiProps<'TextField'>>) {
140
+ const { t } = useTranslation('agent-chat');
141
+ const id = useId();
142
+ const binding = bindingOf(node, context);
143
+ const { maxLength = DEFAULT_MAX_LENGTH, placeholder } = node.props;
144
+ const value = binding?.value ?? node.props.value;
145
+ const countId = `${id}-count`;
146
+ const counting = value.length >= maxLength * COUNT_FROM;
147
+ return (
148
+ <div className={clsx('flex flex-col gap-1 px-2', !node.complete && PENDING)}>
149
+ <label htmlFor={id} className="text-sm text-text-muted">
150
+ {children}
151
+ </label>
152
+ <Input
153
+ id={id}
154
+ value={value}
155
+ size="sm"
156
+ maxLength={maxLength}
157
+ placeholder={placeholder}
158
+ disabled={binding === null}
159
+ aria-describedby={counting ? countId : undefined}
160
+ className="max-w-96"
161
+ onChange={(event) => binding?.onValueChange(event.target.value)}
162
+ />
163
+ {counting && (
164
+ <span id={countId} className="text-xs text-text-faint tabular-nums">
165
+ {t('blocks.textField.count', { used: formatNumber(value.length), max: formatNumber(maxLength) })}
166
+ </span>
167
+ )}
168
+ </div>
169
+ );
170
+ }
171
+
172
+ /*
173
+ * Left aligned, never the full width. Like Segmented, each Option is an item by its place, since a value may be any scalar.
174
+ * The text beside its options is its label, drawn above it and read as its name.
175
+ */
176
+ export function SelectRenderer({ node, context }: UiRendererProps<UiProps<'Select'>>) {
177
+ const { t } = useTranslation('agent-chat');
178
+ const binding = bindingOf(node, context);
179
+ const current = binding?.value ?? node.props.value;
180
+ const options = uiChildrenOf(node, 'Option').map((option, index) => ({ id: String(index), label: uiNodeLabel(option), value: option.props.value }));
181
+ const label = uiOwnLabel(node);
182
+ return (
183
+ <div className={clsx('flex flex-col items-start gap-1 px-2', !node.complete && PENDING)}>
184
+ {label !== '' && <span className="text-sm text-text-muted">{label}</span>}
185
+ <Select
186
+ value={options.find((option) => option.value === current)?.id ?? null}
187
+ items={options.map((option) => ({ value: option.id, label: option.label }))}
188
+ label={label === '' ? t('blocks.options') : label}
189
+ disabled={binding === null || options.length === 0}
190
+ onValueChange={(id) => {
191
+ const option = options[Number(id)];
192
+ if (option !== undefined) {
193
+ binding?.onValueChange(option.value);
194
+ }
195
+ }}
196
+ />
197
+ </div>
198
+ );
199
+ }
200
+
139
201
  /* Runs its local action once its own node closed; like an input, it closes once the block is answered. A label cut to the button's one line reads whole in its tooltip. */
140
202
  export function ButtonRenderer({ node, children, context }: UiRendererProps<UiProps<'Button'>>) {
141
203
  const enabled = node.onAction !== undefined && node.complete && context.answer === null && node.props.disabled !== true;
@@ -0,0 +1,105 @@
1
+ import { useEffect, useSyncExternalStore } from 'react';
2
+
3
+ /*
4
+ * A map holds a WebGL context for as long as it is drawn, and a browser keeps only so many of them before
5
+ * it drops the oldest without a word. This is the page's budget of them for maps, kept under what the
6
+ * terminals of `@adecore/terminal` take from the same pool.
7
+ */
8
+ export const MAX_LIVE_MAPS = 4;
9
+
10
+ export type MapSlotState = 'idle' | 'granted' | 'queued';
11
+
12
+ /*
13
+ * Who may draw a map right now. A map in view asks for a slot and gets one while there are fewer than
14
+ * `capacity` held; the others queue, in the order they asked, and are granted a slot as one is given back.
15
+ * A person can `take` one for a queued map: the longest-held map gives its slot up and queues first.
16
+ */
17
+ export class MapSlots {
18
+ private readonly capacity: number;
19
+ private readonly held: string[] = [];
20
+ private readonly queue: string[] = [];
21
+ private readonly listeners = new Set<() => void>();
22
+
23
+ constructor(capacity: number) {
24
+ this.capacity = capacity;
25
+ }
26
+
27
+ request(id: string): void {
28
+ if (this.held.includes(id) || this.queue.includes(id)) {
29
+ return;
30
+ }
31
+ (this.held.length < this.capacity ? this.held : this.queue).push(id);
32
+ this.changed();
33
+ }
34
+
35
+ release(id: string): void {
36
+ const wasHeld = this.held.includes(id);
37
+ const wasQueued = this.queue.includes(id);
38
+ if (!wasHeld && !wasQueued) {
39
+ return;
40
+ }
41
+ this.held.splice(0, this.held.length, ...this.held.filter((entry) => entry !== id));
42
+ this.queue.splice(0, this.queue.length, ...this.queue.filter((entry) => entry !== id));
43
+ while (this.held.length < this.capacity && this.queue.length > 0) {
44
+ this.held.push(this.queue.shift()!);
45
+ }
46
+ this.changed();
47
+ }
48
+
49
+ take(id: string): void {
50
+ if (this.held.includes(id)) {
51
+ return;
52
+ }
53
+ const at = this.queue.indexOf(id);
54
+ if (at >= 0) {
55
+ this.queue.splice(at, 1);
56
+ }
57
+ if (this.held.length >= this.capacity) {
58
+ this.queue.unshift(this.held.shift()!);
59
+ }
60
+ this.held.push(id);
61
+ this.changed();
62
+ }
63
+
64
+ stateOf(id: string): MapSlotState {
65
+ return this.held.includes(id) ? 'granted' : this.queue.includes(id) ? 'queued' : 'idle';
66
+ }
67
+
68
+ subscribe = (listener: () => void): (() => void) => {
69
+ this.listeners.add(listener);
70
+ return () => {
71
+ this.listeners.delete(listener);
72
+ };
73
+ };
74
+
75
+ private changed(): void {
76
+ for (const listener of [...this.listeners]) {
77
+ listener();
78
+ }
79
+ }
80
+ }
81
+
82
+ let page: MapSlots | null = null;
83
+
84
+ /* The one budget of the page, made on first use. */
85
+ export function pageMapSlots(): MapSlots {
86
+ page ??= new MapSlots(MAX_LIVE_MAPS);
87
+ return page;
88
+ }
89
+
90
+ /* A map's place in the budget while it `wanted`, which is while it is in view; gone from it otherwise and on unmount. */
91
+ export function useMapSlot(id: string, wanted: boolean, slots: MapSlots = pageMapSlots()): { state: MapSlotState; take(): void } {
92
+ const state = useSyncExternalStore(
93
+ slots.subscribe,
94
+ () => slots.stateOf(id),
95
+ () => 'idle' as const
96
+ );
97
+ useEffect(() => {
98
+ if (!wanted) {
99
+ return;
100
+ }
101
+ slots.request(id);
102
+ return () => slots.release(id);
103
+ }, [slots, id, wanted]);
104
+ return { state, take: () => slots.take(id) };
105
+ }